summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorforsyth <forsyth@vitanuova.com>2010-05-03 15:47:59 +0100
committerforsyth <forsyth@vitanuova.com>2010-05-03 15:47:59 +0100
commit773d7fd206e9623edfb12cd182dc5a115ec86950 (patch)
tree9f1953e19a531cca9d2f0be969f902eddda1dca1
parentf8af978a60a0a00813e7a57f93d9a5ba4df44069 (diff)
20100503-1547
-rw-r--r--CHANGES4
-rw-r--r--include/version.h2
-rw-r--r--lib/acid/amd64123
-rw-r--r--man/1/sh-std2
-rw-r--r--utils/libmach/8db.c1749
-rw-r--r--utils/libmach/kdb.c340
-rw-r--r--utils/libmach/obj.c26
-rw-r--r--utils/libmach/setmach.c23
8 files changed, 1258 insertions, 1011 deletions
diff --git a/CHANGES b/CHANGES
index b70dad4b..f09da9e6 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,7 @@
+20100503
+ updated libmach/8db.c to avoid [] initialisers
+20100501
+ update libmach to compensate for MS compiler
20100426
updated libmach
updated compiler suites (continuing)
diff --git a/include/version.h b/include/version.h
index de1819a1..69e18443 100644
--- a/include/version.h
+++ b/include/version.h
@@ -1 +1 @@
-#define VERSION "Fourth Edition (20100427)"
+#define VERSION "Fourth Edition (20100503)"
diff --git a/lib/acid/amd64 b/lib/acid/amd64
new file mode 100644
index 00000000..c08edd1a
--- /dev/null
+++ b/lib/acid/amd64
@@ -0,0 +1,123 @@
+// amd64
+
+defn acidinit()
+{
+ bplist = {};
+ bpfmt = 'b';
+
+ srcpath = {
+ "./",
+ "/sys/src/libc/port/",
+ "/sys/src/libc/9sys/",
+ "/sys/src/libc/amd64/"
+ };
+
+ srcfiles = {}; // list of loaded files
+ srctext = {}; // the text of the files
+}
+
+defn gpr()
+{
+ print("AX ", *AX, "\n");
+ print("BX ", *BX, "\n");
+ print("CX ", *CX, "\n");
+ print("DX ", *DX, "\n");
+ print("DI ", *DI, "\n");
+ print("SI ", *SI, "\n");
+ print("BP ", *BP, "\n");
+ print("R8 ", *R8, "\n");
+ print("R9 ", *R9, "\n");
+ print("R10 ", *R10, "\n");
+ print("R11 ", *R11, "\n");
+ print("R12 ", *R12, "\n");
+ print("R13 ", *R13, "\n");
+ print("R14 ", *R14, "\n");
+ print("R15 ", *R15, "\n");
+}
+
+defn spr()
+{
+ print("DS ", *DS, " ES ", *ES, " FS ", *FS, " GS ", *GS, "\n");
+ print("TYPE ", *TYPE, "\n");
+ print("ERROR ", *ERROR, "\n");
+ print("PC ", *PC, "\n");
+ print("CS ", *CS, "\n");
+ print("FLAGS ", *FLAGS, "\n");
+ print("SP ", *SP, "\n");
+ print("SS ", *SS, "\n");
+}
+
+defn x87r()
+{
+ print("FCW ", *FCW, " FSW ", *FSW, " FTW ", *FTW, " FOP ", *FOP, "\n");
+ print("RIP ", *RIP, " RDP ", *RDP, "\n");
+ print("M0 ", *M0, "\n");
+ print("M1 ", *M1, "\n");
+ print("M2 ", *M2, "\n");
+ print("M3 ", *M3, "\n");
+ print("M4 ", *M4, "\n");
+ print("M5 ", *M5, "\n");
+ print("M6 ", *M6, "\n");
+ print("M7 ", *M7, "\n");
+}
+
+defn xmmr()
+{
+ print("MXCSR ", *MXCSR, " MXCSRMASK ", *MXCSRMASK, "\n");
+ print("X0 ", *X0, "\n");
+ print("X1 ", *X1, "\n");
+ print("X2 ", *X2, "\n");
+ print("X3 ", *X3, "\n");
+ print("X4 ", *X4, "\n");
+ print("X5 ", *X5, "\n");
+ print("X6 ", *X6, "\n");
+ print("X7 ", *X7, "\n");
+ print("X8 ", *X8, "\n");
+ print("X9 ", *X9, "\n");
+ print("X10 ", *X10, "\n");
+ print("X11 ", *X11, "\n");
+ print("X12 ", *X12, "\n");
+ print("X13 ", *X13, "\n");
+ print("X14 ", *X14, "\n");
+ print("X15 ", *X15, "\n");
+}
+
+defn fpr()
+{
+ xmmr();
+}
+
+defn regs()
+{
+ gpr();
+ spr();
+}
+
+defn pstop(pid)
+{
+ local l;
+ local pc;
+
+ pc = *PC;
+
+ print(pid,": ", reason(*TRAP), "\t");
+ print(fmt(pc, 'a'), "\t", fmt(pc, 'i'), "\n");
+
+ if notes then {
+ if notes[0] != "sys: breakpoint" then {
+ print("Notes pending:\n");
+ l = notes;
+ while l do {
+ print("\t", head l, "\n");
+ l = tail l;
+ }
+ }
+ }
+}
+
+defn stk()
+{
+ _stk(*PC, *SP, 0, 0);
+}
+
+print("/sys/lib/acid/amd64");
diff --git a/man/1/sh-std b/man/1/sh-std
index bfaa0873..0689d5e8 100644
--- a/man/1/sh-std
+++ b/man/1/sh-std
@@ -1,6 +1,6 @@
.TH SH-STD 1
.SH NAME
-std, if, while, ~, no, !, apply, getlines, status, pctl, fn, and, or, raise, rescue, hd, tl, index, split, join, pid, parse, pctl, env \- standard shell builtins module.
+std, if, while, ~, no, !, apply, getlines, status, pctl, fn, and, or, raise, rescue, hd, tl, index, split, join, pid, parse, pipe, env \- standard shell builtins module.
.SH SYNOPSIS
.B load std
diff --git a/utils/libmach/8db.c b/utils/libmach/8db.c
index 7177c815..8cdcf9d2 100644
--- a/utils/libmach/8db.c
+++ b/utils/libmach/8db.c
@@ -19,34 +19,50 @@ static int i386instlen(Map*, uvlong);
static char STARTSYM[] = "_main";
static char PROFSYM[] = "_mainp";
static char FRAMENAME[] = ".frame";
-static char *excname[] =
+static char *excname[65] =
{
-[0] "divide error",
-[1] "debug exception",
-[4] "overflow",
-[5] "bounds check",
-[6] "invalid opcode",
-[7] "math coprocessor emulation",
-[8] "double fault",
-[9] "math coprocessor overrun",
-[10] "invalid TSS",
-[11] "segment not present",
-[12] "stack exception",
-[13] "general protection violation",
-[14] "page fault",
-[16] "math coprocessor error",
-[17] "alignment check",
-[18] "machine check",
-[19] "floating-point exception",
-[24] "clock",
-[25] "keyboard",
-[27] "modem status",
-[28] "serial line status",
-[30] "floppy disk",
-[36] "mouse",
-[37] "math coprocessor",
-[38] "hard disk",
-[64] "system call",
+/*[0]*/ "divide error",
+/*[1]*/ "debug exception",
+/*[2]*/ nil,
+/*[3]*/ nil,
+/*[4]*/ "overflow",
+/*[5]*/ "bounds check",
+/*[6]*/ "invalid opcode",
+/*[7]*/ "math coprocessor emulation",
+/*[8]*/ "double fault",
+/*[9]*/ "math coprocessor overrun",
+/*[10]*/ "invalid TSS",
+/*[11]*/ "segment not present",
+/*[12]*/ "stack exception",
+/*[13]*/ "general protection violation",
+/*[14]*/ "page fault",
+/*[15]*/ nil,
+/*[16]*/ "math coprocessor error",
+/*[17]*/ "alignment check",
+/*[18]*/ "machine check",
+/*[19]*/ "floating-point exception",
+/*[20]*/ nil,
+/*[21]*/ nil,
+/*[22]*/ nil,
+/*[23]*/ nil,
+/*[24]*/ "clock",
+/*[25]*/ "keyboard",
+/*[26]*/ nil,
+/*[27]*/ "modem status",
+/*[28]*/ "serial line status",
+/*[29]*/ nil,
+/*[30]*/ "floppy disk",
+/*[31]*/ nil,
+/*[32]*/ nil,
+/*[33]*/ nil,
+/*[34]*/ nil,
+/*[35]*/ nil,
+/*[36]*/ "mouse",
+/*[37]*/ "math coprocessor",
+/*[38]*/ "hard disk",
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,/* 39-54 */
+ 0,0,0,0,0,0,0,0,0, /* 55-63 */
+/*[64]*/ "system call",
};
Machdata i386mach =
@@ -243,6 +259,7 @@ enum{
typedef struct Optable Optable;
struct Optable
{
+ int x;
char operand[2];
void *proto; /* actually either (char*) or (Optable*) */
};
@@ -282,28 +299,28 @@ enum {
static Optable optab0F00[8]=
{
-[0x00] 0,0, "MOVW LDT,%e",
-[0x01] 0,0, "MOVW TR,%e",
-[0x02] 0,0, "MOVW %e,LDT",
-[0x03] 0,0, "MOVW %e,TR",
-[0x04] 0,0, "VERR %e",
-[0x05] 0,0, "VERW %e",
+0x00, 0,0, "MOVW LDT,%e",
+0x01, 0,0, "MOVW TR,%e",
+0x02, 0,0, "MOVW %e,LDT",
+0x03, 0,0, "MOVW %e,TR",
+0x04, 0,0, "VERR %e",
+0x05, 0,0, "VERW %e",
};
static Optable optab0F01[8]=
{
-[0x00] 0,0, "MOVL GDTR,%e",
-[0x01] 0,0, "MOVL IDTR,%e",
-[0x02] 0,0, "MOVL %e,GDTR",
-[0x03] 0,0, "MOVL %e,IDTR",
-[0x04] 0,0, "MOVW MSW,%e", /* word */
-[0x06] 0,0, "MOVW %e,MSW", /* word */
-[0x07] 0,0, "INVLPG %e", /* or SWAPGS */
+0x00, 0,0, "MOVL GDTR,%e",
+0x01, 0,0, "MOVL IDTR,%e",
+0x02, 0,0, "MOVL %e,GDTR",
+0x03, 0,0, "MOVL %e,IDTR",
+0x04, 0,0, "MOVW MSW,%e", /* word */
+0x06, 0,0, "MOVW %e,MSW", /* word */
+0x07, 0,0, "INVLPG %e", /* or SWAPGS */
};
static Optable optab0F01F8[1]=
{
-[0x00] 0,0, "SWAPGS",
+0x00, 0,0, "SWAPGS",
};
/* 0F71 */
@@ -312,13 +329,13 @@ static Optable optab0F01F8[1]=
static Optable optab0FAE[8]=
{
-[0x00] 0,0, "FXSAVE %e",
-[0x01] 0,0, "FXRSTOR %e",
-[0x02] 0,0, "LDMXCSR %e",
-[0x03] 0,0, "STMXCSR %e",
-[0x05] 0,0, "LFENCE",
-[0x06] 0,0, "MFENCE",
-[0x07] 0,0, "SFENCE",
+0x00, 0,0, "FXSAVE %e",
+0x01, 0,0, "FXRSTOR %e",
+0x02, 0,0, "LDMXCSR %e",
+0x03, 0,0, "STMXCSR %e",
+0x05, 0,0, "LFENCE",
+0x06, 0,0, "MFENCE",
+0x07, 0,0, "SFENCE",
};
/* 0F18 */
@@ -326,455 +343,455 @@ static Optable optab0FAE[8]=
static Optable optab0FBA[8]=
{
-[0x04] Ib,0, "BT%S %i,%e",
-[0x05] Ib,0, "BTS%S %i,%e",
-[0x06] Ib,0, "BTR%S %i,%e",
-[0x07] Ib,0, "BTC%S %i,%e",
+0x04, Ib,0, "BT%S %i,%e",
+0x05, Ib,0, "BTS%S %i,%e",
+0x06, Ib,0, "BTR%S %i,%e",
+0x07, Ib,0, "BTC%S %i,%e",
};
static Optable optab0F0F[256]=
{
-[0x0c] 0,0, "PI2FW %m,%M",
-[0x0d] 0,0, "PI2L %m,%M",
-[0x1c] 0,0, "PF2IW %m,%M",
-[0x1d] 0,0, "PF2IL %m,%M",
-[0x8a] 0,0, "PFNACC %m,%M",
-[0x8e] 0,0, "PFPNACC %m,%M",
-[0x90] 0,0, "PFCMPGE %m,%M",
-[0x94] 0,0, "PFMIN %m,%M",
-[0x96] 0,0, "PFRCP %m,%M",
-[0x97] 0,0, "PFRSQRT %m,%M",
-[0x9a] 0,0, "PFSUB %m,%M",
-[0x9e] 0,0, "PFADD %m,%M",
-[0xa0] 0,0, "PFCMPGT %m,%M",
-[0xa4] 0,0, "PFMAX %m,%M",
-[0xa6] 0,0, "PFRCPIT1 %m,%M",
-[0xa7] 0,0, "PFRSQIT1 %m,%M",
-[0xaa] 0,0, "PFSUBR %m,%M",
-[0xae] 0,0, "PFACC %m,%M",
-[0xb0] 0,0, "PFCMPEQ %m,%M",
-[0xb4] 0,0, "PFMUL %m,%M",
-[0xb6] 0,0, "PFRCPI2T %m,%M",
-[0xb7] 0,0, "PMULHRW %m,%M",
-[0xbb] 0,0, "PSWAPL %m,%M",
+0x0c, 0,0, "PI2FW %m,%M",
+0x0d, 0,0, "PI2L %m,%M",
+0x1c, 0,0, "PF2IW %m,%M",
+0x1d, 0,0, "PF2IL %m,%M",
+0x8a, 0,0, "PFNACC %m,%M",
+0x8e, 0,0, "PFPNACC %m,%M",
+0x90, 0,0, "PFCMPGE %m,%M",
+0x94, 0,0, "PFMIN %m,%M",
+0x96, 0,0, "PFRCP %m,%M",
+0x97, 0,0, "PFRSQRT %m,%M",
+0x9a, 0,0, "PFSUB %m,%M",
+0x9e, 0,0, "PFADD %m,%M",
+0xa0, 0,0, "PFCMPGT %m,%M",
+0xa4, 0,0, "PFMAX %m,%M",
+0xa6, 0,0, "PFRCPIT1 %m,%M",
+0xa7, 0,0, "PFRSQIT1 %m,%M",
+0xaa, 0,0, "PFSUBR %m,%M",
+0xae, 0,0, "PFACC %m,%M",
+0xb0, 0,0, "PFCMPEQ %m,%M",
+0xb4, 0,0, "PFMUL %m,%M",
+0xb6, 0,0, "PFRCPI2T %m,%M",
+0xb7, 0,0, "PMULHRW %m,%M",
+0xbb, 0,0, "PSWAPL %m,%M",
};
static Optable optab0FC7[8]=
{
-[0x01] 0,0, "CMPXCHG8B %e",
+0x01, 0,0, "CMPXCHG8B %e",
};
static Optable optab660F71[8]=
{
-[0x02] Ib,0, "PSRLW %i,%X",
-[0x04] Ib,0, "PSRAW %i,%X",
-[0x06] Ib,0, "PSLLW %i,%X",
+0x02, Ib,0, "PSRLW %i,%X",
+0x04, Ib,0, "PSRAW %i,%X",
+0x06, Ib,0, "PSLLW %i,%X",
};
static Optable optab660F72[8]=
{
-[0x02] Ib,0, "PSRLL %i,%X",
-[0x04] Ib,0, "PSRAL %i,%X",
-[0x06] Ib,0, "PSLLL %i,%X",
+0x02, Ib,0, "PSRLL %i,%X",
+0x04, Ib,0, "PSRAL %i,%X",
+0x06, Ib,0, "PSLLL %i,%X",
};
static Optable optab660F73[8]=
{
-[0x02] Ib,0, "PSRLQ %i,%X",
-[0x03] Ib,0, "PSRLO %i,%X",
-[0x06] Ib,0, "PSLLQ %i,%X",
-[0x07] Ib,0, "PSLLO %i,%X",
+0x02, Ib,0, "PSRLQ %i,%X",
+0x03, Ib,0, "PSRLO %i,%X",
+0x06, Ib,0, "PSLLQ %i,%X",
+0x07, Ib,0, "PSLLO %i,%X",
};
static Optable optab660F[256]=
{
-[0x2B] RM,0, "MOVNTPD %x,%e",
-[0x2E] RM,0, "UCOMISD %x,%X",
-[0x2F] RM,0, "COMISD %x,%X",
-[0x5A] RM,0, "CVTPD2PS %x,%X",
-[0x5B] RM,0, "CVTPS2PL %x,%X",
-[0x6A] RM,0, "PUNPCKHLQ %x,%X",
-[0x6B] RM,0, "PACKSSLW %x,%X",
-[0x6C] RM,0, "PUNPCKLQDQ %x,%X",
-[0x6D] RM,0, "PUNPCKHQDQ %x,%X",
-[0x6E] RM,0, "MOV%S %e,%X",
-[0x6F] RM,0, "MOVO %x,%X", /* MOVDQA */
-[0x70] RM,Ib, "PSHUFL %i,%x,%X",
-[0x71] RMOP,0, optab660F71,
-[0x72] RMOP,0, optab660F72,
-[0x73] RMOP,0, optab660F73,
-[0x7E] RM,0, "MOV%S %X,%e",
-[0x7F] RM,0, "MOVO %X,%x",
-[0xC4] RM,Ib, "PINSRW %i,%e,%X",
-[0xC5] RMR,Ib, "PEXTRW %i,%X,%e",
-[0xD4] RM,0, "PADDQ %x,%X",
-[0xD5] RM,0, "PMULLW %x,%X",
-[0xD6] RM,0, "MOVQ %X,%x",
-[0xE6] RM,0, "CVTTPD2PL %x,%X",
-[0xE7] RM,0, "MOVNTO %X,%e",
-[0xF7] RM,0, "MASKMOVOU %x,%X",
+0x2B, RM,0, "MOVNTPD %x,%e",
+0x2E, RM,0, "UCOMISD %x,%X",
+0x2F, RM,0, "COMISD %x,%X",
+0x5A, RM,0, "CVTPD2PS %x,%X",
+0x5B, RM,0, "CVTPS2PL %x,%X",
+0x6A, RM,0, "PUNPCKHLQ %x,%X",
+0x6B, RM,0, "PACKSSLW %x,%X",
+0x6C, RM,0, "PUNPCKLQDQ %x,%X",
+0x6D, RM,0, "PUNPCKHQDQ %x,%X",
+0x6E, RM,0, "MOV%S %e,%X",
+0x6F, RM,0, "MOVO %x,%X", /* MOVDQA */
+0x70, RM,Ib, "PSHUFL %i,%x,%X",
+0x71, RMOP,0, optab660F71,
+0x72, RMOP,0, optab660F72,
+0x73, RMOP,0, optab660F73,
+0x7E, RM,0, "MOV%S %X,%e",
+0x7F, RM,0, "MOVO %X,%x",
+0xC4, RM,Ib, "PINSRW %i,%e,%X",
+0xC5, RMR,Ib, "PEXTRW %i,%X,%e",
+0xD4, RM,0, "PADDQ %x,%X",
+0xD5, RM,0, "PMULLW %x,%X",
+0xD6, RM,0, "MOVQ %X,%x",
+0xE6, RM,0, "CVTTPD2PL %x,%X",
+0xE7, RM,0, "MOVNTO %X,%e",
+0xF7, RM,0, "MASKMOVOU %x,%X",
};
static Optable optabF20F[256]=
{
-[0x10] RM,0, "MOVSD %x,%X",
-[0x11] RM,0, "MOVSD %X,%x",
-[0x2A] RM,0, "CVTS%S2SD %e,%X",
-[0x2C] RM,0, "CVTTSD2S%S %x,%r",
-[0x2D] RM,0, "CVTSD2S%S %x,%r",
-[0x5A] RM,0, "CVTSD2SS %x,%X",
-[0x6F] RM,0, "MOVOU %x,%X",
-[0x70] RM,Ib, "PSHUFLW %i,%x,%X",
-[0x7F] RM,0, "MOVOU %X,%x",
-[0xD6] RM,0, "MOVQOZX %M,%X",
-[0xE6] RM,0, "CVTPD2PL %x,%X",
+0x10, RM,0, "MOVSD %x,%X",
+0x11, RM,0, "MOVSD %X,%x",
+0x2A, RM,0, "CVTS%S2SD %e,%X",
+0x2C, RM,0, "CVTTSD2S%S %x,%r",
+0x2D, RM,0, "CVTSD2S%S %x,%r",
+0x5A, RM,0, "CVTSD2SS %x,%X",
+0x6F, RM,0, "MOVOU %x,%X",
+0x70, RM,Ib, "PSHUFLW %i,%x,%X",
+0x7F, RM,0, "MOVOU %X,%x",
+0xD6, RM,0, "MOVQOZX %M,%X",
+0xE6, RM,0, "CVTPD2PL %x,%X",
};
static Optable optabF30F[256]=
{
-[0x10] RM,0, "MOVSS %x,%X",
-[0x11] RM,0, "MOVSS %X,%x",
-[0x2A] RM,0, "CVTS%S2SS %e,%X",
-[0x2C] RM,0, "CVTTSS2S%S %x,%r",
-[0x2D] RM,0, "CVTSS2S%S %x,%r",
-[0x5A] RM,0, "CVTSS2SD %x,%X",
-[0x5B] RM,0, "CVTTPS2PL %x,%X",
-[0x6F] RM,0, "MOVOU %x,%X",
-[0x70] RM,Ib, "PSHUFHW %i,%x,%X",
-[0x7E] RM,0, "MOVQOZX %x,%X",
-[0x7F] RM,0, "MOVOU %X,%x",
-[0xD6] RM,0, "MOVQOZX %m*,%X",
-[0xE6] RM,0, "CVTPL2PD %x,%X",
+0x10, RM,0, "MOVSS %x,%X",
+0x11, RM,0, "MOVSS %X,%x",
+0x2A, RM,0, "CVTS%S2SS %e,%X",
+0x2C, RM,0, "CVTTSS2S%S %x,%r",
+0x2D, RM,0, "CVTSS2S%S %x,%r",
+0x5A, RM,0, "CVTSS2SD %x,%X",
+0x5B, RM,0, "CVTTPS2PL %x,%X",
+0x6F, RM,0, "MOVOU %x,%X",
+0x70, RM,Ib, "PSHUFHW %i,%x,%X",
+0x7E, RM,0, "MOVQOZX %x,%X",
+0x7F, RM,0, "MOVOU %X,%x",
+0xD6, RM,0, "MOVQOZX %m*,%X",
+0xE6, RM,0, "CVTPL2PD %x,%X",
};
static Optable optab0F[256]=
{
-[0x00] RMOP,0, optab0F00,
-[0x01] RMOP,0, optab0F01,
-[0x02] RM,0, "LAR %e,%r",
-[0x03] RM,0, "LSL %e,%r",
-[0x05] 0,0, "SYSCALL",
-[0x06] 0,0, "CLTS",
-[0x07] 0,0, "SYSRET",
-[0x08] 0,0, "INVD",
-[0x09] 0,0, "WBINVD",
-[0x0B] 0,0, "UD2",
-[0x0F] RM,AUX, optab0F0F, /* 3DNow! */
-[0x10] RM,0, "MOVU%s %x,%X",
-[0x11] RM,0, "MOVU%s %X,%x",
-[0x12] RM,0, "MOV[H]L%s %x,%X", /* TO DO: H if source is XMM */
-[0x13] RM,0, "MOVL%s %X,%e",
-[0x14] RM,0, "UNPCKL%s %x,%X",
-[0x15] RM,0, "UNPCKH%s %x,%X",
-[0x16] RM,0, "MOV[L]H%s %x,%X", /* TO DO: L if source is XMM */
-[0x17] RM,0, "MOVH%s %X,%x",
-[0x20] RMR,0, "MOVL %C,%e",
-[0x21] RMR,0, "MOVL %D,%e",
-[0x22] RMR,0, "MOVL %e,%C",
-[0x23] RMR,0, "MOVL %e,%D",
-[0x24] RMR,0, "MOVL %T,%e",
-[0x26] RMR,0, "MOVL %e,%T",
-[0x28] RM,0, "MOVA%s %x,%X",
-[0x29] RM,0, "MOVA%s %X,%x",
-[0x2A] RM,0, "CVTPL2%s %m*,%X",
-[0x2B] RM,0, "MOVNT%s %X,%e",
-[0x2C] RM,0, "CVTT%s2PL %x,%M",
-[0x2D] RM,0, "CVT%s2PL %x,%M",
-[0x2E] RM,0, "UCOMISS %x,%X",
-[0x2F] RM,0, "COMISS %x,%X",
-[0x30] 0,0, "WRMSR",
-[0x31] 0,0, "RDTSC",
-[0x32] 0,0, "RDMSR",
-[0x33] 0,0, "RDPMC",
-[0x42] RM,0, "CMOVC %e,%r", /* CF */
-[0x43] RM,0, "CMOVNC %e,%r", /* ¬ CF */
-[0x44] RM,0, "CMOVZ %e,%r", /* ZF */
-[0x45] RM,0, "CMOVNZ %e,%r", /* ¬ ZF */
-[0x46] RM,0, "CMOVBE %e,%r", /* CF ∨ ZF */
-[0x47] RM,0, "CMOVA %e,%r", /* ¬CF ∧ ¬ZF */
-[0x48] RM,0, "CMOVS %e,%r", /* SF */
-[0x49] RM,0, "CMOVNS %e,%r", /* ¬ SF */
-[0x4A] RM,0, "CMOVP %e,%r", /* PF */
-[0x4B] RM,0, "CMOVNP %e,%r", /* ¬ PF */
-[0x4C] RM,0, "CMOVLT %e,%r", /* LT ≡ OF ≠ SF */
-[0x4D] RM,0, "CMOVGE %e,%r", /* GE ≡ ZF ∨ SF */
-[0x4E] RM,0, "CMOVLE %e,%r", /* LE ≡ ZF ∨ LT */
-[0x4F] RM,0, "CMOVGT %e,%r", /* GT ≡ ¬ZF ∧ GE */
-[0x50] RM,0, "MOVMSK%s %X,%r", /* TO DO: check */
-[0x51] RM,0, "SQRT%s %x,%X",
-[0x52] RM,0, "RSQRT%s %x,%X",
-[0x53] RM,0, "RCP%s %x,%X",
-[0x54] RM,0, "AND%s %x,%X",
-[0x55] RM,0, "ANDN%s %x,%X",
-[0x56] RM,0, "OR%s %x,%X", /* TO DO: S/D */
-[0x57] RM,0, "XOR%s %x,%X", /* S/D */
-[0x58] RM,0, "ADD%s %x,%X", /* S/P S/D */
-[0x59] RM,0, "MUL%s %x,%X",
-[0x5A] RM,0, "CVTPS2PD %x,%X",
-[0x5B] RM,0, "CVTPL2PS %x,%X",
-[0x5C] RM,0, "SUB%s %x,%X",
-[0x5D] RM,0, "MIN%s %x,%X",
-[0x5E] RM,0, "DIV%s %x,%X", /* TO DO: S/P S/D */
-[0x5F] RM,0, "MAX%s %x,%X",
-[0x60] RM,0, "PUNPCKLBW %m,%M",
-[0x61] RM,0, "PUNPCKLWL %m,%M",
-[0x62] RM,0, "PUNPCKLLQ %m,%M",
-[0x63] RM,0, "PACKSSWB %m,%M",
-[0x64] RM,0, "PCMPGTB %m,%M",
-[0x65] RM,0, "PCMPGTW %m,%M",
-[0x66] RM,0, "PCMPGTL %m,%M",
-[0x67] RM,0, "PACKUSWB %m,%M",
-[0x68] RM,0, "PUNPCKHBW %m,%M",
-[0x69] RM,0, "PUNPCKHWL %m,%M",
-[0x6A] RM,0, "PUNPCKHLQ %m,%M",
-[0x6B] RM,0, "PACKSSLW %m,%M",
-[0x6E] RM,0, "MOV%S %e,%M",
-[0x6F] RM,0, "MOVQ %m,%M",
-[0x70] RM,Ib, "PSHUFW %i,%m,%M",
-[0x74] RM,0, "PCMPEQB %m,%M",
-[0x75] RM,0, "PCMPEQW %m,%M",
-[0x76] RM,0, "PCMPEQL %m,%M",
-[0x7E] RM,0, "MOV%S %M,%e",
-[0x7F] RM,0, "MOVQ %M,%m",
-[0xAE] RMOP,0, optab0FAE,
-[0xAA] 0,0, "RSM",
-[0xB0] RM,0, "CMPXCHGB %r,%e",
-[0xB1] RM,0, "CMPXCHG%S %r,%e",
-[0xC0] RMB,0, "XADDB %r,%e",
-[0xC1] RM,0, "XADD%S %r,%e",
-[0xC2] RM,Ib, "CMP%s %i,%x,%X",
-[0xC3] RM,0, "MOVNTI%S %r,%e",
-[0xC6] RM,Ib, "SHUF%s %i,%x,%X",
-[0xC8] 0,0, "BSWAP AX",
-[0xC9] 0,0, "BSWAP CX",
-[0xCA] 0,0, "BSWAP DX",
-[0xCB] 0,0, "BSWAP BX",
-[0xCC] 0,0, "BSWAP SP",
-[0xCD] 0,0, "BSWAP BP",
-[0xCE] 0,0, "BSWAP SI",
-[0xCF] 0,0, "BSWAP DI",
-[0xD1] RM,0, "PSRLW %m,%M",
-[0xD2] RM,0, "PSRLL %m,%M",
-[0xD3] RM,0, "PSRLQ %m,%M",
-[0xD5] RM,0, "PMULLW %m,%M",
-[0xD6] RM,0, "MOVQOZX %m*,%X",
-[0xD7] RM,0, "PMOVMSKB %m,%r",
-[0xD8] RM,0, "PSUBUSB %m,%M",
-[0xD9] RM,0, "PSUBUSW %m,%M",
-[0xDA] RM,0, "PMINUB %m,%M",
-[0xDB] RM,0, "PAND %m,%M",
-[0xDC] RM,0, "PADDUSB %m,%M",
-[0xDD] RM,0, "PADDUSW %m,%M",
-[0xDE] RM,0, "PMAXUB %m,%M",
-[0xDF] RM,0, "PANDN %m,%M",
-[0xE0] RM,0, "PAVGB %m,%M",
-[0xE1] RM,0, "PSRAW %m,%M",
-[0xE2] RM,0, "PSRAL %m,%M",
-[0xE3] RM,0, "PAVGW %m,%M",
-[0xE4] RM,0, "PMULHUW %m,%M",
-[0xE5] RM,0, "PMULHW %m,%M",
-[0xE7] RM,0, "MOVNTQ %M,%e",
-[0xE8] RM,0, "PSUBSB %m,%M",
-[0xE9] RM,0, "PSUBSW %m,%M",
-[0xEA] RM,0, "PMINSW %m,%M",
-[0xEB] RM,0, "POR %m,%M",
-[0xEC] RM,0, "PADDSB %m,%M",
-[0xED] RM,0, "PADDSW %m,%M",
-[0xEE] RM,0, "PMAXSW %m,%M",
-[0xEF] RM,0, "PXOR %m,%M",
-[0xF1] RM,0, "PSLLW %m,%M",
-[0xF2] RM,0, "PSLLL %m,%M",
-[0xF3] RM,0, "PSLLQ %m,%M",
-[0xF4] RM,0, "PMULULQ %m,%M",
-[0xF5] RM,0, "PMADDWL %m,%M",
-[0xF6] RM,0, "PSADBW %m,%M",
-[0xF7] RMR,0, "MASKMOVQ %m,%M",
-[0xF8] RM,0, "PSUBB %m,%M",
-[0xF9] RM,0, "PSUBW %m,%M",
-[0xFA] RM,0, "PSUBL %m,%M",
-[0xFC] RM,0, "PADDB %m,%M",
-[0xFD] RM,0, "PADDW %m,%M",
-[0xFE] RM,0, "PADDL %m,%M",
-
-[0x80] Iwds,0, "JOS %p",
-[0x81] Iwds,0, "JOC %p",
-[0x82] Iwds,0, "JCS %p",
-[0x83] Iwds,0, "JCC %p",
-[0x84] Iwds,0, "JEQ %p",
-[0x85] Iwds,0, "JNE %p",
-[0x86] Iwds,0, "JLS %p",
-[0x87] Iwds,0, "JHI %p",
-[0x88] Iwds,0, "JMI %p",
-[0x89] Iwds,0, "JPL %p",
-[0x8a] Iwds,0, "JPS %p",
-[0x8b] Iwds,0, "JPC %p",
-[0x8c] Iwds,0, "JLT %p",
-[0x8d] Iwds,0, "JGE %p",
-[0x8e] Iwds,0, "JLE %p",
-[0x8f] Iwds,0, "JGT %p",
-[0x90] RMB,0, "SETOS %e",
-[0x91] RMB,0, "SETOC %e",
-[0x92] RMB,0, "SETCS %e",
-[0x93] RMB,0, "SETCC %e",
-[0x94] RMB,0, "SETEQ %e",
-[0x95] RMB,0, "SETNE %e",
-[0x96] RMB,0, "SETLS %e",
-[0x97] RMB,0, "SETHI %e",
-[0x98] RMB,0, "SETMI %e",
-[0x99] RMB,0, "SETPL %e",
-[0x9a] RMB,0, "SETPS %e",
-[0x9b] RMB,0, "SETPC %e",
-[0x9c] RMB,0, "SETLT %e",
-[0x9d] RMB,0, "SETGE %e",
-[0x9e] RMB,0, "SETLE %e",
-[0x9f] RMB,0, "SETGT %e",
-[0xa0] 0,0, "PUSHL FS",
-[0xa1] 0,0, "POPL FS",
-[0xa2] 0,0, "CPUID",
-[0xa3] RM,0, "BT%S %r,%e",
-[0xa4] RM,Ib, "SHLD%S %r,%i,%e",
-[0xa5] RM,0, "SHLD%S %r,CL,%e",
-[0xa8] 0,0, "PUSHL GS",
-[0xa9] 0,0, "POPL GS",
-[0xab] RM,0, "BTS%S %r,%e",
-[0xac] RM,Ib, "SHRD%S %r,%i,%e",
-[0xad] RM,0, "SHRD%S %r,CL,%e",
-[0xaf] RM,0, "IMUL%S %e,%r",
-[0xb2] RMM,0, "LSS %e,%r",
-[0xb3] RM,0, "BTR%S %r,%e",
-[0xb4] RMM,0, "LFS %e,%r",
-[0xb5] RMM,0, "LGS %e,%r",
-[0xb6] RMB,0, "MOVBZX %e,%R",
-[0xb7] RM,0, "MOVWZX %e,%R",
-[0xba] RMOP,0, optab0FBA,
-[0xbb] RM,0, "BTC%S %e,%r",
-[0xbc] RM,0, "BSF%S %e,%r",
-[0xbd] RM,0, "BSR%S %e,%r",
-[0xbe] RMB,0, "MOVBSX %e,%R",
-[0xbf] RM,0, "MOVWSX %e,%R",
-[0xc7] RMOP,0, optab0FC7,
+0x00, RMOP,0, optab0F00,
+0x01, RMOP,0, optab0F01,
+0x02, RM,0, "LAR %e,%r",
+0x03, RM,0, "LSL %e,%r",
+0x05, 0,0, "SYSCALL",
+0x06, 0,0, "CLTS",
+0x07, 0,0, "SYSRET",
+0x08, 0,0, "INVD",
+0x09, 0,0, "WBINVD",
+0x0B, 0,0, "UD2",
+0x0F, RM,AUX, optab0F0F, /* 3DNow! */
+0x10, RM,0, "MOVU%s %x,%X",
+0x11, RM,0, "MOVU%s %X,%x",
+0x12, RM,0, "MOV[H]L%s %x,%X", /* TO DO: H if source is XMM */
+0x13, RM,0, "MOVL%s %X,%e",
+0x14, RM,0, "UNPCKL%s %x,%X",
+0x15, RM,0, "UNPCKH%s %x,%X",
+0x16, RM,0, "MOV[L]H%s %x,%X", /* TO DO: L if source is XMM */
+0x17, RM,0, "MOVH%s %X,%x",
+0x20, RMR,0, "MOVL %C,%e",
+0x21, RMR,0, "MOVL %D,%e",
+0x22, RMR,0, "MOVL %e,%C",
+0x23, RMR,0, "MOVL %e,%D",
+0x24, RMR,0, "MOVL %T,%e",
+0x26, RMR,0, "MOVL %e,%T",
+0x28, RM,0, "MOVA%s %x,%X",
+0x29, RM,0, "MOVA%s %X,%x",
+0x2A, RM,0, "CVTPL2%s %m*,%X",
+0x2B, RM,0, "MOVNT%s %X,%e",
+0x2C, RM,0, "CVTT%s2PL %x,%M",
+0x2D, RM,0, "CVT%s2PL %x,%M",
+0x2E, RM,0, "UCOMISS %x,%X",
+0x2F, RM,0, "COMISS %x,%X",
+0x30, 0,0, "WRMSR",
+0x31, 0,0, "RDTSC",
+0x32, 0,0, "RDMSR",
+0x33, 0,0, "RDPMC",
+0x42, RM,0, "CMOVC %e,%r", /* CF */
+0x43, RM,0, "CMOVNC %e,%r", /* ¬ CF */
+0x44, RM,0, "CMOVZ %e,%r", /* ZF */
+0x45, RM,0, "CMOVNZ %e,%r", /* ¬ ZF */
+0x46, RM,0, "CMOVBE %e,%r", /* CF ∨ ZF */
+0x47, RM,0, "CMOVA %e,%r", /* ¬CF ∧ ¬ZF */
+0x48, RM,0, "CMOVS %e,%r", /* SF */
+0x49, RM,0, "CMOVNS %e,%r", /* ¬ SF */
+0x4A, RM,0, "CMOVP %e,%r", /* PF */
+0x4B, RM,0, "CMOVNP %e,%r", /* ¬ PF */
+0x4C, RM,0, "CMOVLT %e,%r", /* LT ≡ OF ≠ SF */
+0x4D, RM,0, "CMOVGE %e,%r", /* GE ≡ ZF ∨ SF */
+0x4E, RM,0, "CMOVLE %e,%r", /* LE ≡ ZF ∨ LT */
+0x4F, RM,0, "CMOVGT %e,%r", /* GT ≡ ¬ZF ∧ GE */
+0x50, RM,0, "MOVMSK%s %X,%r", /* TO DO: check */
+0x51, RM,0, "SQRT%s %x,%X",
+0x52, RM,0, "RSQRT%s %x,%X",
+0x53, RM,0, "RCP%s %x,%X",
+0x54, RM,0, "AND%s %x,%X",
+0x55, RM,0, "ANDN%s %x,%X",
+0x56, RM,0, "OR%s %x,%X", /* TO DO: S/D */
+0x57, RM,0, "XOR%s %x,%X", /* S/D */
+0x58, RM,0, "ADD%s %x,%X", /* S/P S/D */
+0x59, RM,0, "MUL%s %x,%X",
+0x5A, RM,0, "CVTPS2PD %x,%X",
+0x5B, RM,0, "CVTPL2PS %x,%X",
+0x5C, RM,0, "SUB%s %x,%X",
+0x5D, RM,0, "MIN%s %x,%X",
+0x5E, RM,0, "DIV%s %x,%X", /* TO DO: S/P S/D */
+0x5F, RM,0, "MAX%s %x,%X",
+0x60, RM,0, "PUNPCKLBW %m,%M",
+0x61, RM,0, "PUNPCKLWL %m,%M",
+0x62, RM,0, "PUNPCKLLQ %m,%M",
+0x63, RM,0, "PACKSSWB %m,%M",
+0x64, RM,0, "PCMPGTB %m,%M",
+0x65, RM,0, "PCMPGTW %m,%M",
+0x66, RM,0, "PCMPGTL %m,%M",
+0x67, RM,0, "PACKUSWB %m,%M",
+0x68, RM,0, "PUNPCKHBW %m,%M",
+0x69, RM,0, "PUNPCKHWL %m,%M",
+0x6A, RM,0, "PUNPCKHLQ %m,%M",
+0x6B, RM,0, "PACKSSLW %m,%M",
+0x6E, RM,0, "MOV%S %e,%M",
+0x6F, RM,0, "MOVQ %m,%M",
+0x70, RM,Ib, "PSHUFW %i,%m,%M",
+0x74, RM,0, "PCMPEQB %m,%M",
+0x75, RM,0, "PCMPEQW %m,%M",
+0x76, RM,0, "PCMPEQL %m,%M",
+0x7E, RM,0, "MOV%S %M,%e",
+0x7F, RM,0, "MOVQ %M,%m",
+0xAE, RMOP,0, optab0FAE,
+0xAA, 0,0, "RSM",
+0xB0, RM,0, "CMPXCHGB %r,%e",
+0xB1, RM,0, "CMPXCHG%S %r,%e",
+0xC0, RMB,0, "XADDB %r,%e",
+0xC1, RM,0, "XADD%S %r,%e",
+0xC2, RM,Ib, "CMP%s %i,%x,%X",
+0xC3, RM,0, "MOVNTI%S %r,%e",
+0xC6, RM,Ib, "SHUF%s %i,%x,%X",
+0xC8, 0,0, "BSWAP AX",
+0xC9, 0,0, "BSWAP CX",
+0xCA, 0,0, "BSWAP DX",
+0xCB, 0,0, "BSWAP BX",
+0xCC, 0,0, "BSWAP SP",
+0xCD, 0,0, "BSWAP BP",
+0xCE, 0,0, "BSWAP SI",
+0xCF, 0,0, "BSWAP DI",
+0xD1, RM,0, "PSRLW %m,%M",
+0xD2, RM,0, "PSRLL %m,%M",
+0xD3, RM,0, "PSRLQ %m,%M",
+0xD5, RM,0, "PMULLW %m,%M",
+0xD6, RM,0, "MOVQOZX %m*,%X",
+0xD7, RM,0, "PMOVMSKB %m,%r",
+0xD8, RM,0, "PSUBUSB %m,%M",
+0xD9, RM,0, "PSUBUSW %m,%M",
+0xDA, RM,0, "PMINUB %m,%M",
+0xDB, RM,0, "PAND %m,%M",
+0xDC, RM,0, "PADDUSB %m,%M",
+0xDD, RM,0, "PADDUSW %m,%M",
+0xDE, RM,0, "PMAXUB %m,%M",
+0xDF, RM,0, "PANDN %m,%M",
+0xE0, RM,0, "PAVGB %m,%M",
+0xE1, RM,0, "PSRAW %m,%M",
+0xE2, RM,0, "PSRAL %m,%M",
+0xE3, RM,0, "PAVGW %m,%M",
+0xE4, RM,0, "PMULHUW %m,%M",
+0xE5, RM,0, "PMULHW %m,%M",
+0xE7, RM,0, "MOVNTQ %M,%e",
+0xE8, RM,0, "PSUBSB %m,%M",
+0xE9, RM,0, "PSUBSW %m,%M",
+0xEA, RM,0, "PMINSW %m,%M",
+0xEB, RM,0, "POR %m,%M",
+0xEC, RM,0, "PADDSB %m,%M",
+0xED, RM,0, "PADDSW %m,%M",
+0xEE, RM,0, "PMAXSW %m,%M",
+0xEF, RM,0, "PXOR %m,%M",
+0xF1, RM,0, "PSLLW %m,%M",
+0xF2, RM,0, "PSLLL %m,%M",
+0xF3, RM,0, "PSLLQ %m,%M",
+0xF4, RM,0, "PMULULQ %m,%M",
+0xF5, RM,0, "PMADDWL %m,%M",
+0xF6, RM,0, "PSADBW %m,%M",
+0xF7, RMR,0, "MASKMOVQ %m,%M",
+0xF8, RM,0, "PSUBB %m,%M",
+0xF9, RM,0, "PSUBW %m,%M",
+0xFA, RM,0, "PSUBL %m,%M",
+0xFC, RM,0, "PADDB %m,%M",
+0xFD, RM,0, "PADDW %m,%M",
+0xFE, RM,0, "PADDL %m,%M",
+
+0x80, Iwds,0, "JOS %p",
+0x81, Iwds,0, "JOC %p",
+0x82, Iwds,0, "JCS %p",
+0x83, Iwds,0, "JCC %p",
+0x84, Iwds,0, "JEQ %p",
+0x85, Iwds,0, "JNE %p",
+0x86, Iwds,0, "JLS %p",
+0x87, Iwds,0, "JHI %p",
+0x88, Iwds,0, "JMI %p",
+0x89, Iwds,0, "JPL %p",
+0x8a, Iwds,0, "JPS %p",
+0x8b, Iwds,0, "JPC %p",
+0x8c, Iwds,0, "JLT %p",
+0x8d, Iwds,0, "JGE %p",
+0x8e, Iwds,0, "JLE %p",
+0x8f, Iwds,0, "JGT %p",
+0x90, RMB,0, "SETOS %e",
+0x91, RMB,0, "SETOC %e",
+0x92, RMB,0, "SETCS %e",
+0x93, RMB,0, "SETCC %e",
+0x94, RMB,0, "SETEQ %e",
+0x95, RMB,0, "SETNE %e",
+0x96, RMB,0, "SETLS %e",
+0x97, RMB,0, "SETHI %e",
+0x98, RMB,0, "SETMI %e",
+0x99, RMB,0, "SETPL %e",
+0x9a, RMB,0, "SETPS %e",
+0x9b, RMB,0, "SETPC %e",
+0x9c, RMB,0, "SETLT %e",
+0x9d, RMB,0, "SETGE %e",
+0x9e, RMB,0, "SETLE %e",
+0x9f, RMB,0, "SETGT %e",
+0xa0, 0,0, "PUSHL FS",
+0xa1, 0,0, "POPL FS",
+0xa2, 0,0, "CPUID",
+0xa3, RM,0, "BT%S %r,%e",
+0xa4, RM,Ib, "SHLD%S %r,%i,%e",
+0xa5, RM,0, "SHLD%S %r,CL,%e",
+0xa8, 0,0, "PUSHL GS",
+0xa9, 0,0, "POPL GS",
+0xab, RM,0, "BTS%S %r,%e",
+0xac, RM,Ib, "SHRD%S %r,%i,%e",
+0xad, RM,0, "SHRD%S %r,CL,%e",
+0xaf, RM,0, "IMUL%S %e,%r",
+0xb2, RMM,0, "LSS %e,%r",
+0xb3, RM,0, "BTR%S %r,%e",
+0xb4, RMM,0, "LFS %e,%r",
+0xb5, RMM,0, "LGS %e,%r",
+0xb6, RMB,0, "MOVBZX %e,%R",
+0xb7, RM,0, "MOVWZX %e,%R",
+0xba, RMOP,0, optab0FBA,
+0xbb, RM,0, "BTC%S %e,%r",
+0xbc, RM,0, "BSF%S %e,%r",
+0xbd, RM,0, "BSR%S %e,%r",
+0xbe, RMB,0, "MOVBSX %e,%R",
+0xbf, RM,0, "MOVWSX %e,%R",
+0xc7, RMOP,0, optab0FC7,
};
static Optable optab80[8]=
{
-[0x00] Ib,0, "ADDB %i,%e",
-[0x01] Ib,0, "ORB %i,%e",
-[0x02] Ib,0, "ADCB %i,%e",
-[0x03] Ib,0, "SBBB %i,%e",
-[0x04] Ib,0, "ANDB %i,%e",
-[0x05] Ib,0, "SUBB %i,%e",
-[0x06] Ib,0, "XORB %i,%e",
-[0x07] Ib,0, "CMPB %e,%i",
+0x00, Ib,0, "ADDB %i,%e",
+0x01, Ib,0, "ORB %i,%e",
+0x02, Ib,0, "ADCB %i,%e",
+0x03, Ib,0, "SBBB %i,%e",
+0x04, Ib,0, "ANDB %i,%e",
+0x05, Ib,0, "SUBB %i,%e",
+0x06, Ib,0, "XORB %i,%e",
+0x07, Ib,0, "CMPB %e,%i",
};
static Optable optab81[8]=
{
-[0x00] Iwd,0, "ADD%S %i,%e",
-[0x01] Iwd,0, "OR%S %i,%e",
-[0x02] Iwd,0, "ADC%S %i,%e",
-[0x03] Iwd,0, "SBB%S %i,%e",
-[0x04] Iwd,0, "AND%S %i,%e",
-[0x05] Iwd,0, "SUB%S %i,%e",
-[0x06] Iwd,0, "XOR%S %i,%e",
-[0x07] Iwd,0, "CMP%S %e,%i",
+0x00, Iwd,0, "ADD%S %i,%e",
+0x01, Iwd,0, "OR%S %i,%e",
+0x02, Iwd,0, "ADC%S %i,%e",
+0x03, Iwd,0, "SBB%S %i,%e",
+0x04, Iwd,0, "AND%S %i,%e",
+0x05, Iwd,0, "SUB%S %i,%e",
+0x06, Iwd,0, "XOR%S %i,%e",
+0x07, Iwd,0, "CMP%S %e,%i",
};
static Optable optab83[8]=
{
-[0x00] Ibs,0, "ADD%S %i,%e",
-[0x01] Ibs,0, "OR%S %i,%e",
-[0x02] Ibs,0, "ADC%S %i,%e",
-[0x03] Ibs,0, "SBB%S %i,%e",
-[0x04] Ibs,0, "AND%S %i,%e",
-[0x05] Ibs,0, "SUB%S %i,%e",
-[0x06] Ibs,0, "XOR%S %i,%e",
-[0x07] Ibs,0, "CMP%S %e,%i",
+0x00, Ibs,0, "ADD%S %i,%e",
+0x01, Ibs,0, "OR%S %i,%e",
+0x02, Ibs,0, "ADC%S %i,%e",
+0x03, Ibs,0, "SBB%S %i,%e",
+0x04, Ibs,0, "AND%S %i,%e",
+0x05, Ibs,0, "SUB%S %i,%e",
+0x06, Ibs,0, "XOR%S %i,%e",
+0x07, Ibs,0, "CMP%S %e,%i",
};
static Optable optabC0[8] =
{
-[0x00] Ib,0, "ROLB %i,%e",
-[0x01] Ib,0, "RORB %i,%e",
-[0x02] Ib,0, "RCLB %i,%e",
-[0x03] Ib,0, "RCRB %i,%e",
-[0x04] Ib,0, "SHLB %i,%e",
-[0x05] Ib,0, "SHRB %i,%e",
-[0x07] Ib,0, "SARB %i,%e",
+0x00, Ib,0, "ROLB %i,%e",
+0x01, Ib,0, "RORB %i,%e",
+0x02, Ib,0, "RCLB %i,%e",
+0x03, Ib,0, "RCRB %i,%e",
+0x04, Ib,0, "SHLB %i,%e",
+0x05, Ib,0, "SHRB %i,%e",
+0x07, Ib,0, "SARB %i,%e",
};
static Optable optabC1[8] =
{
-[0x00] Ib,0, "ROL%S %i,%e",
-[0x01] Ib,0, "ROR%S %i,%e",
-[0x02] Ib,0, "RCL%S %i,%e",
-[0x03] Ib,0, "RCR%S %i,%e",
-[0x04] Ib,0, "SHL%S %i,%e",
-[0x05] Ib,0, "SHR%S %i,%e",
-[0x07] Ib,0, "SAR%S %i,%e",
+0x00, Ib,0, "ROL%S %i,%e",
+0x01, Ib,0, "ROR%S %i,%e",
+0x02, Ib,0, "RCL%S %i,%e",
+0x03, Ib,0, "RCR%S %i,%e",
+0x04, Ib,0, "SHL%S %i,%e",
+0x05, Ib,0, "SHR%S %i,%e",
+0x07, Ib,0, "SAR%S %i,%e",
};
static Optable optabD0[8] =
{
-[0x00] 0,0, "ROLB %e",
-[0x01] 0,0, "RORB %e",
-[0x02] 0,0, "RCLB %e",
-[0x03] 0,0, "RCRB %e",
-[0x04] 0,0, "SHLB %e",
-[0x05] 0,0, "SHRB %e",
-[0x07] 0,0, "SARB %e",
+0x00, 0,0, "ROLB %e",
+0x01, 0,0, "RORB %e",
+0x02, 0,0, "RCLB %e",
+0x03, 0,0, "RCRB %e",
+0x04, 0,0, "SHLB %e",
+0x05, 0,0, "SHRB %e",
+0x07, 0,0, "SARB %e",
};
static Optable optabD1[8] =
{
-[0x00] 0,0, "ROL%S %e",
-[0x01] 0,0, "ROR%S %e",
-[0x02] 0,0, "RCL%S %e",
-[0x03] 0,0, "RCR%S %e",
-[0x04] 0,0, "SHL%S %e",
-[0x05] 0,0, "SHR%S %e",
-[0x07] 0,0, "SAR%S %e",
+0x00, 0,0, "ROL%S %e",
+0x01, 0,0, "ROR%S %e",
+0x02, 0,0, "RCL%S %e",
+0x03, 0,0, "RCR%S %e",
+0x04, 0,0, "SHL%S %e",
+0x05, 0,0, "SHR%S %e",
+0x07, 0,0, "SAR%S %e",
};
static Optable optabD2[8] =
{
-[0x00] 0,0, "ROLB CL,%e",
-[0x01] 0,0, "RORB CL,%e",
-[0x02] 0,0, "RCLB CL,%e",
-[0x03] 0,0, "RCRB CL,%e",
-[0x04] 0,0, "SHLB CL,%e",
-[0x05] 0,0, "SHRB CL,%e",
-[0x07] 0,0, "SARB CL,%e",
+0x00, 0,0, "ROLB CL,%e",
+0x01, 0,0, "RORB CL,%e",
+0x02, 0,0, "RCLB CL,%e",
+0x03, 0,0, "RCRB CL,%e",
+0x04, 0,0, "SHLB CL,%e",
+0x05, 0,0, "SHRB CL,%e",
+0x07, 0,0, "SARB CL,%e",
};
static Optable optabD3[8] =
{
-[0x00] 0,0, "ROL%S CL,%e",
-[0x01] 0,0, "ROR%S CL,%e",
-[0x02] 0,0, "RCL%S CL,%e",
-[0x03] 0,0, "RCR%S CL,%e",
-[0x04] 0,0, "SHL%S CL,%e",
-[0x05] 0,0, "SHR%S CL,%e",
-[0x07] 0,0, "SAR%S CL,%e",
+0x00, 0,0, "ROL%S CL,%e",
+0x01, 0,0, "ROR%S CL,%e",
+0x02, 0,0, "RCL%S CL,%e",
+0x03, 0,0, "RCR%S CL,%e",
+0x04, 0,0, "SHL%S CL,%e",
+0x05, 0,0, "SHR%S CL,%e",
+0x07, 0,0, "SAR%S CL,%e",
};
static Optable optabD8[8+8] =
{
-[0x00] 0,0, "FADDF %e,F0",
-[0x01] 0,0, "FMULF %e,F0",
-[0x02] 0,0, "FCOMF %e,F0",
-[0x03] 0,0, "FCOMFP %e,F0",
-[0x04] 0,0, "FSUBF %e,F0",
-[0x05] 0,0, "FSUBRF %e,F0",
-[0x06] 0,0, "FDIVF %e,F0",
-[0x07] 0,0, "FDIVRF %e,F0",
-[0x08] 0,0, "FADDD %f,F0",
-[0x09] 0,0, "FMULD %f,F0",
-[0x0a] 0,0, "FCOMD %f,F0",
-[0x0b] 0,0, "FCOMPD %f,F0",
-[0x0c] 0,0, "FSUBD %f,F0",
-[0x0d] 0,0, "FSUBRD %f,F0",
-[0x0e] 0,0, "FDIVD %f,F0",
-[0x0f] 0,0, "FDIVRD %f,F0",
+0x00, 0,0, "FADDF %e,F0",
+0x01, 0,0, "FMULF %e,F0",
+0x02, 0,0, "FCOMF %e,F0",
+0x03, 0,0, "FCOMFP %e,F0",
+0x04, 0,0, "FSUBF %e,F0",
+0x05, 0,0, "FSUBRF %e,F0",
+0x06, 0,0, "FDIVF %e,F0",
+0x07, 0,0, "FDIVRF %e,F0",
+0x08, 0,0, "FADDD %f,F0",
+0x09, 0,0, "FMULD %f,F0",
+0x0a, 0,0, "FCOMD %f,F0",
+0x0b, 0,0, "FCOMPD %f,F0",
+0x0c, 0,0, "FSUBD %f,F0",
+0x0d, 0,0, "FSUBRD %f,F0",
+0x0e, 0,0, "FDIVD %f,F0",
+0x0f, 0,0, "FDIVRD %f,F0",
};
/*
* optabD9 and optabDB use the following encoding:
@@ -786,444 +803,517 @@ static Optable optabD8[8+8] =
*/
static Optable optabD9[64+8] =
{
-[0x00] 0,0, "FMOVF %e,F0",
-[0x02] 0,0, "FMOVF F0,%e",
-[0x03] 0,0, "FMOVFP F0,%e",
-[0x04] 0,0, "FLDENV%S %e",
-[0x05] 0,0, "FLDCW %e",
-[0x06] 0,0, "FSTENV%S %e",
-[0x07] 0,0, "FSTCW %e",
-[0x08] 0,0, "FMOVD F0,F0", /* Mod R/M = 11xx xxxx*/
-[0x09] 0,0, "FMOVD F1,F0",
-[0x0a] 0,0, "FMOVD F2,F0",
-[0x0b] 0,0, "FMOVD F3,F0",
-[0x0c] 0,0, "FMOVD F4,F0",
-[0x0d] 0,0, "FMOVD F5,F0",
-[0x0e] 0,0, "FMOVD F6,F0",
-[0x0f] 0,0, "FMOVD F7,F0",
-[0x10] 0,0, "FXCHD F0,F0",
-[0x11] 0,0, "FXCHD F1,F0",
-[0x12] 0,0, "FXCHD F2,F0",
-[0x13] 0,0, "FXCHD F3,F0",
-[0x14] 0,0, "FXCHD F4,F0",
-[0x15] 0,0, "FXCHD F5,F0",
-[0x16] 0,0, "FXCHD F6,F0",
-[0x17] 0,0, "FXCHD F7,F0",
-[0x18] 0,0, "FNOP",
-[0x28] 0,0, "FCHS",
-[0x29] 0,0, "FABS",
-[0x2c] 0,0, "FTST",
-[0x2d] 0,0, "FXAM",
-[0x30] 0,0, "FLD1",
-[0x31] 0,0, "FLDL2T",
-[0x32] 0,0, "FLDL2E",
-[0x33] 0,0, "FLDPI",
-[0x34] 0,0, "FLDLG2",
-[0x35] 0,0, "FLDLN2",
-[0x36] 0,0, "FLDZ",
-[0x38] 0,0, "F2XM1",
-[0x39] 0,0, "FYL2X",
-[0x3a] 0,0, "FPTAN",
-[0x3b] 0,0, "FPATAN",
-[0x3c] 0,0, "FXTRACT",
-[0x3d] 0,0, "FPREM1",
-[0x3e] 0,0, "FDECSTP",
-[0x3f] 0,0, "FNCSTP",
-[0x40] 0,0, "FPREM",
-[0x41] 0,0, "FYL2XP1",
-[0x42] 0,0, "FSQRT",
-[0x43] 0,0, "FSINCOS",
-[0x44] 0,0, "FRNDINT",
-[0x45] 0,0, "FSCALE",
-[0x46] 0,0, "FSIN",
-[0x47] 0,0, "FCOS",
+0x00, 0,0, "FMOVF %e,F0",
+0x02, 0,0, "FMOVF F0,%e",
+0x03, 0,0, "FMOVFP F0,%e",
+0x04, 0,0, "FLDENV%S %e",
+0x05, 0,0, "FLDCW %e",
+0x06, 0,0, "FSTENV%S %e",
+0x07, 0,0, "FSTCW %e",
+0x08, 0,0, "FMOVD F0,F0", /* Mod R/M = 11xx xxxx*/
+0x09, 0,0, "FMOVD F1,F0",
+0x0a, 0,0, "FMOVD F2,F0",
+0x0b, 0,0, "FMOVD F3,F0",
+0x0c, 0,0, "FMOVD F4,F0",
+0x0d, 0,0, "FMOVD F5,F0",
+0x0e, 0,0, "FMOVD F6,F0",
+0x0f, 0,0, "FMOVD F7,F0",
+0x10, 0,0, "FXCHD F0,F0",
+0x11, 0,0, "FXCHD F1,F0",
+0x12, 0,0, "FXCHD F2,F0",
+0x13, 0,0, "FXCHD F3,F0",
+0x14, 0,0, "FXCHD F4,F0",
+0x15, 0,0, "FXCHD F5,F0",
+0x16, 0,0, "FXCHD F6,F0",
+0x17, 0,0, "FXCHD F7,F0",
+0x18, 0,0, "FNOP",
+0x28, 0,0, "FCHS",
+0x29, 0,0, "FABS",
+0x2c, 0,0, "FTST",
+0x2d, 0,0, "FXAM",
+0x30, 0,0, "FLD1",
+0x31, 0,0, "FLDL2T",
+0x32, 0,0, "FLDL2E",
+0x33, 0,0, "FLDPI",
+0x34, 0,0, "FLDLG2",
+0x35, 0,0, "FLDLN2",
+0x36, 0,0, "FLDZ",
+0x38, 0,0, "F2XM1",
+0x39, 0,0, "FYL2X",
+0x3a, 0,0, "FPTAN",
+0x3b, 0,0, "FPATAN",
+0x3c, 0,0, "FXTRACT",
+0x3d, 0,0, "FPREM1",
+0x3e, 0,0, "FDECSTP",
+0x3f, 0,0, "FNCSTP",
+0x40, 0,0, "FPREM",
+0x41, 0,0, "FYL2XP1",
+0x42, 0,0, "FSQRT",
+0x43, 0,0, "FSINCOS",
+0x44, 0,0, "FRNDINT",
+0x45, 0,0, "FSCALE",
+0x46, 0,0, "FSIN",
+0x47, 0,0, "FCOS",
};
static Optable optabDA[8+8] =
{
-[0x00] 0,0, "FADDL %e,F0",
-[0x01] 0,0, "FMULL %e,F0",
-[0x02] 0,0, "FCOML %e,F0",
-[0x03] 0,0, "FCOMLP %e,F0",
-[0x04] 0,0, "FSUBL %e,F0",
-[0x05] 0,0, "FSUBRL %e,F0",
-[0x06] 0,0, "FDIVL %e,F0",
-[0x07] 0,0, "FDIVRL %e,F0",
-[0x0d] R1,0, "FUCOMPP",
+0x00, 0,0, "FADDL %e,F0",
+0x01, 0,0, "FMULL %e,F0",
+0x02, 0,0, "FCOML %e,F0",
+0x03, 0,0, "FCOMLP %e,F0",
+0x04, 0,0, "FSUBL %e,F0",
+0x05, 0,0, "FSUBRL %e,F0",
+0x06, 0,0, "FDIVL %e,F0",
+0x07, 0,0, "FDIVRL %e,F0",
+0x0d, R1,0, "FUCOMPP",
};
static Optable optabDB[8+64] =
{
-[0x00] 0,0, "FMOVL %e,F0",
-[0x02] 0,0, "FMOVL F0,%e",
-[0x03] 0,0, "FMOVLP F0,%e",
-[0x05] 0,0, "FMOVX %e,F0",
-[0x07] 0,0, "FMOVXP F0,%e",
-[0x2a] 0,0, "FCLEX",
-[0x2b] 0,0, "FINIT",
+0x00, 0,0, "FMOVL %e,F0",
+0x02, 0,0, "FMOVL F0,%e",
+0x03, 0,0, "FMOVLP F0,%e",
+0x05, 0,0, "FMOVX %e,F0",
+0x07, 0,0, "FMOVXP F0,%e",
+0x2a, 0,0, "FCLEX",
+0x2b, 0,0, "FINIT",
};
static Optable optabDC[8+8] =
{
-[0x00] 0,0, "FADDD %e,F0",
-[0x01] 0,0, "FMULD %e,F0",
-[0x02] 0,0, "FCOMD %e,F0",
-[0x03] 0,0, "FCOMDP %e,F0",
-[0x04] 0,0, "FSUBD %e,F0",
-[0x05] 0,0, "FSUBRD %e,F0",
-[0x06] 0,0, "FDIVD %e,F0",
-[0x07] 0,0, "FDIVRD %e,F0",
-[0x08] 0,0, "FADDD F0,%f",
-[0x09] 0,0, "FMULD F0,%f",
-[0x0c] 0,0, "FSUBRD F0,%f",
-[0x0d] 0,0, "FSUBD F0,%f",
-[0x0e] 0,0, "FDIVRD F0,%f",
-[0x0f] 0,0, "FDIVD F0,%f",
+0x00, 0,0, "FADDD %e,F0",
+0x01, 0,0, "FMULD %e,F0",
+0x02, 0,0, "FCOMD %e,F0",
+0x03, 0,0, "FCOMDP %e,F0",
+0x04, 0,0, "FSUBD %e,F0",
+0x05, 0,0, "FSUBRD %e,F0",
+0x06, 0,0, "FDIVD %e,F0",
+0x07, 0,0, "FDIVRD %e,F0",
+0x08, 0,0, "FADDD F0,%f",
+0x09, 0,0, "FMULD F0,%f",
+0x0c, 0,0, "FSUBRD F0,%f",
+0x0d, 0,0, "FSUBD F0,%f",
+0x0e, 0,0, "FDIVRD F0,%f",
+0x0f, 0,0, "FDIVD F0,%f",
};
static Optable optabDD[8+8] =
{
-[0x00] 0,0, "FMOVD %e,F0",
-[0x02] 0,0, "FMOVD F0,%e",
-[0x03] 0,0, "FMOVDP F0,%e",
-[0x04] 0,0, "FRSTOR%S %e",
-[0x06] 0,0, "FSAVE%S %e",
-[0x07] 0,0, "FSTSW %e",
-[0x08] 0,0, "FFREED %f",
-[0x0a] 0,0, "FMOVD %f,F0",
-[0x0b] 0,0, "FMOVDP %f,F0",
-[0x0c] 0,0, "FUCOMD %f,F0",
-[0x0d] 0,0, "FUCOMDP %f,F0",
+0x00, 0,0, "FMOVD %e,F0",
+0x02, 0,0, "FMOVD F0,%e",
+0x03, 0,0, "FMOVDP F0,%e",
+0x04, 0,0, "FRSTOR%S %e",
+0x06, 0,0, "FSAVE%S %e",
+0x07, 0,0, "FSTSW %e",
+0x08, 0,0, "FFREED %f",
+0x0a, 0,0, "FMOVD %f,F0",
+0x0b, 0,0, "FMOVDP %f,F0",
+0x0c, 0,0, "FUCOMD %f,F0",
+0x0d, 0,0, "FUCOMDP %f,F0",
};
static Optable optabDE[8+8] =
{
-[0x00] 0,0, "FADDW %e,F0",
-[0x01] 0,0, "FMULW %e,F0",
-[0x02] 0,0, "FCOMW %e,F0",
-[0x03] 0,0, "FCOMWP %e,F0",
-[0x04] 0,0, "FSUBW %e,F0",
-[0x05] 0,0, "FSUBRW %e,F0",
-[0x06] 0,0, "FDIVW %e,F0",
-[0x07] 0,0, "FDIVRW %e,F0",
-[0x08] 0,0, "FADDDP F0,%f",
-[0x09] 0,0, "FMULDP F0,%f",
-[0x0b] R1,0, "FCOMPDP",
-[0x0c] 0,0, "FSUBRDP F0,%f",
-[0x0d] 0,0, "FSUBDP F0,%f",
-[0x0e] 0,0, "FDIVRDP F0,%f",
-[0x0f] 0,0, "FDIVDP F0,%f",
+0x00, 0,0, "FADDW %e,F0",
+0x01, 0,0, "FMULW %e,F0",
+0x02, 0,0, "FCOMW %e,F0",
+0x03, 0,0, "FCOMWP %e,F0",
+0x04, 0,0, "FSUBW %e,F0",
+0x05, 0,0, "FSUBRW %e,F0",
+0x06, 0,0, "FDIVW %e,F0",
+0x07, 0,0, "FDIVRW %e,F0",
+0x08, 0,0, "FADDDP F0,%f",
+0x09, 0,0, "FMULDP F0,%f",
+0x0b, R1,0, "FCOMPDP",
+0x0c, 0,0, "FSUBRDP F0,%f",
+0x0d, 0,0, "FSUBDP F0,%f",
+0x0e, 0,0, "FDIVRDP F0,%f",
+0x0f, 0,0, "FDIVDP F0,%f",
};
static Optable optabDF[8+8] =
{
-[0x00] 0,0, "FMOVW %e,F0",
-[0x02] 0,0, "FMOVW F0,%e",
-[0x03] 0,0, "FMOVWP F0,%e",
-[0x04] 0,0, "FBLD %e",
-[0x05] 0,0, "FMOVL %e,F0",
-[0x06] 0,0, "FBSTP %e",
-[0x07] 0,0, "FMOVLP F0,%e",
-[0x0c] R0,0, "FSTSW %OAX",
+0x00, 0,0, "FMOVW %e,F0",
+0x02, 0,0, "FMOVW F0,%e",
+0x03, 0,0, "FMOVWP F0,%e",
+0x04, 0,0, "FBLD %e",
+0x05, 0,0, "FMOVL %e,F0",
+0x06, 0,0, "FBSTP %e",
+0x07, 0,0, "FMOVLP F0,%e",
+0x0c, R0,0, "FSTSW %OAX",
};
static Optable optabF6[8] =
{
-[0x00] Ib,0, "TESTB %i,%e",
-[0x02] 0,0, "NOTB %e",
-[0x03] 0,0, "NEGB %e",
-[0x04] 0,0, "MULB AL,%e",
-[0x05] 0,0, "IMULB AL,%e",
-[0x06] 0,0, "DIVB AL,%e",
-[0x07] 0,0, "IDIVB AL,%e",
+0x00, Ib,0, "TESTB %i,%e",
+0x02, 0,0, "NOTB %e",
+0x03, 0,0, "NEGB %e",
+0x04, 0,0, "MULB AL,%e",
+0x05, 0,0, "IMULB AL,%e",
+0x06, 0,0, "DIVB AL,%e",
+0x07, 0,0, "IDIVB AL,%e",
};
static Optable optabF7[8] =
{
-[0x00] Iwd,0, "TEST%S %i,%e",
-[0x02] 0,0, "NOT%S %e",
-[0x03] 0,0, "NEG%S %e",
-[0x04] 0,0, "MUL%S %OAX,%e",
-[0x05] 0,0, "IMUL%S %OAX,%e",
-[0x06] 0,0, "DIV%S %OAX,%e",
-[0x07] 0,0, "IDIV%S %OAX,%e",
+0x00, Iwd,0, "TEST%S %i,%e",
+0x02, 0,0, "NOT%S %e",
+0x03, 0,0, "NEG%S %e",
+0x04, 0,0, "MUL%S %OAX,%e",
+0x05, 0,0, "IMUL%S %OAX,%e",
+0x06, 0,0, "DIV%S %OAX,%e",
+0x07, 0,0, "IDIV%S %OAX,%e",
};
static Optable optabFE[8] =
{
-[0x00] 0,0, "INCB %e",
-[0x01] 0,0, "DECB %e",
+0x00, 0,0, "INCB %e",
+0x01, 0,0, "DECB %e",
};
static Optable optabFF[8] =
{
-[0x00] 0,0, "INC%S %e",
-[0x01] 0,0, "DEC%S %e",
-[0x02] JUMP,0, "CALL* %e",
-[0x03] JUMP,0, "CALLF* %e",
-[0x04] JUMP,0, "JMP* %e",
-[0x05] JUMP,0, "JMPF* %e",
-[0x06] 0,0, "PUSHL %e",
+0x00, 0,0, "INC%S %e",
+0x01, 0,0, "DEC%S %e",
+0x02, JUMP,0, "CALL* %e",
+0x03, JUMP,0, "CALLF* %e",
+0x04, JUMP,0, "JMP* %e",
+0x05, JUMP,0, "JMPF* %e",
+0x06, 0,0, "PUSHL %e",
};
static Optable optable[256+1] =
{
-[0x00] RMB,0, "ADDB %r,%e",
-[0x01] RM,0, "ADD%S %r,%e",
-[0x02] RMB,0, "ADDB %e,%r",
-[0x03] RM,0, "ADD%S %e,%r",
-[0x04] Ib,0, "ADDB %i,AL",
-[0x05] Iwd,0, "ADD%S %i,%OAX",
-[0x06] 0,0, "PUSHL ES",
-[0x07] 0,0, "POPL ES",
-[0x08] RMB,0, "ORB %r,%e",
-[0x09] RM,0, "OR%S %r,%e",
-[0x0a] RMB,0, "ORB %e,%r",
-[0x0b] RM,0, "OR%S %e,%r",
-[0x0c] Ib,0, "ORB %i,AL",
-[0x0d] Iwd,0, "OR%S %i,%OAX",
-[0x0e] 0,0, "PUSHL CS",
-[0x0f] AUXMM,0, optab0F,
-[0x10] RMB,0, "ADCB %r,%e",
-[0x11] RM,0, "ADC%S %r,%e",
-[0x12] RMB,0, "ADCB %e,%r",
-[0x13] RM,0, "ADC%S %e,%r",
-[0x14] Ib,0, "ADCB %i,AL",
-[0x15] Iwd,0, "ADC%S %i,%OAX",
-[0x16] 0,0, "PUSHL SS",
-[0x17] 0,0, "POPL SS",
-[0x18] RMB,0, "SBBB %r,%e",
-[0x19] RM,0, "SBB%S %r,%e",
-[0x1a] RMB,0, "SBBB %e,%r",
-[0x1b] RM,0, "SBB%S %e,%r",
-[0x1c] Ib,0, "SBBB %i,AL",
-[0x1d] Iwd,0, "SBB%S %i,%OAX",
-[0x1e] 0,0, "PUSHL DS",
-[0x1f] 0,0, "POPL DS",
-[0x20] RMB,0, "ANDB %r,%e",
-[0x21] RM,0, "AND%S %r,%e",
-[0x22] RMB,0, "ANDB %e,%r",
-[0x23] RM,0, "AND%S %e,%r",
-[0x24] Ib,0, "ANDB %i,AL",
-[0x25] Iwd,0, "AND%S %i,%OAX",
-[0x26] SEG,0, "ES:",
-[0x27] 0,0, "DAA",
-[0x28] RMB,0, "SUBB %r,%e",
-[0x29] RM,0, "SUB%S %r,%e",
-[0x2a] RMB,0, "SUBB %e,%r",
-[0x2b] RM,0, "SUB%S %e,%r",
-[0x2c] Ib,0, "SUBB %i,AL",
-[0x2d] Iwd,0, "SUB%S %i,%OAX",
-[0x2e] SEG,0, "CS:",
-[0x2f] 0,0, "DAS",
-[0x30] RMB,0, "XORB %r,%e",
-[0x31] RM,0, "XOR%S %r,%e",
-[0x32] RMB,0, "XORB %e,%r",
-[0x33] RM,0, "XOR%S %e,%r",
-[0x34] Ib,0, "XORB %i,AL",
-[0x35] Iwd,0, "XOR%S %i,%OAX",
-[0x36] SEG,0, "SS:",
-[0x37] 0,0, "AAA",
-[0x38] RMB,0, "CMPB %r,%e",
-[0x39] RM,0, "CMP%S %r,%e",
-[0x3a] RMB,0, "CMPB %e,%r",
-[0x3b] RM,0, "CMP%S %e,%r",
-[0x3c] Ib,0, "CMPB %i,AL",
-[0x3d] Iwd,0, "CMP%S %i,%OAX",
-[0x3e] SEG,0, "DS:",
-[0x3f] 0,0, "AAS",
-[0x40] 0,0, "INC%S %OAX",
-[0x41] 0,0, "INC%S %OCX",
-[0x42] 0,0, "INC%S %ODX",
-[0x43] 0,0, "INC%S %OBX",
-[0x44] 0,0, "INC%S %OSP",
-[0x45] 0,0, "INC%S %OBP",
-[0x46] 0,0, "INC%S %OSI",
-[0x47] 0,0, "INC%S %ODI",
-[0x48] 0,0, "DEC%S %OAX",
-[0x49] 0,0, "DEC%S %OCX",
-[0x4a] 0,0, "DEC%S %ODX",
-[0x4b] 0,0, "DEC%S %OBX",
-[0x4c] 0,0, "DEC%S %OSP",
-[0x4d] 0,0, "DEC%S %OBP",
-[0x4e] 0,0, "DEC%S %OSI",
-[0x4f] 0,0, "DEC%S %ODI",
-[0x50] 0,0, "PUSH%S %OAX",
-[0x51] 0,0, "PUSH%S %OCX",
-[0x52] 0,0, "PUSH%S %ODX",
-[0x53] 0,0, "PUSH%S %OBX",
-[0x54] 0,0, "PUSH%S %OSP",
-[0x55] 0,0, "PUSH%S %OBP",
-[0x56] 0,0, "PUSH%S %OSI",
-[0x57] 0,0, "PUSH%S %ODI",
-[0x58] 0,0, "POP%S %OAX",
-[0x59] 0,0, "POP%S %OCX",
-[0x5a] 0,0, "POP%S %ODX",
-[0x5b] 0,0, "POP%S %OBX",
-[0x5c] 0,0, "POP%S %OSP",
-[0x5d] 0,0, "POP%S %OBP",
-[0x5e] 0,0, "POP%S %OSI",
-[0x5f] 0,0, "POP%S %ODI",
-[0x60] 0,0, "PUSHA%S",
-[0x61] 0,0, "POPA%S",
-[0x62] RMM,0, "BOUND %e,%r",
-[0x63] RM,0, "ARPL %r,%e",
-[0x64] SEG,0, "FS:",
-[0x65] SEG,0, "GS:",
-[0x66] OPOVER,0, "",
-[0x67] ADDOVER,0, "",
-[0x68] Iwd,0, "PUSH%S %i",
-[0x69] RM,Iwd, "IMUL%S %e,%i,%r",
-[0x6a] Ib,0, "PUSH%S %i",
-[0x6b] RM,Ibs, "IMUL%S %e,%i,%r",
-[0x6c] 0,0, "INSB DX,(%ODI)",
-[0x6d] 0,0, "INS%S DX,(%ODI)",
-[0x6e] 0,0, "OUTSB (%ASI),DX",
-[0x6f] 0,0, "OUTS%S (%ASI),DX",
-[0x70] Jbs,0, "JOS %p",
-[0x71] Jbs,0, "JOC %p",
-[0x72] Jbs,0, "JCS %p",
-[0x73] Jbs,0, "JCC %p",
-[0x74] Jbs,0, "JEQ %p",
-[0x75] Jbs,0, "JNE %p",
-[0x76] Jbs,0, "JLS %p",
-[0x77] Jbs,0, "JHI %p",
-[0x78] Jbs,0, "JMI %p",
-[0x79] Jbs,0, "JPL %p",
-[0x7a] Jbs,0, "JPS %p",
-[0x7b] Jbs,0, "JPC %p",
-[0x7c] Jbs,0, "JLT %p",
-[0x7d] Jbs,0, "JGE %p",
-[0x7e] Jbs,0, "JLE %p",
-[0x7f] Jbs,0, "JGT %p",
-[0x80] RMOPB,0, optab80,
-[0x81] RMOP,0, optab81,
-[0x83] RMOP,0, optab83,
-[0x84] RMB,0, "TESTB %r,%e",
-[0x85] RM,0, "TEST%S %r,%e",
-[0x86] RMB,0, "XCHGB %r,%e",
-[0x87] RM,0, "XCHG%S %r,%e",
-[0x88] RMB,0, "MOVB %r,%e",
-[0x89] RM,0, "MOV%S %r,%e",
-[0x8a] RMB,0, "MOVB %e,%r",
-[0x8b] RM,0, "MOV%S %e,%r",
-[0x8c] RM,0, "MOVW %g,%e",
-[0x8d] RM,0, "LEA%S %e,%r",
-[0x8e] RM,0, "MOVW %e,%g",
-[0x8f] RM,0, "POP%S %e",
-[0x90] 0,0, "NOP",
-[0x91] 0,0, "XCHG %OCX,%OAX",
-[0x92] 0,0, "XCHG %ODX,%OAX",
-[0x93] 0,0, "XCHG %OBX,%OAX",
-[0x94] 0,0, "XCHG %OSP,%OAX",
-[0x95] 0,0, "XCHG %OBP,%OAX",
-[0x96] 0,0, "XCHG %OSI,%OAX",
-[0x97] 0,0, "XCHG %ODI,%OAX",
-[0x98] 0,0, "%W", /* miserable CBW or CWDE */
-[0x99] 0,0, "%w", /* idiotic CWD or CDQ */
-[0x9a] PTR,0, "CALL%S %d",
-[0x9b] 0,0, "WAIT",
-[0x9c] 0,0, "PUSHF",
-[0x9d] 0,0, "POPF",
-[0x9e] 0,0, "SAHF",
-[0x9f] 0,0, "LAHF",
-[0xa0] Awd,0, "MOVB %i,AL",
-[0xa1] Awd,0, "MOV%S %i,%OAX",
-[0xa2] Awd,0, "MOVB AL,%i",
-[0xa3] Awd,0, "MOV%S %OAX,%i",
-[0xa4] 0,0, "MOVSB (%ASI),(%ADI)",
-[0xa5] 0,0, "MOVS%S (%ASI),(%ADI)",
-[0xa6] 0,0, "CMPSB (%ASI),(%ADI)",
-[0xa7] 0,0, "CMPS%S (%ASI),(%ADI)",
-[0xa8] Ib,0, "TESTB %i,AL",
-[0xa9] Iwd,0, "TEST%S %i,%OAX",
-[0xaa] 0,0, "STOSB AL,(%ADI)",
-[0xab] 0,0, "STOS%S %OAX,(%ADI)",
-[0xac] 0,0, "LODSB (%ASI),AL",
-[0xad] 0,0, "LODS%S (%ASI),%OAX",
-[0xae] 0,0, "SCASB (%ADI),AL",
-[0xaf] 0,0, "SCAS%S (%ADI),%OAX",
-[0xb0] Ib,0, "MOVB %i,AL",
-[0xb1] Ib,0, "MOVB %i,CL",
-[0xb2] Ib,0, "MOVB %i,DL",
-[0xb3] Ib,0, "MOVB %i,BL",
-[0xb4] Ib,0, "MOVB %i,AH",
-[0xb5] Ib,0, "MOVB %i,CH",
-[0xb6] Ib,0, "MOVB %i,DH",
-[0xb7] Ib,0, "MOVB %i,BH",
-[0xb8] Iwdq,0, "MOV%S %i,%OAX",
-[0xb9] Iwdq,0, "MOV%S %i,%OCX",
-[0xba] Iwdq,0, "MOV%S %i,%ODX",
-[0xbb] Iwdq,0, "MOV%S %i,%OBX",
-[0xbc] Iwdq,0, "MOV%S %i,%OSP",
-[0xbd] Iwdq,0, "MOV%S %i,%OBP",
-[0xbe] Iwdq,0, "MOV%S %i,%OSI",
-[0xbf] Iwdq,0, "MOV%S %i,%ODI",
-[0xc0] RMOPB,0, optabC0,
-[0xc1] RMOP,0, optabC1,
-[0xc2] Iw,0, "RET %i",
-[0xc3] RET,0, "RET",
-[0xc4] RM,0, "LES %e,%r",
-[0xc5] RM,0, "LDS %e,%r",
-[0xc6] RMB,Ib, "MOVB %i,%e",
-[0xc7] RM,Iwd, "MOV%S %i,%e",
-[0xc8] Iw2,Ib, "ENTER %i,%I", /* loony ENTER */
-[0xc9] RET,0, "LEAVE", /* bizarre LEAVE */
-[0xca] Iw,0, "RETF %i",
-[0xcb] RET,0, "RETF",
-[0xcc] 0,0, "INT 3",
-[0xcd] Ib,0, "INTB %i",
-[0xce] 0,0, "INTO",
-[0xcf] 0,0, "IRET",
-[0xd0] RMOPB,0, optabD0,
-[0xd1] RMOP,0, optabD1,
-[0xd2] RMOPB,0, optabD2,
-[0xd3] RMOP,0, optabD3,
-[0xd4] OA,0, "AAM",
-[0xd5] OA,0, "AAD",
-[0xd7] 0,0, "XLAT",
-[0xd8] FRMOP,0, optabD8,
-[0xd9] FRMEX,0, optabD9,
-[0xda] FRMOP,0, optabDA,
-[0xdb] FRMEX,0, optabDB,
-[0xdc] FRMOP,0, optabDC,
-[0xdd] FRMOP,0, optabDD,
-[0xde] FRMOP,0, optabDE,
-[0xdf] FRMOP,0, optabDF,
-[0xe0] Jbs,0, "LOOPNE %p",
-[0xe1] Jbs,0, "LOOPE %p",
-[0xe2] Jbs,0, "LOOP %p",
-[0xe3] Jbs,0, "JCXZ %p",
-[0xe4] Ib,0, "INB %i,AL",
-[0xe5] Ib,0, "IN%S %i,%OAX",
-[0xe6] Ib,0, "OUTB AL,%i",
-[0xe7] Ib,0, "OUT%S %OAX,%i",
-[0xe8] Iwds,0, "CALL %p",
-[0xe9] Iwds,0, "JMP %p",
-[0xea] PTR,0, "JMP %d",
-[0xeb] Jbs,0, "JMP %p",
-[0xec] 0,0, "INB DX,AL",
-[0xed] 0,0, "IN%S DX,%OAX",
-[0xee] 0,0, "OUTB AL,DX",
-[0xef] 0,0, "OUT%S %OAX,DX",
-[0xf0] PRE,0, "LOCK",
-[0xf2] OPRE,0, "REPNE",
-[0xf3] OPRE,0, "REP",
-[0xf4] 0,0, "HLT",
-[0xf5] 0,0, "CMC",
-[0xf6] RMOPB,0, optabF6,
-[0xf7] RMOP,0, optabF7,
-[0xf8] 0,0, "CLC",
-[0xf9] 0,0, "STC",
-[0xfa] 0,0, "CLI",
-[0xfb] 0,0, "STI",
-[0xfc] 0,0, "CLD",
-[0xfd] 0,0, "STD",
-[0xfe] RMOPB,0, optabFE,
-[0xff] RMOP,0, optabFF,
-[0x100] RM,0, "MOVLQSX %r,%e",
+0x00, RMB,0, "ADDB %r,%e",
+0x01, RM,0, "ADD%S %r,%e",
+0x02, RMB,0, "ADDB %e,%r",
+0x03, RM,0, "ADD%S %e,%r",
+0x04, Ib,0, "ADDB %i,AL",
+0x05, Iwd,0, "ADD%S %i,%OAX",
+0x06, 0,0, "PUSHL ES",
+0x07, 0,0, "POPL ES",
+0x08, RMB,0, "ORB %r,%e",
+0x09, RM,0, "OR%S %r,%e",
+0x0a, RMB,0, "ORB %e,%r",
+0x0b, RM,0, "OR%S %e,%r",
+0x0c, Ib,0, "ORB %i,AL",
+0x0d, Iwd,0, "OR%S %i,%OAX",
+0x0e, 0,0, "PUSHL CS",
+0x0f, AUXMM,0, optab0F,
+0x10, RMB,0, "ADCB %r,%e",
+0x11, RM,0, "ADC%S %r,%e",
+0x12, RMB,0, "ADCB %e,%r",
+0x13, RM,0, "ADC%S %e,%r",
+0x14, Ib,0, "ADCB %i,AL",
+0x15, Iwd,0, "ADC%S %i,%OAX",
+0x16, 0,0, "PUSHL SS",
+0x17, 0,0, "POPL SS",
+0x18, RMB,0, "SBBB %r,%e",
+0x19, RM,0, "SBB%S %r,%e",
+0x1a, RMB,0, "SBBB %e,%r",
+0x1b, RM,0, "SBB%S %e,%r",
+0x1c, Ib,0, "SBBB %i,AL",
+0x1d, Iwd,0, "SBB%S %i,%OAX",
+0x1e, 0,0, "PUSHL DS",
+0x1f, 0,0, "POPL DS",
+0x20, RMB,0, "ANDB %r,%e",
+0x21, RM,0, "AND%S %r,%e",
+0x22, RMB,0, "ANDB %e,%r",
+0x23, RM,0, "AND%S %e,%r",
+0x24, Ib,0, "ANDB %i,AL",
+0x25, Iwd,0, "AND%S %i,%OAX",
+0x26, SEG,0, "ES:",
+0x27, 0,0, "DAA",
+0x28, RMB,0, "SUBB %r,%e",
+0x29, RM,0, "SUB%S %r,%e",
+0x2a, RMB,0, "SUBB %e,%r",
+0x2b, RM,0, "SUB%S %e,%r",
+0x2c, Ib,0, "SUBB %i,AL",
+0x2d, Iwd,0, "SUB%S %i,%OAX",
+0x2e, SEG,0, "CS:",
+0x2f, 0,0, "DAS",
+0x30, RMB,0, "XORB %r,%e",
+0x31, RM,0, "XOR%S %r,%e",
+0x32, RMB,0, "XORB %e,%r",
+0x33, RM,0, "XOR%S %e,%r",
+0x34, Ib,0, "XORB %i,AL",
+0x35, Iwd,0, "XOR%S %i,%OAX",
+0x36, SEG,0, "SS:",
+0x37, 0,0, "AAA",
+0x38, RMB,0, "CMPB %r,%e",
+0x39, RM,0, "CMP%S %r,%e",
+0x3a, RMB,0, "CMPB %e,%r",
+0x3b, RM,0, "CMP%S %e,%r",
+0x3c, Ib,0, "CMPB %i,AL",
+0x3d, Iwd,0, "CMP%S %i,%OAX",
+0x3e, SEG,0, "DS:",
+0x3f, 0,0, "AAS",
+0x40, 0,0, "INC%S %OAX",
+0x41, 0,0, "INC%S %OCX",
+0x42, 0,0, "INC%S %ODX",
+0x43, 0,0, "INC%S %OBX",
+0x44, 0,0, "INC%S %OSP",
+0x45, 0,0, "INC%S %OBP",
+0x46, 0,0, "INC%S %OSI",
+0x47, 0,0, "INC%S %ODI",
+0x48, 0,0, "DEC%S %OAX",
+0x49, 0,0, "DEC%S %OCX",
+0x4a, 0,0, "DEC%S %ODX",
+0x4b, 0,0, "DEC%S %OBX",
+0x4c, 0,0, "DEC%S %OSP",
+0x4d, 0,0, "DEC%S %OBP",
+0x4e, 0,0, "DEC%S %OSI",
+0x4f, 0,0, "DEC%S %ODI",
+0x50, 0,0, "PUSH%S %OAX",
+0x51, 0,0, "PUSH%S %OCX",
+0x52, 0,0, "PUSH%S %ODX",
+0x53, 0,0, "PUSH%S %OBX",
+0x54, 0,0, "PUSH%S %OSP",
+0x55, 0,0, "PUSH%S %OBP",
+0x56, 0,0, "PUSH%S %OSI",
+0x57, 0,0, "PUSH%S %ODI",
+0x58, 0,0, "POP%S %OAX",
+0x59, 0,0, "POP%S %OCX",
+0x5a, 0,0, "POP%S %ODX",
+0x5b, 0,0, "POP%S %OBX",
+0x5c, 0,0, "POP%S %OSP",
+0x5d, 0,0, "POP%S %OBP",
+0x5e, 0,0, "POP%S %OSI",
+0x5f, 0,0, "POP%S %ODI",
+0x60, 0,0, "PUSHA%S",
+0x61, 0,0, "POPA%S",
+0x62, RMM,0, "BOUND %e,%r",
+0x63, RM,0, "ARPL %r,%e",
+0x64, SEG,0, "FS:",
+0x65, SEG,0, "GS:",
+0x66, OPOVER,0, "",
+0x67, ADDOVER,0, "",
+0x68, Iwd,0, "PUSH%S %i",
+0x69, RM,Iwd, "IMUL%S %e,%i,%r",
+0x6a, Ib,0, "PUSH%S %i",
+0x6b, RM,Ibs, "IMUL%S %e,%i,%r",
+0x6c, 0,0, "INSB DX,(%ODI)",
+0x6d, 0,0, "INS%S DX,(%ODI)",
+0x6e, 0,0, "OUTSB (%ASI),DX",
+0x6f, 0,0, "OUTS%S (%ASI),DX",
+0x70, Jbs,0, "JOS %p",
+0x71, Jbs,0, "JOC %p",
+0x72, Jbs,0, "JCS %p",
+0x73, Jbs,0, "JCC %p",
+0x74, Jbs,0, "JEQ %p",
+0x75, Jbs,0, "JNE %p",
+0x76, Jbs,0, "JLS %p",
+0x77, Jbs,0, "JHI %p",
+0x78, Jbs,0, "JMI %p",
+0x79, Jbs,0, "JPL %p",
+0x7a, Jbs,0, "JPS %p",
+0x7b, Jbs,0, "JPC %p",
+0x7c, Jbs,0, "JLT %p",
+0x7d, Jbs,0, "JGE %p",
+0x7e, Jbs,0, "JLE %p",
+0x7f, Jbs,0, "JGT %p",
+0x80, RMOPB,0, optab80,
+0x81, RMOP,0, optab81,
+0x83, RMOP,0, optab83,
+0x84, RMB,0, "TESTB %r,%e",
+0x85, RM,0, "TEST%S %r,%e",
+0x86, RMB,0, "XCHGB %r,%e",
+0x87, RM,0, "XCHG%S %r,%e",
+0x88, RMB,0, "MOVB %r,%e",
+0x89, RM,0, "MOV%S %r,%e",
+0x8a, RMB,0, "MOVB %e,%r",
+0x8b, RM,0, "MOV%S %e,%r",
+0x8c, RM,0, "MOVW %g,%e",
+0x8d, RM,0, "LEA%S %e,%r",
+0x8e, RM,0, "MOVW %e,%g",
+0x8f, RM,0, "POP%S %e",
+0x90, 0,0, "NOP",
+0x91, 0,0, "XCHG %OCX,%OAX",
+0x92, 0,0, "XCHG %ODX,%OAX",
+0x93, 0,0, "XCHG %OBX,%OAX",
+0x94, 0,0, "XCHG %OSP,%OAX",
+0x95, 0,0, "XCHG %OBP,%OAX",
+0x96, 0,0, "XCHG %OSI,%OAX",
+0x97, 0,0, "XCHG %ODI,%OAX",
+0x98, 0,0, "%W", /* miserable CBW or CWDE */
+0x99, 0,0, "%w", /* idiotic CWD or CDQ */
+0x9a, PTR,0, "CALL%S %d",
+0x9b, 0,0, "WAIT",
+0x9c, 0,0, "PUSHF",
+0x9d, 0,0, "POPF",
+0x9e, 0,0, "SAHF",
+0x9f, 0,0, "LAHF",
+0xa0, Awd,0, "MOVB %i,AL",
+0xa1, Awd,0, "MOV%S %i,%OAX",
+0xa2, Awd,0, "MOVB AL,%i",
+0xa3, Awd,0, "MOV%S %OAX,%i",
+0xa4, 0,0, "MOVSB (%ASI),(%ADI)",
+0xa5, 0,0, "MOVS%S (%ASI),(%ADI)",
+0xa6, 0,0, "CMPSB (%ASI),(%ADI)",
+0xa7, 0,0, "CMPS%S (%ASI),(%ADI)",
+0xa8, Ib,0, "TESTB %i,AL",
+0xa9, Iwd,0, "TEST%S %i,%OAX",
+0xaa, 0,0, "STOSB AL,(%ADI)",
+0xab, 0,0, "STOS%S %OAX,(%ADI)",
+0xac, 0,0, "LODSB (%ASI),AL",
+0xad, 0,0, "LODS%S (%ASI),%OAX",
+0xae, 0,0, "SCASB (%ADI),AL",
+0xaf, 0,0, "SCAS%S (%ADI),%OAX",
+0xb0, Ib,0, "MOVB %i,AL",
+0xb1, Ib,0, "MOVB %i,CL",
+0xb2, Ib,0, "MOVB %i,DL",
+0xb3, Ib,0, "MOVB %i,BL",
+0xb4, Ib,0, "MOVB %i,AH",
+0xb5, Ib,0, "MOVB %i,CH",
+0xb6, Ib,0, "MOVB %i,DH",
+0xb7, Ib,0, "MOVB %i,BH",
+0xb8, Iwdq,0, "MOV%S %i,%OAX",
+0xb9, Iwdq,0, "MOV%S %i,%OCX",
+0xba, Iwdq,0, "MOV%S %i,%ODX",
+0xbb, Iwdq,0, "MOV%S %i,%OBX",
+0xbc, Iwdq,0, "MOV%S %i,%OSP",
+0xbd, Iwdq,0, "MOV%S %i,%OBP",
+0xbe, Iwdq,0, "MOV%S %i,%OSI",
+0xbf, Iwdq,0, "MOV%S %i,%ODI",
+0xc0, RMOPB,0, optabC0,
+0xc1, RMOP,0, optabC1,
+0xc2, Iw,0, "RET %i",
+0xc3, RET,0, "RET",
+0xc4, RM,0, "LES %e,%r",
+0xc5, RM,0, "LDS %e,%r",
+0xc6, RMB,Ib, "MOVB %i,%e",
+0xc7, RM,Iwd, "MOV%S %i,%e",
+0xc8, Iw2,Ib, "ENTER %i,%I", /* loony ENTER */
+0xc9, RET,0, "LEAVE", /* bizarre LEAVE */
+0xca, Iw,0, "RETF %i",
+0xcb, RET,0, "RETF",
+0xcc, 0,0, "INT 3",
+0xcd, Ib,0, "INTB %i",
+0xce, 0,0, "INTO",
+0xcf, 0,0, "IRET",
+0xd0, RMOPB,0, optabD0,
+0xd1, RMOP,0, optabD1,
+0xd2, RMOPB,0, optabD2,
+0xd3, RMOP,0, optabD3,
+0xd4, OA,0, "AAM",
+0xd5, OA,0, "AAD",
+0xd7, 0,0, "XLAT",
+0xd8, FRMOP,0, optabD8,
+0xd9, FRMEX,0, optabD9,
+0xda, FRMOP,0, optabDA,
+0xdb, FRMEX,0, optabDB,
+0xdc, FRMOP,0, optabDC,
+0xdd, FRMOP,0, optabDD,
+0xde, FRMOP,0, optabDE,
+0xdf, FRMOP,0, optabDF,
+0xe0, Jbs,0, "LOOPNE %p",
+0xe1, Jbs,0, "LOOPE %p",
+0xe2, Jbs,0, "LOOP %p",
+0xe3, Jbs,0, "JCXZ %p",
+0xe4, Ib,0, "INB %i,AL",
+0xe5, Ib,0, "IN%S %i,%OAX",
+0xe6, Ib,0, "OUTB AL,%i",
+0xe7, Ib,0, "OUT%S %OAX,%i",
+0xe8, Iwds,0, "CALL %p",
+0xe9, Iwds,0, "JMP %p",
+0xea, PTR,0, "JMP %d",
+0xeb, Jbs,0, "JMP %p",
+0xec, 0,0, "INB DX,AL",
+0xed, 0,0, "IN%S DX,%OAX",
+0xee, 0,0, "OUTB AL,DX",
+0xef, 0,0, "OUT%S %OAX,DX",
+0xf0, PRE,0, "LOCK",
+0xf2, OPRE,0, "REPNE",
+0xf3, OPRE,0, "REP",
+0xf4, 0,0, "HLT",
+0xf5, 0,0, "CMC",
+0xf6, RMOPB,0, optabF6,
+0xf7, RMOP,0, optabF7,
+0xf8, 0,0, "CLC",
+0xf9, 0,0, "STC",
+0xfa, 0,0, "CLI",
+0xfb, 0,0, "STI",
+0xfc, 0,0, "CLD",
+0xfd, 0,0, "STD",
+0xfe, RMOPB,0, optabFE,
+0xff, RMOP,0, optabFF,
+0x100, RM,0, "MOVLQSX %r,%e",
};
+static struct {
+ Optable *tab;
+ uint nel;
+} optabtab[] = {
+ optab0F00, nelem(optab0F00),
+ optab0F01, nelem(optab0F01),
+ optab0F01F8, nelem(optab0F01F8),
+ optab0FAE, nelem(optab0FAE),
+ optab0FBA, nelem(optab0FBA),
+ optab0F0F, nelem(optab0F0F),
+ optab0FC7, nelem(optab0FC7),
+ optab660F71, nelem(optab660F71),
+ optab660F72, nelem(optab660F72),
+ optab660F73, nelem(optab660F73),
+ optab660F, nelem(optab660F),
+ optabF20F, nelem(optabF20F),
+ optabF30F, nelem(optabF30F),
+ optab0F, nelem(optab0F),
+ optab80, nelem(optab80),
+ optab81, nelem(optab81),
+ optab83, nelem(optab83),
+ optabC0, nelem(optabC0),
+ optabC1, nelem(optabC1),
+ optabD0, nelem(optabD0),
+ optabD1, nelem(optabD1),
+ optabD2, nelem(optabD2),
+ optabD3, nelem(optabD3),
+ optabD8, nelem(optabD8),
+ optabD9, nelem(optabD9),
+ optabDA, nelem(optabDA),
+ optabDB, nelem(optabDB),
+ optabDC, nelem(optabDC),
+ optabDD, nelem(optabDD),
+ optabDE, nelem(optabDE),
+ optabDF, nelem(optabDF),
+ optabF6, nelem(optabF6),
+ optabF7, nelem(optabF7),
+ optabFE, nelem(optabFE),
+ optabFF, nelem(optabFF),
+ optable, nelem(optable),
+};
+
+/*
+ * compensate for Microsoft's ageing compilers
+ */
+static void
+ordertab(Optable *tab, int nel)
+{
+ int i, x;
+ static Optable empty;
+
+ for(i = nel; --i >= 0;){
+ x = tab[i].x;
+ if(x != i){
+ tab[x] = tab[i];
+ tab[i] = empty;
+ }
+ }
+}
+
+static void
+soptoms(void)
+{
+ int i;
+ static int reordered; /* assumes non-concurrent use */
+
+ if(reordered)
+ return;
+ reordered = 1;
+ for(i = 0; i < nelem(optabtab); i++)
+ ordertab(optabtab[i].tab, optabtab[i].nel);
+}
+
/*
* get a byte of the instruction
*/
@@ -1400,6 +1490,7 @@ mkinstr(Map *map, Instr *ip, uvlong pc)
Optable *op, *obase;
char buf[128];
+ soptoms();
memset(ip, 0, sizeof(*ip));
norex = 1;
ip->base = -1;
@@ -1723,24 +1814,24 @@ bprint(Instr *ip, char *fmt, ...)
#define ONAME(ip) ""
static char *reg[] = {
-[AX] "AX",
-[CX] "CX",
-[DX] "DX",
-[BX] "BX",
-[SP] "SP",
-[BP] "BP",
-[SI] "SI",
-[DI] "DI",
+ "AX",
+ "CX",
+ "DX",
+ "BX",
+ "SP",
+ "BP",
+ "SI",
+ "DI",
/* amd64 */
-[R8] "R8",
-[R9] "R9",
-[R10] "R10",
-[R11] "R11",
-[R12] "R12",
-[R13] "R13",
-[R14] "R14",
-[R15] "R15",
+ "R8",
+ "R9",
+ "R10",
+ "R11",
+ "R12",
+ "R13",
+ "R14",
+ "R15",
};
static char *breg[] = { "AL", "CL", "DL", "BL", "AH", "CH", "DH", "BH" };
diff --git a/utils/libmach/kdb.c b/utils/libmach/kdb.c
index 5536532a..80a4110b 100644
--- a/utils/libmach/kdb.c
+++ b/utils/libmach/kdb.c
@@ -150,130 +150,138 @@ static void loadcsr(Instr*, char*);
static void trap(Instr*, char*);
static struct opcode sparcop0[8] = {
- [0] "UNIMP", unimp, 0, /* page 137 */
- [2] "B", bra, 0, /* page 119 */
- [4] "SETHI", sethi, 0, /* page 104 */
- [6] "FB", fbra, 0, /* page 121 */
- [7] "CB", cbra, 0, /* page 123 */
+ "UNIMP", unimp, 0, /* page 137 */ /* 0 */
+ "", 0, 0, /* 1 */
+ "B", bra, 0, /* page 119 */ /* 2 */
+ "", 0, 0, /* 3 */
+ "SETHI", sethi, 0, /* page 104 */ /* 4 */
+ "", 0, 0, /* 5 */
+ "FB", fbra, 0, /* page 121 */ /* 6 */
+ "CB", cbra, 0, /* page 123 */ /* 7 */
};
static struct opcode sparcop2[64] = {
- [0x00] "ADD", add, 0, /* page 108 */
- [0x10] "ADDCC", add, 0,
- [0x08] "ADDX", add, 0,
- [0x18] "ADDXCC", add, 0,
-
- [0x20] "TADD", add, 0, /* page 109 */
- [0x22] "TADDCCTV", add, 0,
-
- [0x04] "SUB", add, 0, /* page 110 */
- [0x14] "SUBCC", cmp, 0,
- [0x0C] "SUBX", add, 0,
- [0x1C] "SUBXCC", add, 0,
-
- [0x21] "TSUB", add, 0, /* page 111 */
- [0x23] "TSUBCCTV", add, 0,
-
- [0x24] "MULSCC", add, 0, /* page 112 */
-
- [0x0A] "UMUL", add, 0, /* page 113 */
- [0x0B] "SMUL", add, 0,
- [0x1A] "UMULCC", add, 0,
- [0x1B] "SMULCC", add, 0,
-
- [0x0E] "UDIV", add, 0, /* page 115 */
- [0x0F] "SDIV", add, 0,
- [0x1E] "UDIVCC", add, 0,
- [0x1F] "SDIVCC", add, 0,
-
- [0x01] "AND", add, 0, /* page 106 */
- [0x11] "ANDCC", add, 0,
- [0x05] "ANDN", add, 0,
- [0x15] "ANDNCC", add, 0,
- [0x02] "OR", add, 0,
- [0x12] "ORCC", add, 0,
- [0x06] "ORN", add, 0,
- [0x16] "ORNCC", add, 0,
- [0x03] "XOR", add, 0,
- [0x13] "XORCC", add, 0,
- [0x07] "XORN", add, 0,
- [0x17] "XORNCC", add, 0,
-
- [0x25] "SLL", shift, 0, /* page 107 */
- [0x26] "SRL", shift, 0,
- [0x27] "SRA", shift, 0,
-
- [0x3C] "SAVE", add, 0, /* page 117 */
- [0x3D] "RESTORE", add, 0,
-
- [0x38] "JMPL", jmpl, 0, /* page 126 */
-
- [0x39] "RETT", add, 0, /* page 127 */
-
- [0x3A] "T", trap, 0, /* page 129 */
-
- [0x28] "rdy", rd, 0, /* page 131 */
- [0x29] "rdpsr", rd, 0,
- [0x2A] "rdwim", rd, 0,
- [0x2B] "rdtbr", rd, 0,
-
- [0x30] "wry", wr, 0, /* page 133 */
- [0x31] "wrpsr", wr, 0,
- [0x32] "wrwim", wr, 0,
- [0x33] "wrtbr", wr, 0,
-
- [0x3B] "flush", add, 0, /* page 138 */
-
- [0x34] "FPOP", fpop, 0, /* page 140 */
- [0x35] "FPOP", fpop, 0,
+ "ADD", add, 0, /* page 108 */ /* 0x00 */
+ "AND", add, 0, /* page 106 */ /* 0x01 */
+ "OR", add, 0, /* 0x02 */
+ "XOR", add, 0, /* 0x03 */
+ "SUB", add, 0, /* page 110 */ /* 0x04 */
+ "ANDN", add, 0, /* 0x05 */
+ "ORN", add, 0, /* 0x06 */
+ "XORN", add, 0, /* 0x07 */
+ "ADDX", add, 0, /* 0x08 */
+ "", 0, 0, /* 0x09 */
+ "UMUL", add, 0, /* page 113 */ /* 0x0a */
+ "SMUL", add, 0, /* 0x0b */
+ "SUBX", add, 0, /* 0x0c */
+ "", 0, 0, /* 0x0d */
+ "UDIV", add, 0, /* page 115 */ /* 0x0e */
+ "SDIV", add, 0, /* 0x0f */
+ "ADDCC", add, 0, /* 0x10 */
+ "ANDCC", add, 0, /* 0x11 */
+ "ORCC", add, 0, /* 0x12 */
+ "XORCC", add, 0, /* 0x13 */
+ "SUBCC", cmp, 0, /* 0x14 */
+ "ANDNCC", add, 0, /* 0x15 */
+ "ORNCC", add, 0, /* 0x16 */
+ "XORNCC", add, 0, /* 0x17 */
+ "ADDXCC", add, 0, /* 0x18 */
+ "", 0, 0, /* 0x19 */
+ "UMULCC", add, 0, /* 0x1a */
+ "SMULCC", add, 0, /* 0x1b */
+ "SUBXCC", add, 0, /* 0x1c */
+ "", 0, 0, /* 0x1d */
+ "UDIVCC", add, 0, /* 0x1e */
+ "SDIVCC", add, 0, /* 0x1f */
+ "TADD", add, 0, /* page 109 */ /* 0x20 */
+ "TSUB", add, 0, /* page 111 */ /* 0x21 */
+ "TADDCCTV", add, 0, /* 0x22 */
+ "TSUBCCTV", add, 0, /* 0x23 */
+ "MULSCC", add, 0, /* page 112 */ /* 0x24 */
+ "SLL", shift, 0, /* page 107 */ /* 0x25 */
+ "SRL", shift, 0, /* 0x26 */
+ "SRA", shift, 0, /* 0x27 */
+ "rdy", rd, 0, /* page 131 */ /* 0x28 */
+ "rdpsr", rd, 0, /* 0x29 */
+ "rdwim", rd, 0, /* 0x2a */
+ "rdtbr", rd, 0, /* 0x2b */
+ "", 0, 0, /* 0x2c */
+ "", 0, 0, /* 0x2d */
+ "", 0, 0, /* 0x2e */
+ "", 0, 0, /* 0x2f */
+ "wry", wr, 0, /* page 133 */ /* 0x30 */
+ "wrpsr", wr, 0, /* 0x31 */
+ "wrwim", wr, 0, /* 0x32 */
+ "wrtbr", wr, 0, /* 0x33 */
+ "FPOP", fpop, 0, /* page 140 */ /* 0x34 */
+ "FPOP", fpop, 0, /* 0x35 */
+ "", 0, 0, /* 0x36 */
+ "", 0, 0, /* 0x37 */
+ "JMPL", jmpl, 0, /* page 126 */ /* 0x38 */
+ "RETT", add, 0, /* page 127 */ /* 0x39 */
+ "T", trap, 0, /* page 129 */ /* 0x3a */
+ "flush", add, 0, /* page 138 */ /* 0x3b */
+ "SAVE", add, 0, /* page 117 */ /* 0x3c */
+ "RESTORE", add, 0, /* 0x3d */
};
static struct opcode sparcop3[64]={
- [0x09] "ldsb", load, 0, /* page 90 */
- [0x19] "ldsba", loada, 0,
- [0x0A] "ldsh", load, 0,
- [0x1A] "ldsha", loada, 0,
- [0x01] "ldub", load, 0,
- [0x11] "lduba", loada, 0,
- [0x02] "lduh", load, 0,
- [0x12] "lduha", loada, 0,
- [0x00] "ld", load, 0,
- [0x10] "lda", loada, 0,
- [0x03] "ldd", load, 0,
- [0x13] "ldda", loada, 0,
-
- [0x20] "ldf", loadf, 0, /* page 92 */
- [0x23] "lddf", loadf, 0,
- [0x21] "ldfsr", loadf,0,
-
- [0x30] "ldc", loadc, 0, /* page 94 */
- [0x33] "lddc", loadc, 0,
- [0x31] "ldcsr", loadcsr,0,
-
- [0x05] "stb", store, 0, /* page 95 */
- [0x15] "stba", storea, 0,
- [0x06] "sth", store, 0,
- [0x16] "stha", storea, 0,
- [0x04] "st", store, 0,
- [0x14] "sta", storea, 0,
- [0x07] "std", store, 0,
- [0x17] "stda", storea, 0,
-
- [0x24] "stf", storef, 0, /* page 97 */
- [0x27] "stdf", storef, 0,
- [0x25] "stfsr", storef,0,
- [0x26] "stdfq", storef,0,
-
- [0x34] "stc", loadc, 0, /* page 99 */
- [0x37] "stdc", loadc, 0,
- [0x35] "stcsr", loadcsr,0,
- [0x36] "stdcq", loadcsr,0,
-
- [0x0D] "ldstub", store, 0, /* page 101 */
- [0x1D] "ldstuba", storea, 0,
-
- [0x0F] "swap", load, 0, /* page 102 */
- [0x1F] "swapa", loada, 0,
+ "ld", load, 0, /* 0x00 */
+ "ldub", load, 0, /* 0x01 */
+ "lduh", load, 0, /* 0x02 */
+ "ldd", load, 0, /* 0x03 */
+ "st", store, 0, /* 0x04 */
+ "stb", store, 0, /* page 95 */ /* 0x05 */
+ "sth", store, 0, /* 0x06 */
+ "std", store, 0, /* 0x07 */
+ "", 0, 0, /* 0x08 */
+ "ldsb", load, 0, /* page 90 */ /* 0x09 */
+ "ldsh", load, 0, /* 0x0a */
+ "", 0, 0, /* 0x0b */
+ "", 0, 0, /* 0x0c */
+ "ldstub", store, 0, /* page 101 */ /* 0x0d */
+ "", 0, 0, /* 0x0e */
+ "swap", load, 0, /* page 102 */ /* 0x0f */
+ "lda", loada, 0, /* 0x10 */
+ "lduba", loada, 0, /* 0x11 */
+ "lduha", loada, 0, /* 0x12 */
+ "ldda", loada, 0, /* 0x13 */
+ "sta", storea, 0, /* 0x14 */
+ "stba", storea, 0, /* 0x15 */
+ "stha", storea, 0, /* 0x16 */
+ "stda", storea, 0, /* 0x17 */
+ "", 0, 0, /* 0x18 */
+ "ldsba", loada, 0, /* 0x19 */
+ "ldsha", loada, 0, /* 0x1a */
+ "", 0, 0, /* 0x1b */
+ "", 0, 0, /* 0x1c */
+ "ldstuba", storea, 0, /* 0x1d */
+ "", 0, 0, /* 0x1e */
+ "swapa", loada, 0, /* 0x1f */
+ "ldf", loadf, 0, /* page 92 */ /* 0x20 */
+ "ldfsr", loadf,0, /* 0x21 */
+ "", 0, 0, /* 0x22 */
+ "lddf", loadf, 0, /* 0x23 */
+ "stf", storef, 0, /* page 97 */ /* 0x24 */
+ "stfsr", storef,0, /* 0x25 */
+ "stdfq", storef,0, /* 0x26 */
+ "stdf", storef, 0, /* 0x27 */
+ "", 0, 0, /* 0x28 */
+ "", 0, 0, /* 0x29 */
+ "", 0, 0, /* 0x2a */
+ "", 0, 0, /* 0x2b */
+ "", 0, 0, /* 0x2c */
+ "", 0, 0, /* 0x2d */
+ "", 0, 0, /* 0x2e */
+ "", 0, 0, /* 0x2f */
+ "ldc", loadc, 0, /* page 94 */ /* 0x30 */
+ "ldcsr", loadcsr,0, /* 0x31 */
+ "", 0, 0, /* 0x32 */
+ "lddc", loadc, 0, /* 0x33 */
+ "stc", loadc, 0, /* page 99 */ /* 0x34 */
+ "stcsr", loadcsr,0, /* 0x35 */
+ "stdcq", loadcsr,0, /* 0x36 */
+ "stdc", loadc, 0, /* 0x37 */
};
#pragma varargck argpos bprint 2
@@ -534,60 +542,60 @@ unimp(Instr *i, char *m)
}
static char *bratab[16] = { /* page 91 */
- [0X8] "A",
- [0X0] "N",
- [0X9] "NE",
- [0X1] "E",
- [0XA] "G",
- [0X2] "LE",
- [0XB] "GE",
- [0X3] "L",
- [0XC] "GU",
- [0X4] "LEU",
- [0XD] "CC",
- [0X5] "CS",
- [0XE] "POS",
- [0X6] "NEG",
- [0XF] "VC",
- [0X7] "VS",
+ "N", /* 0x0 */
+ "E", /* 0x1 */
+ "LE", /* 0x2 */
+ "L", /* 0x3 */
+ "LEU", /* 0x4 */
+ "CS", /* 0x5 */
+ "NEG", /* 0x6 */
+ "VS", /* 0x7 */
+ "A", /* 0x8 */
+ "NE", /* 0x9 */
+ "G", /* 0xa */
+ "GE", /* 0xb */
+ "GU", /* 0xc */
+ "CC", /* 0xd */
+ "POS", /* 0xe */
+ "VC", /* 0xf */
};
static char *fbratab[16] = { /* page 91 */
- [0X8] "A",
- [0X0] "N",
- [0X7] "U",
- [0X6] "G",
- [0X5] "UG",
- [0X4] "L",
- [0X3] "UL",
- [0X2] "LG",
- [0X1] "NE",
- [0X9] "E",
- [0XA] "UE",
- [0XB] "GE",
- [0XC] "UGE",
- [0XD] "LE",
- [0XE] "ULE",
- [0XF] "O",
+ "N", /* 0x0 */
+ "NE", /* 0x1 */
+ "LG", /* 0x2 */
+ "UL", /* 0x3 */
+ "L", /* 0x4 */
+ "UG", /* 0x5 */
+ "G", /* 0x6 */
+ "U", /* 0x7 */
+ "A", /* 0x8 */
+ "E", /* 0x9 */
+ "UE", /* 0xa */
+ "GE", /* 0xb */
+ "UGE", /* 0xc */
+ "LE", /* 0xd */
+ "ULE", /* 0xe */
+ "O", /* 0xf */
};
static char *cbratab[16] = { /* page 91 */
- [0X8] "A",
- [0X0] "N",
- [0X7] "3",
- [0X6] "2",
- [0X5] "23",
- [0X4] "1",
- [0X3] "13",
- [0X2] "12",
- [0X1] "123",
- [0X9] "0",
- [0XA] "03",
- [0XB] "02",
- [0XC] "023",
- [0XD] "01",
- [0XE] "013",
- [0XF] "012",
+ "N", /* 0x0 */
+ "123", /* 0x1 */
+ "12", /* 0x2 */
+ "13", /* 0x3 */
+ "1", /* 0x4 */
+ "23", /* 0x5 */
+ "2", /* 0x6 */
+ "3", /* 0x7 */
+ "A", /* 0x8 */
+ "0", /* 0x9 */
+ "03", /* 0xa */
+ "02", /* 0xb */
+ "023", /* 0xc */
+ "01", /* 0xd */
+ "013", /* 0xe */
+ "012", /* 0xf */
};
static void
diff --git a/utils/libmach/obj.c b/utils/libmach/obj.c
index 812369ba..fcb6dba8 100644
--- a/utils/libmach/obj.c
+++ b/utils/libmach/obj.c
@@ -50,15 +50,23 @@ struct Obj /* functions to handle each intermediate (.$O) file */
static Obj obj[] =
{ /* functions to identify and parse each type of obj */
- [Obj68020] "68020 .2", _is2, _read2,
- [ObjAmd64] "amd64 .6", _is6, _read6,
- [ObjArm] "arm .5", _is5, _read5,
- [Obj386] "386 .8", _is8, _read8,
- [ObjSparc] "sparc .k", _isk, _readk,
- [ObjPower] "power .q", _isq, _readq,
- [ObjMips] "mips .v", _isv, _readv,
- [ObjPower64] "power64 .9", _is9, _read9,
- [Maxobjtype] 0, 0
+ /*[Obj68020]*/ "68020 .2", _is2, _read2,
+ /*[ObjSparc]*/ "sparc .k", _isk, _readk,
+ /*[ObjMips]*/ "mips .v", _isv, _readv,
+ /*[Obj386]*/ "386 .8", _is8, _read8,
+ /*[Obj960]*/ {0, 0,},
+ /*[Obj3210]*/ {0, 0,},
+ /*[ObjMips2]*/ {0, 0,},
+ /*[Obj29000]*/ {0, 0,},
+ /*[ObjArm]*/ "arm .5", _is5, _read5,
+ /*[ObjPower]*/ "power .q", _isq, _readq,
+ /*[ObjMips2le]*/ {0, 0,},
+ /*[ObjAlpha]*/ {0, 0,},
+ /*[ObjSparc64]*/ {0, 0,},
+ /*[ObjAmd64]*/ "amd64 .6", _is6, _read6,
+ /*[ObjSpim]*/ {0, 0,},
+ /*[ObjPower64]*/ "power64 .9", _is9, _read9,
+ /*[Maxobjtype]*/ 0, 0
};
struct Symtab
diff --git a/utils/libmach/setmach.c b/utils/libmach/setmach.c
index cdac45f6..4332dc9d 100644
--- a/utils/libmach/setmach.c
+++ b/utils/libmach/setmach.c
@@ -15,9 +15,10 @@ struct machtab
Machdata *machdata; /* machine functions */
};
-extern Mach mmips, msparc, m68020, mi386, marm, mmips2be, mmips2le, mpower;
+extern Mach mmips, msparc, m68020, mi386, mamd64,
+ marm, mmips2be, mmips2le, mpower, mpower64, malpha, msparc64;
extern Machdata mipsmach, sparcmach, m68020mach, i386mach,
- armmach, mipsmach2be, mipsmach2le, powermach;
+ armmach, mipsmach2le, powermach, alphamach, sparc64mach;
/*
* machine selection table. machines with native disassemblers should
@@ -55,7 +56,7 @@ Machtab machines[] =
FMIPSB,
AMIPS,
&mmips2be,
- &mipsmach2be, },
+ &mipsmach, }, /* shares debuggers with native mips */
{ "mipsco", /*native mips - must follow plan 9*/
FMIPS,
FMIPSB,
@@ -86,18 +87,30 @@ Machtab machines[] =
AI8086,
&mi386,
&i386mach, },
+ { "amd64", /*amd64*/
+ FAMD64,
+ FAMD64B,
+ AAMD64,
+ &mamd64,
+ &i386mach, },
{ "arm", /*ARM*/
FARM,
- FNONE,
+ FARMB,
AARM,
&marm,
&armmach, },
{ "power", /*PowerPC*/
FPOWER,
- FNONE,
+ FPOWERB,
APOWER,
&mpower,
&powermach, },
+ { "power64", /*PowerPC*/
+ FPOWER64,
+ FPOWER64B,
+ APOWER64,
+ &mpower64,
+ &powermach, },
{ 0 }, /*the terminator*/
};