From 2ae4a3e7d98707b125b1eeb549ea3db34a7c55cd Mon Sep 17 00:00:00 2001 From: Sjoerd van der Berg Date: Fri, 22 Aug 2003 09:21:41 +0000 Subject: [PATCH] Change switches a bit so compiler can create jump tables Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@1196 --- src/cpu/instructions.h | 102 ++++++++++++++++++++--------------------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/src/cpu/instructions.h b/src/cpu/instructions.h index 0ea3f7a4..7f0d731b 100644 --- a/src/cpu/instructions.h +++ b/src/cpu/instructions.h @@ -725,32 +725,32 @@ #define GRP2B(blah) \ { \ - GetRM; \ + GetRM;Bitu which=(rm>>3)&7; \ if (rm >= 0xc0) { \ GetEArb; \ Bit8u val=blah & 0x1f; \ - switch (rm&0x38) { \ + switch (which) { \ case 0x00:ROLB(*earb,val,LoadRb,SaveRb);break; \ - case 0x08:RORB(*earb,val,LoadRb,SaveRb);break; \ - case 0x10:RCLB(*earb,val,LoadRb,SaveRb);break; \ - case 0x18:RCRB(*earb,val,LoadRb,SaveRb);break; \ - case 0x20:/* SHL and SAL are the same */ \ - case 0x30:SHLB(*earb,val,LoadRb,SaveRb);break; \ - case 0x28:SHRB(*earb,val,LoadRb,SaveRb);break; \ - case 0x38:SARB(*earb,val,LoadRb,SaveRb);break; \ + case 0x01:RORB(*earb,val,LoadRb,SaveRb);break; \ + case 0x02:RCLB(*earb,val,LoadRb,SaveRb);break; \ + case 0x03:RCRB(*earb,val,LoadRb,SaveRb);break; \ + case 0x04:/* SHL and SAL are the same */ \ + case 0x06:SHLB(*earb,val,LoadRb,SaveRb);break; \ + case 0x05:SHRB(*earb,val,LoadRb,SaveRb);break; \ + case 0x07:SARB(*earb,val,LoadRb,SaveRb);break; \ } \ } else { \ GetEAa; \ Bit8u val=blah & 0x1f; \ - switch (rm & 0x38) { \ + switch (which) { \ case 0x00:ROLB(eaa,val,LoadMb,SaveMb);break; \ - case 0x08:RORB(eaa,val,LoadMb,SaveMb);break; \ - case 0x10:RCLB(eaa,val,LoadMb,SaveMb);break; \ - case 0x18:RCRB(eaa,val,LoadMb,SaveMb);break; \ - case 0x20:/* SHL and SAL are the same */ \ - case 0x30:SHLB(eaa,val,LoadMb,SaveMb);break; \ - case 0x28:SHRB(eaa,val,LoadMb,SaveMb);break; \ - case 0x38:SARB(eaa,val,LoadMb,SaveMb);break; \ + case 0x01:RORB(eaa,val,LoadMb,SaveMb);break; \ + case 0x02:RCLB(eaa,val,LoadMb,SaveMb);break; \ + case 0x03:RCRB(eaa,val,LoadMb,SaveMb);break; \ + case 0x04:/* SHL and SAL are the same */ \ + case 0x06:SHLB(eaa,val,LoadMb,SaveMb);break; \ + case 0x05:SHRB(eaa,val,LoadMb,SaveMb);break; \ + case 0x07:SARB(eaa,val,LoadMb,SaveMb);break; \ } \ } \ } @@ -759,32 +759,32 @@ #define GRP2W(blah) \ { \ - GetRM; \ + GetRM;Bitu which=(rm>>3)&7; \ if (rm >= 0xc0) { \ GetEArw; \ Bit8u val=blah & 0x1f; \ - switch (rm&0x38) { \ + switch (which) { \ case 0x00:ROLW(*earw,val,LoadRw,SaveRw);break; \ - case 0x08:RORW(*earw,val,LoadRw,SaveRw);break; \ - case 0x10:RCLW(*earw,val,LoadRw,SaveRw);break; \ - case 0x18:RCRW(*earw,val,LoadRw,SaveRw);break; \ - case 0x20:/* SHL and SAL are the same */ \ - case 0x30:SHLW(*earw,val,LoadRw,SaveRw);break; \ - case 0x28:SHRW(*earw,val,LoadRw,SaveRw);break; \ - case 0x38:SARW(*earw,val,LoadRw,SaveRw);break; \ + case 0x01:RORW(*earw,val,LoadRw,SaveRw);break; \ + case 0x02:RCLW(*earw,val,LoadRw,SaveRw);break; \ + case 0x03:RCRW(*earw,val,LoadRw,SaveRw);break; \ + case 0x04:/* SHL and SAL are the same */ \ + case 0x06:SHLW(*earw,val,LoadRw,SaveRw);break; \ + case 0x05:SHRW(*earw,val,LoadRw,SaveRw);break; \ + case 0x07:SARW(*earw,val,LoadRw,SaveRw);break; \ } \ } else { \ GetEAa; \ Bit8u val=blah & 0x1f; \ - switch (rm & 0x38) { \ + switch (which) { \ case 0x00:ROLW(eaa,val,LoadMw,SaveMw);break; \ - case 0x08:RORW(eaa,val,LoadMw,SaveMw);break; \ - case 0x10:RCLW(eaa,val,LoadMw,SaveMw);break; \ - case 0x18:RCRW(eaa,val,LoadMw,SaveMw);break; \ - case 0x20:/* SHL and SAL are the same */ \ - case 0x30:SHLW(eaa,val,LoadMw,SaveMw);break; \ - case 0x28:SHRW(eaa,val,LoadMw,SaveMw);break; \ - case 0x38:SARW(eaa,val,LoadMw,SaveMw);break; \ + case 0x01:RORW(eaa,val,LoadMw,SaveMw);break; \ + case 0x02:RCLW(eaa,val,LoadMw,SaveMw);break; \ + case 0x03:RCRW(eaa,val,LoadMw,SaveMw);break; \ + case 0x04:/* SHL and SAL are the same */ \ + case 0x06:SHLW(eaa,val,LoadMw,SaveMw);break; \ + case 0x05:SHRW(eaa,val,LoadMw,SaveMw);break; \ + case 0x07:SARW(eaa,val,LoadMw,SaveMw);break; \ } \ } \ } @@ -792,32 +792,32 @@ #define GRP2D(blah) \ { \ - GetRM; \ + GetRM;Bitu which=(rm>>3)&7; \ if (rm >= 0xc0) { \ GetEArd; \ Bit8u val=blah & 0x1f; \ - switch (rm&0x38) { \ + switch (which) { \ case 0x00:ROLD(*eard,val,LoadRd,SaveRd);break; \ - case 0x08:RORD(*eard,val,LoadRd,SaveRd);break; \ - case 0x10:RCLD(*eard,val,LoadRd,SaveRd);break; \ - case 0x18:RCRD(*eard,val,LoadRd,SaveRd);break; \ - case 0x20:/* SHL and SAL are the same */ \ - case 0x30:SHLD(*eard,val,LoadRd,SaveRd);break; \ - case 0x28:SHRD(*eard,val,LoadRd,SaveRd);break; \ - case 0x38:SARD(*eard,val,LoadRd,SaveRd);break; \ + case 0x01:RORD(*eard,val,LoadRd,SaveRd);break; \ + case 0x02:RCLD(*eard,val,LoadRd,SaveRd);break; \ + case 0x03:RCRD(*eard,val,LoadRd,SaveRd);break; \ + case 0x04:/* SHL and SAL are the same */ \ + case 0x06:SHLD(*eard,val,LoadRd,SaveRd);break; \ + case 0x05:SHRD(*eard,val,LoadRd,SaveRd);break; \ + case 0x07:SARD(*eard,val,LoadRd,SaveRd);break; \ } \ } else { \ GetEAa; \ Bit8u val=blah & 0x1f; \ - switch (rm & 0x38) { \ + switch (which) { \ case 0x00:ROLD(eaa,val,LoadMd,SaveMd);break; \ - case 0x08:RORD(eaa,val,LoadMd,SaveMd);break; \ - case 0x10:RCLD(eaa,val,LoadMd,SaveMd);break; \ - case 0x18:RCRD(eaa,val,LoadMd,SaveMd);break; \ - case 0x20:/* SHL and SAL are the same */ \ - case 0x30:SHLD(eaa,val,LoadMd,SaveMd);break; \ - case 0x28:SHRD(eaa,val,LoadMd,SaveMd);break; \ - case 0x38:SARD(eaa,val,LoadMd,SaveMd);break; \ + case 0x01:RORD(eaa,val,LoadMd,SaveMd);break; \ + case 0x02:RCLD(eaa,val,LoadMd,SaveMd);break; \ + case 0x03:RCRD(eaa,val,LoadMd,SaveMd);break; \ + case 0x04:/* SHL and SAL are the same */ \ + case 0x06:SHLD(eaa,val,LoadMd,SaveMd);break; \ + case 0x05:SHRD(eaa,val,LoadMd,SaveMd);break; \ + case 0x07:SARD(eaa,val,LoadMd,SaveMd);break; \ } \ } \ }