diff options
Diffstat (limited to 'src/emu/cpu/nec/necdasm.c')
-rw-r--r-- | src/emu/cpu/nec/necdasm.c | 1405 |
1 files changed, 702 insertions, 703 deletions
diff --git a/src/emu/cpu/nec/necdasm.c b/src/emu/cpu/nec/necdasm.c index 21b964a2984..b0a69a0e185 100644 --- a/src/emu/cpu/nec/necdasm.c +++ b/src/emu/cpu/nec/necdasm.c @@ -9,7 +9,7 @@ struct nec_config { - const UINT8* v25v35_decryptiontable; // internal decryption table + const UINT8* v25v35_decryptiontable; // internal decryption table }; /* default configuration */ @@ -22,27 +22,27 @@ static const nec_config *Iconfig; enum { - PARAM_REG8 = 1, /* 8-bit register */ - PARAM_REG16, /* 16-bit register */ - PARAM_REG2_8, /* 8-bit register */ - PARAM_REG2_16, /* 16-bit register */ - PARAM_RM8, /* 8-bit memory or register */ - PARAM_RM16, /* 16-bit memory or register */ - PARAM_RMPTR8, /* 8-bit memory or register */ - PARAM_RMPTR16, /* 16-bit memory or register */ - PARAM_I3, /* 3-bit immediate */ - PARAM_I4, /* 4-bit immediate */ - PARAM_I8, /* 8-bit signed immediate */ - PARAM_I16, /* 16-bit signed immediate */ - PARAM_UI8, /* 8-bit unsigned immediate */ - PARAM_IMM, /* 16-bit immediate */ - PARAM_ADDR, /* 16:16 address */ - PARAM_REL8, /* 8-bit PC-relative displacement */ - PARAM_REL16, /* 16-bit PC-relative displacement */ - PARAM_MEM_OFFS, /* 16-bit mem offset */ - PARAM_SREG, /* segment register */ - PARAM_SFREG, /* V25/V35 special function register */ - PARAM_1, /* used by shift/rotate instructions */ + PARAM_REG8 = 1, /* 8-bit register */ + PARAM_REG16, /* 16-bit register */ + PARAM_REG2_8, /* 8-bit register */ + PARAM_REG2_16, /* 16-bit register */ + PARAM_RM8, /* 8-bit memory or register */ + PARAM_RM16, /* 16-bit memory or register */ + PARAM_RMPTR8, /* 8-bit memory or register */ + PARAM_RMPTR16, /* 16-bit memory or register */ + PARAM_I3, /* 3-bit immediate */ + PARAM_I4, /* 4-bit immediate */ + PARAM_I8, /* 8-bit signed immediate */ + PARAM_I16, /* 16-bit signed immediate */ + PARAM_UI8, /* 8-bit unsigned immediate */ + PARAM_IMM, /* 16-bit immediate */ + PARAM_ADDR, /* 16:16 address */ + PARAM_REL8, /* 8-bit PC-relative displacement */ + PARAM_REL16, /* 16-bit PC-relative displacement */ + PARAM_MEM_OFFS, /* 16-bit mem offset */ + PARAM_SREG, /* segment register */ + PARAM_SFREG, /* V25/V35 special function register */ + PARAM_1, /* used by shift/rotate instructions */ PARAM_AL, PARAM_CL, PARAM_DL, @@ -94,726 +94,726 @@ static const UINT8 *opcode_ptr_base; static const I386_OPCODE necv_opcode_table1[256] = { // 0x00 - {"add", MODRM, PARAM_RM8, PARAM_REG8, 0 }, - {"add", MODRM, PARAM_RM16, PARAM_REG16, 0 }, - {"add", MODRM, PARAM_REG8, PARAM_RM8, 0 }, - {"add", MODRM, PARAM_REG16, PARAM_RM16, 0 }, - {"add", 0, PARAM_AL, PARAM_UI8, 0 }, - {"add", 0, PARAM_AW, PARAM_IMM, 0 }, - {"push ds1", 0, 0, 0, 0 }, - {"pop ds1", 0, 0, 0, 0 }, - {"or", MODRM, PARAM_RM8, PARAM_REG8, 0 }, - {"or", MODRM, PARAM_RM16, PARAM_REG16, 0 }, - {"or", MODRM, PARAM_REG8, PARAM_RM8, 0 }, - {"or", MODRM, PARAM_REG16, PARAM_RM16, 0 }, - {"or", 0, PARAM_AL, PARAM_UI8, 0 }, - {"or", 0, PARAM_AW, PARAM_IMM, 0 }, - {"push ps", 0, 0, 0, 0 }, - {"two_byte", TWO_BYTE, 0, 0, 0 }, + {"add", MODRM, PARAM_RM8, PARAM_REG8, 0 }, + {"add", MODRM, PARAM_RM16, PARAM_REG16, 0 }, + {"add", MODRM, PARAM_REG8, PARAM_RM8, 0 }, + {"add", MODRM, PARAM_REG16, PARAM_RM16, 0 }, + {"add", 0, PARAM_AL, PARAM_UI8, 0 }, + {"add", 0, PARAM_AW, PARAM_IMM, 0 }, + {"push ds1", 0, 0, 0, 0 }, + {"pop ds1", 0, 0, 0, 0 }, + {"or", MODRM, PARAM_RM8, PARAM_REG8, 0 }, + {"or", MODRM, PARAM_RM16, PARAM_REG16, 0 }, + {"or", MODRM, PARAM_REG8, PARAM_RM8, 0 }, + {"or", MODRM, PARAM_REG16, PARAM_RM16, 0 }, + {"or", 0, PARAM_AL, PARAM_UI8, 0 }, + {"or", 0, PARAM_AW, PARAM_IMM, 0 }, + {"push ps", 0, 0, 0, 0 }, + {"two_byte", TWO_BYTE, 0, 0, 0 }, // 0x10 - {"addc", MODRM, PARAM_RM8, PARAM_REG8, 0 }, - {"addc", MODRM, PARAM_RM16, PARAM_REG16, 0 }, - {"addc", MODRM, PARAM_REG8, PARAM_RM8, 0 }, - {"addc", MODRM, PARAM_REG16, PARAM_RM16, 0 }, - {"addc", 0, PARAM_AL, PARAM_UI8, 0 }, - {"addc", 0, PARAM_AW, PARAM_IMM, 0 }, - {"push ss", 0, 0, 0, 0 }, - {"pop ss", 0, 0, 0, 0 }, - {"subc", MODRM, PARAM_RM8, PARAM_REG8, 0 }, - {"subc", MODRM, PARAM_RM16, PARAM_REG16, 0 }, - {"subc", MODRM, PARAM_REG8, PARAM_RM8, 0 }, - {"subc", MODRM, PARAM_REG16, PARAM_RM16, 0 }, - {"subc", 0, PARAM_AL, PARAM_UI8, 0 }, - {"subc", 0, PARAM_AW, PARAM_IMM, 0 }, - {"push ds0", 0, 0, 0, 0 }, - {"pop ds0", 0, 0, 0, 0 }, + {"addc", MODRM, PARAM_RM8, PARAM_REG8, 0 }, + {"addc", MODRM, PARAM_RM16, PARAM_REG16, 0 }, + {"addc", MODRM, PARAM_REG8, PARAM_RM8, 0 }, + {"addc", MODRM, PARAM_REG16, PARAM_RM16, 0 }, + {"addc", 0, PARAM_AL, PARAM_UI8, 0 }, + {"addc", 0, PARAM_AW, PARAM_IMM, 0 }, + {"push ss", 0, 0, 0, 0 }, + {"pop ss", 0, 0, 0, 0 }, + {"subc", MODRM, PARAM_RM8, PARAM_REG8, 0 }, + {"subc", MODRM, PARAM_RM16, PARAM_REG16, 0 }, + {"subc", MODRM, PARAM_REG8, PARAM_RM8, 0 }, + {"subc", MODRM, PARAM_REG16, PARAM_RM16, 0 }, + {"subc", 0, PARAM_AL, PARAM_UI8, 0 }, + {"subc", 0, PARAM_AW, PARAM_IMM, 0 }, + {"push ds0", 0, 0, 0, 0 }, + {"pop ds0", 0, 0, 0, 0 }, // 0x20 - {"and", MODRM, PARAM_RM8, PARAM_REG8, 0 }, - {"and", MODRM, PARAM_RM16, PARAM_REG16, 0 }, - {"and", MODRM, PARAM_REG8, PARAM_RM8, 0 }, - {"and", MODRM, PARAM_REG16, PARAM_RM16, 0 }, - {"and", 0, PARAM_AL, PARAM_UI8, 0 }, - {"and", 0, PARAM_AW, PARAM_IMM, 0 }, - {"ds1:", SEG_DS1, 0, 0, 0 }, - {"adj4a", 0, 0, 0, 0 }, - {"sub", MODRM, PARAM_RM8, PARAM_REG8, 0 }, - {"sub", MODRM, PARAM_RM16, PARAM_REG16, 0 }, - {"sub", MODRM, PARAM_REG8, PARAM_RM8, 0 }, - {"sub", MODRM, PARAM_REG16, PARAM_RM16, 0 }, - {"sub", 0, PARAM_AL, PARAM_UI8, 0 }, - {"sub", 0, PARAM_AW, PARAM_IMM, 0 }, - {"ps:", SEG_PS, 0, 0, 0 }, - {"adj4s", 0, 0, 0, 0 }, + {"and", MODRM, PARAM_RM8, PARAM_REG8, 0 }, + {"and", MODRM, PARAM_RM16, PARAM_REG16, 0 }, + {"and", MODRM, PARAM_REG8, PARAM_RM8, 0 }, + {"and", MODRM, PARAM_REG16, PARAM_RM16, 0 }, + {"and", 0, PARAM_AL, PARAM_UI8, 0 }, + {"and", 0, PARAM_AW, PARAM_IMM, 0 }, + {"ds1:", SEG_DS1, 0, 0, 0 }, + {"adj4a", 0, 0, 0, 0 }, + {"sub", MODRM, PARAM_RM8, PARAM_REG8, 0 }, + {"sub", MODRM, PARAM_RM16, PARAM_REG16, 0 }, + {"sub", MODRM, PARAM_REG8, PARAM_RM8, 0 }, + {"sub", MODRM, PARAM_REG16, PARAM_RM16, 0 }, + {"sub", 0, PARAM_AL, PARAM_UI8, 0 }, + {"sub", 0, PARAM_AW, PARAM_IMM, 0 }, + {"ps:", SEG_PS, 0, 0, 0 }, + {"adj4s", 0, 0, 0, 0 }, // 0x30 - {"xor", MODRM, PARAM_RM8, PARAM_REG8, 0 }, - {"xor", MODRM, PARAM_RM16, PARAM_REG16, 0 }, - {"xor", MODRM, PARAM_REG8, PARAM_RM8, 0 }, - {"xor", MODRM, PARAM_REG16, PARAM_RM16, 0 }, - {"xor", 0, PARAM_AL, PARAM_UI8, 0 }, - {"xor", 0, PARAM_AW, PARAM_IMM, 0 }, - {"ss:", SEG_SS, 0, 0, 0 }, - {"adjba", 0, 0, 0, 0 }, - {"cmp", MODRM, PARAM_RM8, PARAM_REG8, 0 }, - {"cmp", MODRM, PARAM_RM16, PARAM_REG16, 0 }, - {"cmp", MODRM, PARAM_REG8, PARAM_RM8, 0 }, - {"cmp", MODRM, PARAM_REG16, PARAM_RM16, 0 }, - {"cmp", 0, PARAM_AL, PARAM_UI8, 0 }, - {"cmp", 0, PARAM_AW, PARAM_IMM, 0 }, - {"ds0:", SEG_DS0, 0, 0, 0 }, - {"adjbs", 0, 0, 0, 0 }, + {"xor", MODRM, PARAM_RM8, PARAM_REG8, 0 }, + {"xor", MODRM, PARAM_RM16, PARAM_REG16, 0 }, + {"xor", MODRM, PARAM_REG8, PARAM_RM8, 0 }, + {"xor", MODRM, PARAM_REG16, PARAM_RM16, 0 }, + {"xor", 0, PARAM_AL, PARAM_UI8, 0 }, + {"xor", 0, PARAM_AW, PARAM_IMM, 0 }, + {"ss:", SEG_SS, 0, 0, 0 }, + {"adjba", 0, 0, 0, 0 }, + {"cmp", MODRM, PARAM_RM8, PARAM_REG8, 0 }, + {"cmp", MODRM, PARAM_RM16, PARAM_REG16, 0 }, + {"cmp", MODRM, PARAM_REG8, PARAM_RM8, 0 }, + {"cmp", MODRM, PARAM_REG16, PARAM_RM16, 0 }, + {"cmp", 0, PARAM_AL, PARAM_UI8, 0 }, + {"cmp", 0, PARAM_AW, PARAM_IMM, 0 }, + {"ds0:", SEG_DS0, 0, 0, 0 }, + {"adjbs", 0, 0, 0, 0 }, // 0x40 - {"inc", 0, PARAM_AW, 0, 0 }, - {"inc", 0, PARAM_CW, 0, 0 }, - {"inc", 0, PARAM_DW, 0, 0 }, - {"inc", 0, PARAM_BW, 0, 0 }, - {"inc", 0, PARAM_SP, 0, 0 }, - {"inc", 0, PARAM_BP, 0, 0 }, - {"inc", 0, PARAM_IX, 0, 0 }, - {"inc", 0, PARAM_IY, 0, 0 }, - {"dec", 0, PARAM_AW, 0, 0 }, - {"dec", 0, PARAM_CW, 0, 0 }, - {"dec", 0, PARAM_DW, 0, 0 }, - {"dec", 0, PARAM_BW, 0, 0 }, - {"dec", 0, PARAM_SP, 0, 0 }, - {"dec", 0, PARAM_BP, 0, 0 }, - {"dec", 0, PARAM_IX, 0, 0 }, - {"dec", 0, PARAM_IY, 0, 0 }, + {"inc", 0, PARAM_AW, 0, 0 }, + {"inc", 0, PARAM_CW, 0, 0 }, + {"inc", 0, PARAM_DW, 0, 0 }, + {"inc", 0, PARAM_BW, 0, 0 }, + {"inc", 0, PARAM_SP, 0, 0 }, + {"inc", 0, PARAM_BP, 0, 0 }, + {"inc", 0, PARAM_IX, 0, 0 }, + {"inc", 0, PARAM_IY, 0, 0 }, + {"dec", 0, PARAM_AW, 0, 0 }, + {"dec", 0, PARAM_CW, 0, 0 }, + {"dec", 0, PARAM_DW, 0, 0 }, + {"dec", 0, PARAM_BW, 0, 0 }, + {"dec", 0, PARAM_SP, 0, 0 }, + {"dec", 0, PARAM_BP, 0, 0 }, + {"dec", 0, PARAM_IX, 0, 0 }, + {"dec", 0, PARAM_IY, 0, 0 }, // 0x50 - {"push", 0, PARAM_AW, 0, 0 }, - {"push", 0, PARAM_CW, 0, 0 }, - {"push", 0, PARAM_DW, 0, 0 }, - {"push", 0, PARAM_BW, 0, 0 }, - {"push", 0, PARAM_SP, 0, 0 }, - {"push", 0, PARAM_BP, 0, 0 }, - {"push", 0, PARAM_IX, 0, 0 }, - {"push", 0, PARAM_IY, 0, 0 }, - {"pop", 0, PARAM_AW, 0, 0 }, - {"pop", 0, PARAM_CW, 0, 0 }, - {"pop", 0, PARAM_DW, 0, 0 }, - {"pop", 0, PARAM_BW, 0, 0 }, - {"pop", 0, PARAM_SP, 0, 0 }, - {"pop", 0, PARAM_BP, 0, 0 }, - {"pop", 0, PARAM_IX, 0, 0 }, - {"pop", 0, PARAM_IY, 0, 0 }, + {"push", 0, PARAM_AW, 0, 0 }, + {"push", 0, PARAM_CW, 0, 0 }, + {"push", 0, PARAM_DW, 0, 0 }, + {"push", 0, PARAM_BW, 0, 0 }, + {"push", 0, PARAM_SP, 0, 0 }, + {"push", 0, PARAM_BP, 0, 0 }, + {"push", 0, PARAM_IX, 0, 0 }, + {"push", 0, PARAM_IY, 0, 0 }, + {"pop", 0, PARAM_AW, 0, 0 }, + {"pop", 0, PARAM_CW, 0, 0 }, + {"pop", 0, PARAM_DW, 0, 0 }, + {"pop", 0, PARAM_BW, 0, 0 }, + {"pop", 0, PARAM_SP, 0, 0 }, + {"pop", 0, PARAM_BP, 0, 0 }, + {"pop", 0, PARAM_IX, 0, 0 }, + {"pop", 0, PARAM_IY, 0, 0 }, // 0x60 - {"push r", 0, 0, 0, 0 }, - {"pop r", 0, 0, 0, 0 }, - {"chkind", MODRM, PARAM_REG16, PARAM_RM16, 0 }, - {"brkn", 0, PARAM_UI8, 0, 0, DASMFLAG_STEP_OVER}, /* V25S/V35S only */ - {"repnc", PREFIX, 0, 0, 0 }, - {"repc", PREFIX, 0, 0, 0 }, - {"fpo2 0", 0, 0, 0, 0 }, /* for a coprocessor that was never made */ - {"fpo2 1", 0, 0, 0, 0 }, /* for a coprocessor that was never made */ - {"push", 0, PARAM_IMM, 0, 0 }, - {"mul", MODRM, PARAM_REG16, PARAM_RM16, PARAM_IMM }, - {"push", 0, PARAM_I8, 0, 0 }, - {"mul", MODRM, PARAM_REG16, PARAM_RM16, PARAM_I8 }, - {"inmb", 0, 0, 0, 0 }, - {"inmw", 0, 0, 0, 0 }, - {"outmb", 0, 0, 0, 0 }, - {"outmw", 0, 0, 0, 0 }, + {"push r", 0, 0, 0, 0 }, + {"pop r", 0, 0, 0, 0 }, + {"chkind", MODRM, PARAM_REG16, PARAM_RM16, 0 }, + {"brkn", 0, PARAM_UI8, 0, 0, DASMFLAG_STEP_OVER}, /* V25S/V35S only */ + {"repnc", PREFIX, 0, 0, 0 }, + {"repc", PREFIX, 0, 0, 0 }, + {"fpo2 0", 0, 0, 0, 0 }, /* for a coprocessor that was never made */ + {"fpo2 1", 0, 0, 0, 0 }, /* for a coprocessor that was never made */ + {"push", 0, PARAM_IMM, 0, 0 }, + {"mul", MODRM, PARAM_REG16, PARAM_RM16, PARAM_IMM }, + {"push", 0, PARAM_I8, 0, 0 }, + {"mul", MODRM, PARAM_REG16, PARAM_RM16, PARAM_I8 }, + {"inmb", 0, 0, 0, 0 }, + {"inmw", 0, 0, 0, 0 }, + {"outmb", 0, 0, 0, 0 }, + {"outmw", 0, 0, 0, 0 }, // 0x70 - {"bv", 0, PARAM_REL8, 0, 0 }, - {"bnv", 0, PARAM_REL8, 0, 0 }, - {"bc", 0, PARAM_REL8, 0, 0 }, - {"bnc", 0, PARAM_REL8, 0, 0 }, - {"be", 0, PARAM_REL8, 0, 0 }, - {"bne", 0, PARAM_REL8, 0, 0 }, - {"bnh", 0, PARAM_REL8, 0, 0 }, - {"bh", 0, PARAM_REL8, 0, 0 }, - {"bn", 0, PARAM_REL8, 0, 0 }, - {"bp", 0, PARAM_REL8, 0, 0 }, - {"bpe", 0, PARAM_REL8, 0, 0 }, - {"bpo", 0, PARAM_REL8, 0, 0 }, - {"blt", 0, PARAM_REL8, 0, 0 }, - {"bge", 0, PARAM_REL8, 0, 0 }, - {"ble", 0, PARAM_REL8, 0, 0 }, - {"bgt", 0, PARAM_REL8, 0, 0 }, + {"bv", 0, PARAM_REL8, 0, 0 }, + {"bnv", 0, PARAM_REL8, 0, 0 }, + {"bc", 0, PARAM_REL8, 0, 0 }, + {"bnc", 0, PARAM_REL8, 0, 0 }, + {"be", 0, PARAM_REL8, 0, 0 }, + {"bne", 0, PARAM_REL8, 0, 0 }, + {"bnh", 0, PARAM_REL8, 0, 0 }, + {"bh", 0, PARAM_REL8, 0, 0 }, + {"bn", 0, PARAM_REL8, 0, 0 }, + {"bp", 0, PARAM_REL8, 0, 0 }, + {"bpe", 0, PARAM_REL8, 0, 0 }, + {"bpo", 0, PARAM_REL8, 0, 0 }, + {"blt", 0, PARAM_REL8, 0, 0 }, + {"bge", 0, PARAM_REL8, 0, 0 }, + {"ble", 0, PARAM_REL8, 0, 0 }, + {"bgt", 0, PARAM_REL8, 0, 0 }, // 0x80 - {"immb", GROUP, 0, 0, 0 }, - {"immw", GROUP, 0, 0, 0 }, - {"immb", GROUP, 0, 0, 0 }, - {"immws", GROUP, 0, 0, 0 }, - {"test", MODRM, PARAM_RM8, PARAM_REG8, 0 }, - {"test", MODRM, PARAM_RM16, PARAM_REG16, 0 }, - {"xch", MODRM, PARAM_REG8, PARAM_RM8, 0 }, - {"xch", MODRM, PARAM_REG16, PARAM_RM16, 0 }, - {"mov", MODRM, PARAM_RM8, PARAM_REG8, 0 }, - {"mov", MODRM, PARAM_RM16, PARAM_REG16, 0 }, - {"mov", MODRM, PARAM_REG8, PARAM_RM8, 0 }, - {"mov", MODRM, PARAM_REG16, PARAM_RM16, 0 }, - {"mov", MODRM, PARAM_RM16, PARAM_SREG, 0 }, - {"ldea", MODRM, PARAM_REG16, PARAM_RM16, 0 }, - {"mov", MODRM, PARAM_SREG, PARAM_RM16, 0 }, - {"pop", MODRM, PARAM_RM16, 0, 0 }, + {"immb", GROUP, 0, 0, 0 }, + {"immw", GROUP, 0, 0, 0 }, + {"immb", GROUP, 0, 0, 0 }, + {"immws", GROUP, 0, 0, 0 }, + {"test", MODRM, PARAM_RM8, PARAM_REG8, 0 }, + {"test", MODRM, PARAM_RM16, PARAM_REG16, 0 }, + {"xch", MODRM, PARAM_REG8, PARAM_RM8, 0 }, + {"xch", MODRM, PARAM_REG16, PARAM_RM16, 0 }, + {"mov", MODRM, PARAM_RM8, PARAM_REG8, 0 }, + {"mov", MODRM, PARAM_RM16, PARAM_REG16, 0 }, + {"mov", MODRM, PARAM_REG8, PARAM_RM8, 0 }, + {"mov", MODRM, PARAM_REG16, PARAM_RM16, 0 }, + {"mov", MODRM, PARAM_RM16, PARAM_SREG, 0 }, + {"ldea", MODRM, PARAM_REG16, PARAM_RM16, 0 }, + {"mov", MODRM, PARAM_SREG, PARAM_RM16, 0 }, + {"pop", MODRM, PARAM_RM16, 0, 0 }, // 0x90 - {"nop", 0, 0, 0, 0 }, - {"xch", 0, PARAM_AW, PARAM_CW, 0 }, - {"xch", 0, PARAM_AW, PARAM_DW, 0 }, - {"xch", 0, PARAM_AW, PARAM_BW, 0 }, - {"xch", 0, PARAM_AW, PARAM_SP, 0 }, - {"xch", 0, PARAM_AW, PARAM_BP, 0 }, - {"xch", 0, PARAM_AW, PARAM_IX, 0 }, - {"xch", 0, PARAM_AW, PARAM_IY, 0 }, - {"cvtbw", 0, 0, 0, 0 }, - {"cvtwl", 0, 0, 0, 0 }, - {"call", 0, PARAM_ADDR, 0, 0, DASMFLAG_STEP_OVER}, - {"poll", 0, 0, 0, 0 }, - {"push psw", 0, 0, 0, 0 }, - {"pop psw", 0, 0, 0, 0 }, - {"mov psw,ah", 0, 0, 0, 0 }, - {"mov ah,psw", 0, 0, 0, 0 }, + {"nop", 0, 0, 0, 0 }, + {"xch", 0, PARAM_AW, PARAM_CW, 0 }, + {"xch", 0, PARAM_AW, PARAM_DW, 0 }, + {"xch", 0, PARAM_AW, PARAM_BW, 0 }, + {"xch", 0, PARAM_AW, PARAM_SP, 0 }, + {"xch", 0, PARAM_AW, PARAM_BP, 0 }, + {"xch", 0, PARAM_AW, PARAM_IX, 0 }, + {"xch", 0, PARAM_AW, PARAM_IY, 0 }, + {"cvtbw", 0, 0, 0, 0 }, + {"cvtwl", 0, 0, 0, 0 }, + {"call", 0, PARAM_ADDR, 0, 0, DASMFLAG_STEP_OVER}, + {"poll", 0, 0, 0, 0 }, + {"push psw", 0, 0, 0, 0 }, + {"pop psw", 0, 0, 0, 0 }, + {"mov psw,ah", 0, 0, 0, 0 }, + {"mov ah,psw", 0, 0, 0, 0 }, // 0xa0 - {"mov", 0, PARAM_AL, PARAM_MEM_OFFS, 0 }, - {"mov", 0, PARAM_AW, PARAM_MEM_OFFS, 0 }, - {"mov", 0, PARAM_MEM_OFFS, PARAM_AL, 0 }, - {"mov", 0, PARAM_MEM_OFFS, PARAM_AW, 0 }, - {"movbkb", 0, 0, 0, 0 }, - {"movbkw", 0, 0, 0, 0 }, - {"cmpbkb", 0, 0, 0, 0 }, - {"cmpbkw", 0, 0, 0, 0 }, - {"test", 0, PARAM_AL, PARAM_UI8, 0 }, - {"test", 0, PARAM_AW, PARAM_IMM, 0 }, - {"stmb", 0, 0, 0, 0 }, - {"stmw", 0, 0, 0, 0 }, - {"ldmb", 0, 0, 0, 0 }, - {"ldmw", 0, 0, 0, 0 }, - {"cmpmb", 0, 0, 0, 0 }, - {"cmpmw", 0, 0, 0, 0 }, + {"mov", 0, PARAM_AL, PARAM_MEM_OFFS, 0 }, + {"mov", 0, PARAM_AW, PARAM_MEM_OFFS, 0 }, + {"mov", 0, PARAM_MEM_OFFS, PARAM_AL, 0 }, + {"mov", 0, PARAM_MEM_OFFS, PARAM_AW, 0 }, + {"movbkb", 0, 0, 0, 0 }, + {"movbkw", 0, 0, 0, 0 }, + {"cmpbkb", 0, 0, 0, 0 }, + {"cmpbkw", 0, 0, 0, 0 }, + {"test", 0, PARAM_AL, PARAM_UI8, 0 }, + {"test", 0, PARAM_AW, PARAM_IMM, 0 }, + {"stmb", 0, 0, 0, 0 }, + {"stmw", 0, 0, 0, 0 }, + {"ldmb", 0, 0, 0, 0 }, + {"ldmw", 0, 0, 0, 0 }, + {"cmpmb", 0, 0, 0, 0 }, + {"cmpmw", 0, 0, 0, 0 }, // 0xb0 - {"mov", 0, PARAM_AL, PARAM_UI8, 0 }, - {"mov", 0, PARAM_CL, PARAM_UI8, 0 }, - {"mov", 0, PARAM_DL, PARAM_UI8, 0 }, - {"mov", 0, PARAM_BL, PARAM_UI8, 0 }, - {"mov", 0, PARAM_AH, PARAM_UI8, 0 }, - {"mov", 0, PARAM_CH, PARAM_UI8, 0 }, - {"mov", 0, PARAM_DH, PARAM_UI8, 0 }, - {"mov", 0, PARAM_BH, PARAM_UI8, 0 }, - {"mov", 0, PARAM_AW, PARAM_IMM, 0 }, - {"mov", 0, PARAM_CW, PARAM_IMM, 0 }, - {"mov", 0, PARAM_DW, PARAM_IMM, 0 }, - {"mov", 0, PARAM_BW, PARAM_IMM, 0 }, - {"mov", 0, PARAM_SP, PARAM_IMM, 0 }, - {"mov", 0, PARAM_BP, PARAM_IMM, 0 }, - {"mov", 0, PARAM_IX, PARAM_IMM, 0 }, - {"mov", 0, PARAM_IY, PARAM_IMM, 0 }, + {"mov", 0, PARAM_AL, PARAM_UI8, 0 }, + {"mov", 0, PARAM_CL, PARAM_UI8, 0 }, + {"mov", 0, PARAM_DL, PARAM_UI8, 0 }, + {"mov", 0, PARAM_BL, PARAM_UI8, 0 }, + {"mov", 0, PARAM_AH, PARAM_UI8, 0 }, + {"mov", 0, PARAM_CH, PARAM_UI8, 0 }, + {"mov", 0, PARAM_DH, PARAM_UI8, 0 }, + {"mov", 0, PARAM_BH, PARAM_UI8, 0 }, + {"mov", 0, PARAM_AW, PARAM_IMM, 0 }, + {"mov", 0, PARAM_CW, PARAM_IMM, 0 }, + {"mov", 0, PARAM_DW, PARAM_IMM, 0 }, + {"mov", 0, PARAM_BW, PARAM_IMM, 0 }, + {"mov", 0, PARAM_SP, PARAM_IMM, 0 }, + {"mov", 0, PARAM_BP, PARAM_IMM, 0 }, + {"mov", 0, PARAM_IX, PARAM_IMM, 0 }, + {"mov", 0, PARAM_IY, PARAM_IMM, 0 }, // 0xc0 - {"shiftbi", GROUP, 0, 0, 0 }, - {"shiftwi", GROUP, 0, 0, 0 }, - {"ret", 0, PARAM_I16, 0, 0, DASMFLAG_STEP_OUT}, - {"ret", 0, 0, 0, 0, DASMFLAG_STEP_OUT}, - {"mov ds1,", MODRM, PARAM_REG16, PARAM_RM16, 0 }, - {"mov ds0,", MODRM, PARAM_REG16, PARAM_RM16, 0 }, - {"mov", MODRM, PARAM_RMPTR8, PARAM_UI8, 0 }, - {"mov", MODRM, PARAM_RMPTR16, PARAM_IMM, 0 }, - {"prepare", 0, PARAM_I16, PARAM_UI8, 0 }, - {"dispose", 0, 0, 0, 0 }, - {"retf", 0, PARAM_I16, 0, 0, DASMFLAG_STEP_OUT}, - {"retf", 0, 0, 0, 0, DASMFLAG_STEP_OUT}, - {"brk 3", 0, 0, 0, 0, DASMFLAG_STEP_OVER}, - {"brk", 0, PARAM_UI8, 0, 0, DASMFLAG_STEP_OVER}, - {"brkv", 0, 0, 0, 0 }, - {"reti", 0, 0, 0, 0, DASMFLAG_STEP_OUT}, + {"shiftbi", GROUP, 0, 0, 0 }, + {"shiftwi", GROUP, 0, 0, 0 }, + {"ret", 0, PARAM_I16, 0, 0, DASMFLAG_STEP_OUT}, + {"ret", 0, 0, 0, 0, DASMFLAG_STEP_OUT}, + {"mov ds1,", MODRM, PARAM_REG16, PARAM_RM16, 0 }, + {"mov ds0,", MODRM, PARAM_REG16, PARAM_RM16, 0 }, + {"mov", MODRM, PARAM_RMPTR8, PARAM_UI8, 0 }, + {"mov", MODRM, PARAM_RMPTR16, PARAM_IMM, 0 }, + {"prepare", 0, PARAM_I16, PARAM_UI8, 0 }, + {"dispose", 0, 0, 0, 0 }, + {"retf", 0, PARAM_I16, 0, 0, DASMFLAG_STEP_OUT}, + {"retf", 0, 0, 0, 0, DASMFLAG_STEP_OUT}, + {"brk 3", 0, 0, 0, 0, DASMFLAG_STEP_OVER}, + {"brk", 0, PARAM_UI8, 0, 0, DASMFLAG_STEP_OVER}, + {"brkv", 0, 0, 0, 0 }, + {"reti", 0, 0, 0, 0, DASMFLAG_STEP_OUT}, // 0xd0 - {"shiftb", GROUP, 0, 0, 0 }, - {"shiftw", GROUP, 0, 0, 0 }, - {"shiftbv", GROUP, 0, 0, 0 }, - {"shiftwv", GROUP, 0, 0, 0 }, - {"cvtbd", 0, PARAM_I8, 0, 0 }, - {"cvtdb", 0, PARAM_I8, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"trans", 0, 0, 0, 0 }, - {"escape", FPU, 0, 0, 0 }, - {"escape", FPU, 0, 0, 0 }, - {"escape", FPU, 0, 0, 0 }, - {"escape", FPU, 0, 0, 0 }, - {"escape", FPU, 0, 0, 0 }, - {"escape", FPU, 0, 0, 0 }, - {"escape", FPU, 0, 0, 0 }, - {"escape", FPU, 0, 0, 0 }, + {"shiftb", GROUP, 0, 0, 0 }, + {"shiftw", GROUP, 0, 0, 0 }, + {"shiftbv", GROUP, 0, 0, 0 }, + {"shiftwv", GROUP, 0, 0, 0 }, + {"cvtbd", 0, PARAM_I8, 0, 0 }, + {"cvtdb", 0, PARAM_I8, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"trans", 0, 0, 0, 0 }, + {"escape", FPU, 0, 0, 0 }, + {"escape", FPU, 0, 0, 0 }, + {"escape", FPU, 0, 0, 0 }, + {"escape", FPU, 0, 0, 0 }, + {"escape", FPU, 0, 0, 0 }, + {"escape", FPU, 0, 0, 0 }, + {"escape", FPU, 0, 0, 0 }, + {"escape", FPU, 0, 0, 0 }, // 0xe0 - {"dbnzne", 0, PARAM_REL8, 0, 0, DASMFLAG_STEP_OVER}, - {"dbnze", 0, PARAM_REL8, 0, 0, DASMFLAG_STEP_OVER}, - {"dbnz", 0, PARAM_REL8, 0, 0, DASMFLAG_STEP_OVER}, - {"bcwz", 0, PARAM_REL8, 0, 0 }, - {"in", 0, PARAM_AL, PARAM_UI8, 0 }, - {"in", 0, PARAM_AW, PARAM_UI8, 0 }, - {"out", 0, PARAM_UI8, PARAM_AL, 0 }, - {"out", 0, PARAM_UI8, PARAM_AW, 0 }, - {"call", 0, PARAM_REL16, 0, 0, DASMFLAG_STEP_OVER}, - {"br", 0, PARAM_REL16, 0, 0 }, - {"br", 0, PARAM_ADDR, 0, 0 }, - {"br", 0, PARAM_REL8, 0, 0 }, - {"in", 0, PARAM_AL, PARAM_DW, 0 }, - {"in", 0, PARAM_AW, PARAM_DW, 0 }, - {"out", 0, PARAM_DW, PARAM_AL, 0 }, - {"out", 0, PARAM_DW, PARAM_AW, 0 }, + {"dbnzne", 0, PARAM_REL8, 0, 0, DASMFLAG_STEP_OVER}, + {"dbnze", 0, PARAM_REL8, 0, 0, DASMFLAG_STEP_OVER}, + {"dbnz", 0, PARAM_REL8, 0, 0, DASMFLAG_STEP_OVER}, + {"bcwz", 0, PARAM_REL8, 0, 0 }, + {"in", 0, PARAM_AL, PARAM_UI8, 0 }, + {"in", 0, PARAM_AW, PARAM_UI8, 0 }, + {"out", 0, PARAM_UI8, PARAM_AL, 0 }, + {"out", 0, PARAM_UI8, PARAM_AW, 0 }, + {"call", 0, PARAM_REL16, 0, 0, DASMFLAG_STEP_OVER}, + {"br", 0, PARAM_REL16, 0, 0 }, + {"br", 0, PARAM_ADDR, 0, 0 }, + {"br", 0, PARAM_REL8, 0, 0 }, + {"in", 0, PARAM_AL, PARAM_DW, 0 }, + {"in", 0, PARAM_AW, PARAM_DW, 0 }, + {"out", 0, PARAM_DW, PARAM_AL, 0 }, + {"out", 0, PARAM_DW, PARAM_AW, 0 }, // 0xf0 - {"buslock", PREFIX, 0, 0, 0 }, - {"brks", 0, PARAM_UI8, 0, 0, DASMFLAG_STEP_OVER}, /* V25S/V35S only */ - {"repne", PREFIX, 0, 0, 0 }, - {"rep", PREFIX, 0, 0, 0 }, - {"halt", 0, 0, 0, 0 }, - {"not1 cy", 0, 0, 0, 0 }, - {"group1b", GROUP, 0, 0, 0 }, - {"group1w", GROUP, 0, 0, 0 }, - {"clr1 cy", 0, 0, 0, 0 }, - {"set1 cy", 0, 0, 0, 0 }, - {"di", 0, 0, 0, 0 }, - {"ei", 0, 0, 0, 0 }, - {"clr1 dir", 0, 0, 0, 0 }, - {"set1 dir", 0, 0, 0, 0 }, - {"group2b", GROUP, 0, 0, 0 }, - {"group2w", GROUP, 0, 0, 0 } + {"buslock", PREFIX, 0, 0, 0 }, + {"brks", 0, PARAM_UI8, 0, 0, DASMFLAG_STEP_OVER}, /* V25S/V35S only */ + {"repne", PREFIX, 0, 0, 0 }, + {"rep", PREFIX, 0, 0, 0 }, + {"halt", 0, 0, 0, 0 }, + {"not1 cy", 0, 0, 0, 0 }, + {"group1b", GROUP, 0, 0, 0 }, + {"group1w", GROUP, 0, 0, 0 }, + {"clr1 cy", 0, 0, 0, 0 }, + {"set1 cy", 0, 0, 0, 0 }, + {"di", 0, 0, 0, 0 }, + {"ei", 0, 0, 0, 0 }, + {"clr1 dir", 0, 0, 0, 0 }, + {"set1 dir", 0, 0, 0, 0 }, + {"group2b", GROUP, 0, 0, 0 }, + {"group2w", GROUP, 0, 0, 0 } }; static const I386_OPCODE necv_opcode_table2[256] = { // 0x00 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x10 - {"test1", MODRM, PARAM_RMPTR8, PARAM_CL, 0 }, - {"test1", MODRM, PARAM_RMPTR16, PARAM_CL, 0 }, - {"clr1", MODRM, PARAM_RMPTR8, PARAM_CL, 0 }, - {"clr1", MODRM, PARAM_RMPTR16, PARAM_CL, 0 }, - {"set1", MODRM, PARAM_RMPTR8, PARAM_CL, 0 }, - {"set1", MODRM, PARAM_RMPTR16, PARAM_CL, 0 }, - {"not1", MODRM, PARAM_RMPTR8, PARAM_CL, 0 }, - {"not1", MODRM, PARAM_RMPTR16, PARAM_CL, 0 }, - {"test1", MODRM, PARAM_RMPTR8, PARAM_I3, 0 }, - {"test1", MODRM, PARAM_RMPTR16, PARAM_I4, 0 }, - {"clr1", MODRM, PARAM_RMPTR8, PARAM_I3, 0 }, - {"clr1", MODRM, PARAM_RMPTR16, PARAM_I4, 0 }, - {"set1", MODRM, PARAM_RMPTR8, PARAM_I3, 0 }, - {"set1", MODRM, PARAM_RMPTR16, PARAM_I4, 0 }, - {"not1", MODRM, PARAM_RMPTR8, PARAM_I3, 0 }, - {"not1", MODRM, PARAM_RMPTR16, PARAM_I4, 0 }, + {"test1", MODRM, PARAM_RMPTR8, PARAM_CL, 0 }, + {"test1", MODRM, PARAM_RMPTR16, PARAM_CL, 0 }, + {"clr1", MODRM, PARAM_RMPTR8, PARAM_CL, 0 }, + {"clr1", MODRM, PARAM_RMPTR16, PARAM_CL, 0 }, + {"set1", MODRM, PARAM_RMPTR8, PARAM_CL, 0 }, + {"set1", MODRM, PARAM_RMPTR16, PARAM_CL, 0 }, + {"not1", MODRM, PARAM_RMPTR8, PARAM_CL, 0 }, + {"not1", MODRM, PARAM_RMPTR16, PARAM_CL, 0 }, + {"test1", MODRM, PARAM_RMPTR8, PARAM_I3, 0 }, + {"test1", MODRM, PARAM_RMPTR16, PARAM_I4, 0 }, + {"clr1", MODRM, PARAM_RMPTR8, PARAM_I3, 0 }, + {"clr1", MODRM, PARAM_RMPTR16, PARAM_I4, 0 }, + {"set1", MODRM, PARAM_RMPTR8, PARAM_I3, 0 }, + {"set1", MODRM, PARAM_RMPTR16, PARAM_I4, 0 }, + {"not1", MODRM, PARAM_RMPTR8, PARAM_I3, 0 }, + {"not1", MODRM, PARAM_RMPTR16, PARAM_I4, 0 }, // 0x20 - {"add4s", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"sub4s", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"movspa", 0, 0, 0, 0 }, /* V25/V35 only */ - {"cmp4s", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"rol4", MODRM, PARAM_RMPTR8, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"ror4", MODRM, PARAM_RMPTR8, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"brkcs", MODRM, PARAM_REG2_16, 0, 0, DASMFLAG_STEP_OVER}, /* V25/V35 only */ - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"add4s", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"sub4s", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"movspa", 0, 0, 0, 0 }, /* V25/V35 only */ + {"cmp4s", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"rol4", MODRM, PARAM_RMPTR8, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"ror4", MODRM, PARAM_RMPTR8, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"brkcs", MODRM, PARAM_REG2_16, 0, 0, DASMFLAG_STEP_OVER}, /* V25/V35 only */ + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x30 - {"???", 0, 0, 0, 0 }, - {"ins", MODRM, PARAM_REG2_8, PARAM_REG8, 0 }, - {"???", 0, 0, 0, 0 }, - {"ext", MODRM, PARAM_REG2_8, PARAM_REG8, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"ins", MODRM, PARAM_REG2_8, PARAM_I4, 0 }, - {"???", 0, 0, 0, 0 }, - {"ext", MODRM, PARAM_REG2_8, PARAM_I4, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"ins", MODRM, PARAM_REG2_8, PARAM_REG8, 0 }, + {"???", 0, 0, 0, 0 }, + {"ext", MODRM, PARAM_REG2_8, PARAM_REG8, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"ins", MODRM, PARAM_REG2_8, PARAM_I4, 0 }, + {"???", 0, 0, 0, 0 }, + {"ext", MODRM, PARAM_REG2_8, PARAM_I4, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x40 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x50 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x60 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x70 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x80 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0x90 - {"???", 0, 0, 0, 0 }, - {"retrbi", 0, 0, 0, 0 }, /* V25/V35 only */ - {"fint", 0, 0, 0, 0 }, /* V25/V35 only */ - {"???", 0, 0, 0, 0 }, - {"tsksw", MODRM, PARAM_REG2_16, 0, 0 }, /* V25/V35 only */ - {"movspb", MODRM, PARAM_REG2_16, 0, 0 }, /* V25/V35 only */ - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"btclr", 0, PARAM_SFREG, PARAM_I3, PARAM_REL8 }, /* V25/V35 only */ - {"???", 0, 0, 0, 0 }, - {"stop", 0, 0, 0, 0 }, /* V25/V35 only */ - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"retrbi", 0, 0, 0, 0 }, /* V25/V35 only */ + {"fint", 0, 0, 0, 0 }, /* V25/V35 only */ + {"???", 0, 0, 0, 0 }, + {"tsksw", MODRM, PARAM_REG2_16, 0, 0 }, /* V25/V35 only */ + {"movspb", MODRM, PARAM_REG2_16, 0, 0 }, /* V25/V35 only */ + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"btclr", 0, PARAM_SFREG, PARAM_I3, PARAM_REL8 }, /* V25/V35 only */ + {"???", 0, 0, 0, 0 }, + {"stop", 0, 0, 0, 0 }, /* V25/V35 only */ + {"???", 0, 0, 0, 0 }, // 0xa0 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0xb0 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0xc0 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0xd0 - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0xe0 - {"brkxa", 0, PARAM_UI8, 0, 0 }, /* V33,53 only */ - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, + {"brkxa", 0, PARAM_UI8, 0, 0 }, /* V33,53 only */ + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, // 0xf0 - {"retxa", 0, PARAM_UI8, 0, 0 }, /* V33,53 only */ - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"brkem", 0, PARAM_UI8, 0, 0 } /* V20,30,40,50 only */ + {"retxa", 0, PARAM_UI8, 0, 0 }, /* V33,53 only */ + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"brkem", 0, PARAM_UI8, 0, 0 } /* V20,30,40,50 only */ }; static const I386_OPCODE immb_table[8] = { - {"add", 0, PARAM_RMPTR8, PARAM_UI8, 0 }, - {"or", 0, PARAM_RMPTR8, PARAM_UI8, 0 }, - {"addc", 0, PARAM_RMPTR8, PARAM_UI8, 0 }, - {"subc", 0, PARAM_RMPTR8, PARAM_UI8, 0 }, - {"and", 0, PARAM_RMPTR8, PARAM_UI8, 0 }, - {"sub", 0, PARAM_RMPTR8, PARAM_UI8, 0 }, - {"xor", 0, PARAM_RMPTR8, PARAM_UI8, 0 }, - {"cmp", 0, PARAM_RMPTR8, PARAM_UI8, 0 } + {"add", 0, PARAM_RMPTR8, PARAM_UI8, 0 }, + {"or", 0, PARAM_RMPTR8, PARAM_UI8, 0 }, + {"addc", 0, PARAM_RMPTR8, PARAM_UI8, 0 }, + {"subc", 0, PARAM_RMPTR8, PARAM_UI8, 0 }, + {"and", 0, PARAM_RMPTR8, PARAM_UI8, 0 }, + {"sub", 0, PARAM_RMPTR8, PARAM_UI8, 0 }, + {"xor", 0, PARAM_RMPTR8, PARAM_UI8, 0 }, + {"cmp", 0, PARAM_RMPTR8, PARAM_UI8, 0 } }; static const I386_OPCODE immw_table[8] = { - {"add", 0, PARAM_RMPTR16, PARAM_IMM, 0 }, - {"or", 0, PARAM_RMPTR16, PARAM_IMM, 0 }, - {"addc", 0, PARAM_RMPTR16, PARAM_IMM, 0 }, - {"subc", 0, PARAM_RMPTR16, PARAM_IMM, 0 }, - {"and", 0, PARAM_RMPTR16, PARAM_IMM, 0 }, - {"sub", 0, PARAM_RMPTR16, PARAM_IMM, 0 }, - {"xor", 0, PARAM_RMPTR16, PARAM_IMM, 0 }, - {"cmp", 0, PARAM_RMPTR16, PARAM_IMM, 0 } + {"add", 0, PARAM_RMPTR16, PARAM_IMM, 0 }, + {"or", 0, PARAM_RMPTR16, PARAM_IMM, 0 }, + {"addc", 0, PARAM_RMPTR16, PARAM_IMM, 0 }, + {"subc", 0, PARAM_RMPTR16, PARAM_IMM, 0 }, + {"and", 0, PARAM_RMPTR16, PARAM_IMM, 0 }, + {"sub", 0, PARAM_RMPTR16, PARAM_IMM, 0 }, + {"xor", 0, PARAM_RMPTR16, PARAM_IMM, 0 }, + {"cmp", 0, PARAM_RMPTR16, PARAM_IMM, 0 } }; static const I386_OPCODE immws_table[8] = { - {"add", 0, PARAM_RMPTR16, PARAM_I8, 0 }, - {"or", 0, PARAM_RMPTR16, PARAM_I8, 0 }, - {"addc", 0, PARAM_RMPTR16, PARAM_I8, 0 }, - {"subc", 0, PARAM_RMPTR16, PARAM_I8, 0 }, - {"and", 0, PARAM_RMPTR16, PARAM_I8, 0 }, - {"sub", 0, PARAM_RMPTR16, PARAM_I8, 0 }, - {"xor", 0, PARAM_RMPTR16, PARAM_I8, 0 }, - {"cmp", 0, PARAM_RMPTR16, PARAM_I8, 0 } + {"add", 0, PARAM_RMPTR16, PARAM_I8, 0 }, + {"or", 0, PARAM_RMPTR16, PARAM_I8, 0 }, + {"addc", 0, PARAM_RMPTR16, PARAM_I8, 0 }, + {"subc", 0, PARAM_RMPTR16, PARAM_I8, 0 }, + {"and", 0, PARAM_RMPTR16, PARAM_I8, 0 }, + {"sub", 0, PARAM_RMPTR16, PARAM_I8, 0 }, + {"xor", 0, PARAM_RMPTR16, PARAM_I8, 0 }, + {"cmp", 0, PARAM_RMPTR16, PARAM_I8, 0 } }; static const I386_OPCODE shiftbi_table[8] = { - {"rol", 0, PARAM_RMPTR8, PARAM_I8, 0 }, - {"ror", 0, PARAM_RMPTR8, PARAM_I8, 0 }, - {"rolc", 0, PARAM_RMPTR8, PARAM_I8, 0 }, - {"rorc", 0, PARAM_RMPTR8, PARAM_I8, 0 }, - {"shl", 0, PARAM_RMPTR8, PARAM_I8, 0 }, - {"shr", 0, PARAM_RMPTR8, PARAM_I8, 0 }, - {"???", 0, PARAM_RMPTR8, PARAM_I8, 0 }, - {"shra", 0, PARAM_RMPTR8, PARAM_I8, 0 } + {"rol", 0, PARAM_RMPTR8, PARAM_I8, 0 }, + {"ror", 0, PARAM_RMPTR8, PARAM_I8, 0 }, + {"rolc", 0, PARAM_RMPTR8, PARAM_I8, 0 }, + {"rorc", 0, PARAM_RMPTR8, PARAM_I8, 0 }, + {"shl", 0, PARAM_RMPTR8, PARAM_I8, 0 }, + {"shr", 0, PARAM_RMPTR8, PARAM_I8, 0 }, + {"???", 0, PARAM_RMPTR8, PARAM_I8, 0 }, + {"shra", 0, PARAM_RMPTR8, PARAM_I8, 0 } }; static const I386_OPCODE shiftwi_table[8] = { - {"rol", 0, PARAM_RMPTR16, PARAM_I8, 0 }, - {"ror", 0, PARAM_RMPTR16, PARAM_I8, 0 }, - {"rolc", 0, PARAM_RMPTR16, PARAM_I8, 0 }, - {"rorc", 0, PARAM_RMPTR16, PARAM_I8, 0 }, - {"shl", 0, PARAM_RMPTR16, PARAM_I8, 0 }, - {"shr", 0, PARAM_RMPTR16, PARAM_I8, 0 }, - {"???", 0, PARAM_RMPTR16, PARAM_I8, 0 }, - {"shra", 0, PARAM_RMPTR16, PARAM_I8, 0 } + {"rol", 0, PARAM_RMPTR16, PARAM_I8, 0 }, + {"ror", 0, PARAM_RMPTR16, PARAM_I8, 0 }, + {"rolc", 0, PARAM_RMPTR16, PARAM_I8, 0 }, + {"rorc", 0, PARAM_RMPTR16, PARAM_I8, 0 }, + {"shl", 0, PARAM_RMPTR16, PARAM_I8, 0 }, + {"shr", 0, PARAM_RMPTR16, PARAM_I8, 0 }, + {"???", 0, PARAM_RMPTR16, PARAM_I8, 0 }, + {"shra", 0, PARAM_RMPTR16, PARAM_I8, 0 } }; static const I386_OPCODE shiftb_table[8] = { - {"rol", 0, PARAM_RMPTR8, PARAM_1, 0 }, - {"ror", 0, PARAM_RMPTR8, PARAM_1, 0 }, - {"rolc", 0, PARAM_RMPTR8, PARAM_1, 0 }, - {"rorc", 0, PARAM_RMPTR8, PARAM_1, 0 }, - {"shl", 0, PARAM_RMPTR8, PARAM_1, 0 }, - {"shr", 0, PARAM_RMPTR8, PARAM_1, 0 }, - {"???", 0, PARAM_RMPTR8, PARAM_1, 0 }, - {"shra", 0, PARAM_RMPTR8, PARAM_1, 0 } + {"rol", 0, PARAM_RMPTR8, PARAM_1, 0 }, + {"ror", 0, PARAM_RMPTR8, PARAM_1, 0 }, + {"rolc", 0, PARAM_RMPTR8, PARAM_1, 0 }, + {"rorc", 0, PARAM_RMPTR8, PARAM_1, 0 }, + {"shl", 0, PARAM_RMPTR8, PARAM_1, 0 }, + {"shr", 0, PARAM_RMPTR8, PARAM_1, 0 }, + {"???", 0, PARAM_RMPTR8, PARAM_1, 0 }, + {"shra", 0, PARAM_RMPTR8, PARAM_1, 0 } }; static const I386_OPCODE shiftw_table[8] = { - {"rol", 0, PARAM_RMPTR16, PARAM_1, 0 }, - {"ror", 0, PARAM_RMPTR16, PARAM_1, 0 }, - {"rolc", 0, PARAM_RMPTR16, PARAM_1, 0 }, - {"rorc", 0, PARAM_RMPTR16, PARAM_1, 0 }, - {"shl", 0, PARAM_RMPTR16, PARAM_1, 0 }, - {"shr", 0, PARAM_RMPTR16, PARAM_1, 0 }, - {"???", 0, PARAM_RMPTR16, PARAM_1, 0 }, - {"shra", 0, PARAM_RMPTR16, PARAM_1, 0 } + {"rol", 0, PARAM_RMPTR16, PARAM_1, 0 }, + {"ror", 0, PARAM_RMPTR16, PARAM_1, 0 }, + {"rolc", 0, PARAM_RMPTR16, PARAM_1, 0 }, + {"rorc", 0, PARAM_RMPTR16, PARAM_1, 0 }, + {"shl", 0, PARAM_RMPTR16, PARAM_1, 0 }, + {"shr", 0, PARAM_RMPTR16, PARAM_1, 0 }, + {"???", 0, PARAM_RMPTR16, PARAM_1, 0 }, + {"shra", 0, PARAM_RMPTR16, PARAM_1, 0 } }; static const I386_OPCODE shiftbv_table[8] = { - {"rol", 0, PARAM_RMPTR8, PARAM_CL, 0 }, - {"ror", 0, PARAM_RMPTR8, PARAM_CL, 0 }, - {"rolc", 0, PARAM_RMPTR8, PARAM_CL, 0 }, - {"rorc", 0, PARAM_RMPTR8, PARAM_CL, 0 }, - {"shl", 0, PARAM_RMPTR8, PARAM_CL, 0 }, - {"shr", 0, PARAM_RMPTR8, PARAM_CL, 0 }, - {"???", 0, PARAM_RMPTR8, PARAM_CL, 0 }, - {"shra", 0, PARAM_RMPTR8, PARAM_CL, 0 } + {"rol", 0, PARAM_RMPTR8, PARAM_CL, 0 }, + {"ror", 0, PARAM_RMPTR8, PARAM_CL, 0 }, + {"rolc", 0, PARAM_RMPTR8, PARAM_CL, 0 }, + {"rorc", 0, PARAM_RMPTR8, PARAM_CL, 0 }, + {"shl", 0, PARAM_RMPTR8, PARAM_CL, 0 }, + {"shr", 0, PARAM_RMPTR8, PARAM_CL, 0 }, + {"???", 0, PARAM_RMPTR8, PARAM_CL, 0 }, + {"shra", 0, PARAM_RMPTR8, PARAM_CL, 0 } }; static const I386_OPCODE shiftwv_table[8] = { - {"rol", 0, PARAM_RMPTR16, PARAM_CL, 0 }, - {"ror", 0, PARAM_RMPTR16, PARAM_CL, 0 }, - {"rolc", 0, PARAM_RMPTR16, PARAM_CL, 0 }, - {"rorc", 0, PARAM_RMPTR16, PARAM_CL, 0 }, - {"shl", 0, PARAM_RMPTR16, PARAM_CL, 0 }, - {"shr", 0, PARAM_RMPTR16, PARAM_CL, 0 }, - {"???", 0, PARAM_RMPTR16, PARAM_CL, 0 }, - {"shra", 0, PARAM_RMPTR16, PARAM_CL, 0 } + {"rol", 0, PARAM_RMPTR16, PARAM_CL, 0 }, + {"ror", 0, PARAM_RMPTR16, PARAM_CL, 0 }, + {"rolc", 0, PARAM_RMPTR16, PARAM_CL, 0 }, + {"rorc", 0, PARAM_RMPTR16, PARAM_CL, 0 }, + {"shl", 0, PARAM_RMPTR16, PARAM_CL, 0 }, + {"shr", 0, PARAM_RMPTR16, PARAM_CL, 0 }, + {"???", 0, PARAM_RMPTR16, PARAM_CL, 0 }, + {"shra", 0, PARAM_RMPTR16, PARAM_CL, 0 } }; static const I386_OPCODE group1b_table[8] = { - {"test", 0, PARAM_RMPTR8, PARAM_UI8, 0 }, - {"???", 0, 0, 0, 0 }, - {"not", 0, PARAM_RMPTR8, 0, 0 }, - {"neg", 0, PARAM_RMPTR8, 0, 0 }, - {"mulu", 0, PARAM_RMPTR8, 0, 0 }, - {"mul", 0, PARAM_RMPTR8, 0, 0 }, - {"divu", 0, PARAM_RMPTR8, 0, 0 }, - {"div", 0, PARAM_RMPTR8, 0, 0 } + {"test", 0, PARAM_RMPTR8, PARAM_UI8, 0 }, + {"???", 0, 0, 0, 0 }, + {"not", 0, PARAM_RMPTR8, 0, 0 }, + {"neg", 0, PARAM_RMPTR8, 0, 0 }, + {"mulu", 0, PARAM_RMPTR8, 0, 0 }, + {"mul", 0, PARAM_RMPTR8, 0, 0 }, + {"divu", 0, PARAM_RMPTR8, 0, 0 }, + {"div", 0, PARAM_RMPTR8, 0, 0 } }; static const I386_OPCODE group1w_table[8] = { - {"test", 0, PARAM_RMPTR16, PARAM_IMM, 0 }, - {"???", 0, 0, 0, 0 }, - {"not", 0, PARAM_RMPTR16, 0, 0 }, - {"neg", 0, PARAM_RMPTR16, 0, 0 }, - {"mulu", 0, PARAM_RMPTR16, 0, 0 }, - {"mul", 0, PARAM_RMPTR16, 0, 0 }, - {"divu", 0, PARAM_RMPTR16, 0, 0 }, - {"div", 0, PARAM_RMPTR16, 0, 0 } + {"test", 0, PARAM_RMPTR16, PARAM_IMM, 0 }, + {"???", 0, 0, 0, 0 }, + {"not", 0, PARAM_RMPTR16, 0, 0 }, + {"neg", 0, PARAM_RMPTR16, 0, 0 }, + {"mulu", 0, PARAM_RMPTR16, 0, 0 }, + {"mul", 0, PARAM_RMPTR16, 0, 0 }, + {"divu", 0, PARAM_RMPTR16, 0, 0 }, + {"div", 0, PARAM_RMPTR16, 0, 0 } }; static const I386_OPCODE group2b_table[8] = { - {"inc", 0, PARAM_RMPTR8, 0, 0 }, - {"dec", 0, PARAM_RMPTR8, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 }, - {"???", 0, 0, 0, 0 } + {"inc", 0, PARAM_RMPTR8, 0, 0 }, + {"dec", 0, PARAM_RMPTR8, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 }, + {"???", 0, 0, 0, 0 } }; static const I386_OPCODE group2w_table[8] = { - {"inc", 0, PARAM_RMPTR16, 0, 0 }, - {"dec", 0, PARAM_RMPTR16, 0, 0 }, - {"call", 0, PARAM_RMPTR16, 0, 0, DASMFLAG_STEP_OVER}, - {"call far ptr ",0, PARAM_RM16, 0, 0, DASMFLAG_STEP_OVER}, - {"br", 0, PARAM_RMPTR16, 0, 0 }, - {"br far ptr ",0, PARAM_RM16, 0, 0 }, - {"push", 0, PARAM_RMPTR16, 0, 0 }, - {"???", 0, 0, 0, 0 } + {"inc", 0, PARAM_RMPTR16, 0, 0 }, + {"dec", 0, PARAM_RMPTR16, 0, 0 }, + {"call", 0, PARAM_RMPTR16, 0, 0, DASMFLAG_STEP_OVER}, + {"call far ptr ",0, PARAM_RM16, 0, 0, DASMFLAG_STEP_OVER}, + {"br", 0, PARAM_RMPTR16, 0, 0 }, + {"br far ptr ",0, PARAM_RM16, 0, 0 }, + {"push", 0, PARAM_RMPTR16, 0, 0 }, + {"???", 0, 0, 0, 0 } }; static const GROUP_OP group_op_table[] = { - { "immb", immb_table }, - { "immw", immw_table }, - { "immws", immws_table }, - { "shiftbi", shiftbi_table }, - { "shiftwi", shiftwi_table }, - { "shiftb", shiftb_table }, - { "shiftw", shiftw_table }, - { "shiftbv", shiftbv_table }, - { "shiftwv", shiftwv_table }, - { "group1b", group1b_table }, - { "group1w", group1w_table }, - { "group2b", group2b_table }, - { "group2w", group2w_table } + { "immb", immb_table }, + { "immw", immw_table }, + { "immws", immws_table }, + { "shiftbi", shiftbi_table }, + { "shiftwi", shiftwi_table }, + { "shiftb", shiftb_table }, + { "shiftw", shiftw_table }, + { "shiftbv", shiftbv_table }, + { "shiftwv", shiftwv_table }, + { "group1b", group1b_table }, + { "group1w", group1w_table }, + { "group2b", group2b_table }, + { "group2w", group2w_table } }; @@ -824,53 +824,53 @@ static const char *const nec_sreg[8] = { "ds1", "ps", "ss", "ds0", "???", "???", static const char *const nec_sfreg[256] = { /* 0x00 */ - "p0", "pm0", "pmc0", "???", "???", "???", "???", "???", - "p1", "pm1", "pmc1", "???", "???", "???", "???", "???", + "p0", "pm0", "pmc0", "???", "???", "???", "???", "???", + "p1", "pm1", "pmc1", "???", "???", "???", "???", "???", /* 0x10 */ - "p2", "pm2", "pmc2", "???", "???", "???", "???", "???", - "???", "???", "???", "???", "???", "???", "???", "???", + "p2", "pm2", "pmc2", "???", "???", "???", "???", "???", + "???", "???", "???", "???", "???", "???", "???", "???", /* 0x20 */ - "???", "???", "???", "???", "???", "???", "???", "???", - "???", "???", "???", "???", "???", "???", "???", "???", + "???", "???", "???", "???", "???", "???", "???", "???", + "???", "???", "???", "???", "???", "???", "???", "???", /* 0x30 */ - "???", "???", "???", "???", "???", "???", "???", "???", - "pt", "???", "???", "pmt", "???", "???", "???", "???", + "???", "???", "???", "???", "???", "???", "???", "???", + "pt", "???", "???", "pmt", "???", "???", "???", "???", /* 0x40 */ - "intm", "???", "???", "???", "ems0", "ems1", "ems2", "???", - "???", "???", "???", "???", "exic0","exic1","exic2","???", + "intm", "???", "???", "???", "ems0", "ems1", "ems2", "???", + "???", "???", "???", "???", "exic0","exic1","exic2","???", /* 0x50 */ - "???", "???", "???", "???", "???", "???", "???", "???", - "???", "???", "???", "???", "???", "???", "???", "???", + "???", "???", "???", "???", "???", "???", "???", "???", + "???", "???", "???", "???", "???", "???", "???", "???", /* 0x60 */ - "rxb0", "???", "txb0", "???", "???", "srms0","stms0","???", - "scm0", "scc0", "brg0", "scs0", "seic0","sric0","stic0","???", + "rxb0", "???", "txb0", "???", "???", "srms0","stms0","???", + "scm0", "scc0", "brg0", "scs0", "seic0","sric0","stic0","???", /* 0x70 */ - "rxb1", "???", "txb1", "???", "???", "srms1","stms1","???", - "scm1", "scc1", "brg1", "scs1", "seic1","sric1","stic1","???", + "rxb1", "???", "txb1", "???", "???", "srms1","stms1","???", + "scm1", "scc1", "brg1", "scs1", "seic1","sric1","stic1","???", /* 0x80 */ - "tm0", "???", "md0", "???", "???", "???", "???", "???", - "tm1", "???", "md1", "???", "???", "???", "???", "???", + "tm0", "???", "md0", "???", "???", "???", "???", "???", + "tm1", "???", "md1", "???", "???", "???", "???", "???", /* 0x90 */ - "tmc0", "tmc1", "???", "???", "tmms0","tmms1","tmms2","???", - "???", "???", "???", "???", "tmic0","tmic1","tmic2","???", + "tmc0", "tmc1", "???", "???", "tmms0","tmms1","tmms2","???", + "???", "???", "???", "???", "tmic0","tmic1","tmic2","???", /* 0xa0 */ - "dmac0","dmam0","dmac1","dmam1","???", "???", "???", "???", - "???", "???", "???", "???", "dic0", "dic1", "???", "???", + "dmac0","dmam0","dmac1","dmam1","???", "???", "???", "???", + "???", "???", "???", "???", "dic0", "dic1", "???", "???", /* 0xb0 */ - "???", "???", "???", "???", "???", "???", "???", "???", - "???", "???", "???", "???", "???", "???", "???", "???", + "???", "???", "???", "???", "???", "???", "???", "???", + "???", "???", "???", "???", "???", "???", "???", "???", /* 0xc0 */ - "sar0l","sar0m","sar0h","???", "dar0l","dar0m","dar0h","???", - "tc0l", "tc0h", "???", "???", "???", "???", "???", "???", + "sar0l","sar0m","sar0h","???", "dar0l","dar0m","dar0h","???", + "tc0l", "tc0h", "???", "???", "???", "???", "???", "???", /* 0xd0 */ - "sar1l","sar1m","sar1h","???", "dar1l","dar1m","dar1h","???", - "tc1l", "tc1h", "???", "???", "???", "???", "???", "???", + "sar1l","sar1m","sar1h","???", "dar1l","dar1m","dar1h","???", + "tc1l", "tc1h", "???", "???", "???", "???", "???", "???", /* 0xe0 */ - "stbc", "rfm", "???", "???", "???", "???", "???", "???", - "wtc", "???", "flag", "prc", "tbic", "???", "???", "irqs", + "stbc", "rfm", "???", "???", "???", "???", "???", "???", + "wtc", "???", "flag", "prc", "tbic", "???", "???", "irqs", /* 0xf0 */ - "???", "???", "???", "???", "???", "???", "???", "???", - "???", "???", "???", "???", "ispr", "???", "???", "idb" + "???", "???", "???", "???", "???", "???", "???", "???", + "???", "???", "???", "???", "ispr", "???", "???", "idb" }; static UINT32 pc; @@ -879,10 +879,10 @@ static UINT32 segment; static offs_t dasm_flags; static char modrm_string[256]; -#define MODRM_REG1 ((modrm >> 3) & 0x7) -#define MODRM_REG2 (modrm & 0x7) +#define MODRM_REG1 ((modrm >> 3) & 0x7) +#define MODRM_REG2 (modrm & 0x7) -#define MAX_LENGTH 8 +#define MAX_LENGTH 8 INLINE UINT8 FETCH(void) { @@ -1143,11 +1143,11 @@ static void handle_fpu(char *s, UINT8 op1, UINT8 op2) { switch (op1 & 0x7) { - case 0: // Group D8 + case 0: // Group D8 { if (op2 < 0xc0) { - pc--; // adjust fetch pointer, so modrm byte read again + pc--; // adjust fetch pointer, so modrm byte read again opcode_ptr--; handle_modrm( modrm_string ); switch ((op2 >> 3) & 0x7) @@ -1179,11 +1179,11 @@ static void handle_fpu(char *s, UINT8 op1, UINT8 op2) break; } - case 1: // Group D9 + case 1: // Group D9 { if (op2 < 0xc0) { - pc--; // adjust fetch pointer, so modrm byte read again + pc--; // adjust fetch pointer, so modrm byte read again opcode_ptr--; handle_modrm( modrm_string ); switch ((op2 >> 3) & 0x7) @@ -1243,11 +1243,11 @@ static void handle_fpu(char *s, UINT8 op1, UINT8 op2) break; } - case 2: // Group DA + case 2: // Group DA { if (op2 < 0xc0) { - pc--; // adjust fetch pointer, so modrm byte read again + pc--; // adjust fetch pointer, so modrm byte read again opcode_ptr--; handle_modrm( modrm_string ); switch ((op2 >> 3) & 0x7) @@ -1285,11 +1285,11 @@ static void handle_fpu(char *s, UINT8 op1, UINT8 op2) break; } - case 3: // Group DB + case 3: // Group DB { if (op2 < 0xc0) { - pc--; // adjust fetch pointer, so modrm byte read again + pc--; // adjust fetch pointer, so modrm byte read again opcode_ptr--; handle_modrm( modrm_string ); switch ((op2 >> 3) & 0x7) @@ -1335,11 +1335,11 @@ static void handle_fpu(char *s, UINT8 op1, UINT8 op2) break; } - case 4: // Group DC + case 4: // Group DC { if (op2 < 0xc0) { - pc--; // adjust fetch pointer, so modrm byte read again + pc--; // adjust fetch pointer, so modrm byte read again opcode_ptr--; handle_modrm( modrm_string ); switch ((op2 >> 3) & 0x7) @@ -1382,11 +1382,11 @@ static void handle_fpu(char *s, UINT8 op1, UINT8 op2) break; } - case 5: // Group DD + case 5: // Group DD { if (op2 < 0xc0) { - pc--; // adjust fetch pointer, so modrm byte read again + pc--; // adjust fetch pointer, so modrm byte read again opcode_ptr--; handle_modrm( modrm_string ); switch ((op2 >> 3) & 0x7) @@ -1426,11 +1426,11 @@ static void handle_fpu(char *s, UINT8 op1, UINT8 op2) break; } - case 6: // Group DE + case 6: // Group DE { if (op2 < 0xc0) { - pc--; // adjust fetch pointer, so modrm byte read again + pc--; // adjust fetch pointer, so modrm byte read again opcode_ptr--; handle_modrm( modrm_string ); switch ((op2 >> 3) & 0x7) @@ -1475,11 +1475,11 @@ static void handle_fpu(char *s, UINT8 op1, UINT8 op2) break; } - case 7: // Group DF + case 7: // Group DF { if (op2 < 0xc0) { - pc--; // adjust fetch pointer, so modrm byte read again + pc--; // adjust fetch pointer, so modrm byte read again opcode_ptr--; handle_modrm( modrm_string ); switch ((op2 >> 3) & 0x7) @@ -1609,4 +1609,3 @@ CPU_DISASSEMBLE( nec_generic ) { return necv_dasm_one(buffer, pc, oprom, NULL); } - |