--- np2/i386c/ia32/inst_table.c 2003/12/11 15:06:50 1.2 +++ np2/i386c/ia32/inst_table.c 2005/03/12 12:32:54 1.10 @@ -1,4 +1,4 @@ -/* $Id: inst_table.c,v 1.2 2003/12/11 15:06:50 monaka Exp $ */ +/* $Id: inst_table.c,v 1.10 2005/03/12 12:32:54 monaka Exp $ */ /* * Copyright (c) 2002-2003 NONAKA Kimihiro @@ -12,8 +12,6 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES @@ -60,7 +58,7 @@ undef_op(void) } static void -undef_op2(DWORD v) +undef_op2(UINT32 v) { (void)v; @@ -68,7 +66,7 @@ undef_op2(DWORD v) } -BYTE insttable_info[256] = { +UINT8 insttable_info[256] = { 0, /* 00 */ 0, 0, @@ -557,8 +555,8 @@ void (*insttable_1byte[2][256])(void) = LDS_GwMp, MOV_EbIb, MOV_EwIw, - ENTER_IwIb, /* C8 */ - LEAVE16, + ENTER16_IwIb, /* C8 */ + LEAVE, RETfar16_Iw, RETfar16, INT3, @@ -768,7 +766,7 @@ void (*insttable_1byte[2][256])(void) = MOV_EdGd, MOV_GbEb, MOV_GdEd, - MOV_EwSw, + MOV_EdSw, LEA_GdM, MOV_SwEw, POP_Ed, @@ -832,14 +830,14 @@ void (*insttable_1byte[2][256])(void) = LDS_GdMp, MOV_EbIb, MOV_EdId, - ENTER_IwIb, /* C8 */ - LEAVE32, + ENTER32_IwIb, /* C8 */ + LEAVE, RETfar32_Iw, RETfar32, INT3, INT_Ib, INTO, - IRETD, + IRET, Grp2_Eb, /* D0 */ Grp2_Ed, @@ -897,14 +895,14 @@ void (*insttable_1byte[2][256])(void) = void (*insttable_2byte[2][256])(void) = { /* 16bit */ { - Grp6_16, /* 00 */ - Grp7_16, + Grp6, /* 00 */ + Grp7, LAR_GwEw, LSL_GwEw, undef_op, LOADALL286, /* undoc(286) */ CLTS, - undef_op, + LOADALL, INVD, /* 08 */ WBINVD, undef_op, @@ -1091,7 +1089,7 @@ void (*insttable_2byte[2][256])(void) = LFS_GwMp, LGS_GwMp, MOVZX_GwEb, - MOVZX_GdEw, + MOVZX_GwEw, undef_op, /* B8 */ UD2, Grp8_EwIb, @@ -1099,7 +1097,7 @@ void (*insttable_2byte[2][256])(void) = BSF_GwEw, BSR_GwEw, MOVSX_GwEb, - MOVSX_GdEw, + MOVSX_GwEw, XADD_EbGb, /* C0 */ XADD_EwGw, @@ -1172,14 +1170,14 @@ void (*insttable_2byte[2][256])(void) = /* 32bit */ { - Grp6_32, /* 00 */ - Grp7_32, + Grp6, /* 00 */ + Grp7, LAR_GdEw, LSL_GdEw, undef_op, - LOADALL, /* undoc(286) */ + LOADALL286, /* undoc(286) */ CLTS, - undef_op, + LOADALL, INVD, /* 08 */ WBINVD, undef_op, @@ -1452,7 +1450,7 @@ void (*insttable_2byte[2][256])(void) = */ /* group 1 */ -void (*insttable_G1EbIb[])(BYTE *, DWORD) = { +void (*insttable_G1EbIb[])(UINT8 *, UINT32) = { ADD_EbIb, OR_EbIb, ADC_EbIb, @@ -1462,7 +1460,7 @@ void (*insttable_G1EbIb[])(BYTE *, DWORD XOR_EbIb, CMP_EbIb, }; -void (*insttable_G1EbIb_ext[])(DWORD, DWORD) = { +void (*insttable_G1EbIb_ext[])(UINT32, UINT32) = { ADD_EbIb_ext, OR_EbIb_ext, ADC_EbIb_ext, @@ -1473,7 +1471,7 @@ void (*insttable_G1EbIb_ext[])(DWORD, DW CMP_EbIb_ext, }; -void (*insttable_G1EwIx[])(WORD *, DWORD) = { +void (*insttable_G1EwIx[])(UINT16 *, UINT32) = { ADD_EwIx, OR_EwIx, ADC_EwIx, @@ -1483,7 +1481,7 @@ void (*insttable_G1EwIx[])(WORD *, DWORD XOR_EwIx, CMP_EwIx, }; -void (*insttable_G1EwIx_ext[])(DWORD, DWORD) = { +void (*insttable_G1EwIx_ext[])(UINT32, UINT32) = { ADD_EwIx_ext, OR_EwIx_ext, ADC_EwIx_ext, @@ -1494,7 +1492,7 @@ void (*insttable_G1EwIx_ext[])(DWORD, DW CMP_EwIx_ext, }; -void (*insttable_G1EdIx[])(DWORD *, DWORD) = { +void (*insttable_G1EdIx[])(UINT32 *, UINT32) = { ADD_EdIx, OR_EdIx, ADC_EdIx, @@ -1504,7 +1502,7 @@ void (*insttable_G1EdIx[])(DWORD *, DWOR XOR_EdIx, CMP_EdIx, }; -void (*insttable_G1EdIx_ext[])(DWORD, DWORD) = { +void (*insttable_G1EdIx_ext[])(UINT32, UINT32) = { ADD_EdIx_ext, OR_EdIx_ext, ADC_EdIx_ext, @@ -1517,7 +1515,7 @@ void (*insttable_G1EdIx_ext[])(DWORD, DW /* group 2 */ -void (*insttable_G2Eb[])(BYTE *) = { +void (*insttable_G2Eb[])(UINT8 *) = { ROL_Eb, ROR_Eb, RCL_Eb, @@ -1527,7 +1525,7 @@ void (*insttable_G2Eb[])(BYTE *) = { SHL_Eb, SAR_Eb, }; -void (*insttable_G2Eb_ext[])(DWORD) = { +void (*insttable_G2Eb_ext[])(UINT32) = { ROL_Eb_ext, ROR_Eb_ext, RCL_Eb_ext, @@ -1538,7 +1536,7 @@ void (*insttable_G2Eb_ext[])(DWORD) = { SAR_Eb_ext, }; -void (*insttable_G2Ew[])(WORD *) = { +void (*insttable_G2Ew[])(UINT16 *) = { ROL_Ew, ROR_Ew, RCL_Ew, @@ -1548,7 +1546,7 @@ void (*insttable_G2Ew[])(WORD *) = { SHL_Ew, SAR_Ew, }; -void (*insttable_G2Ew_ext[])(DWORD) = { +void (*insttable_G2Ew_ext[])(UINT32) = { ROL_Ew_ext, ROR_Ew_ext, RCL_Ew_ext, @@ -1559,7 +1557,7 @@ void (*insttable_G2Ew_ext[])(DWORD) = { SAR_Ew_ext, }; -void (*insttable_G2Ed[])(DWORD *) = { +void (*insttable_G2Ed[])(UINT32 *) = { ROL_Ed, ROR_Ed, RCL_Ed, @@ -1569,7 +1567,7 @@ void (*insttable_G2Ed[])(DWORD *) = { SHL_Ed, SAR_Ed, }; -void (*insttable_G2Ed_ext[])(DWORD) = { +void (*insttable_G2Ed_ext[])(UINT32) = { ROL_Ed_ext, ROR_Ed_ext, RCL_Ed_ext, @@ -1580,7 +1578,7 @@ void (*insttable_G2Ed_ext[])(DWORD) = { SAR_Ed_ext, }; -void (*insttable_G2EbCL[])(BYTE *, BYTE) = { +void (*insttable_G2EbCL[])(UINT8 *, UINT) = { ROL_EbCL, ROR_EbCL, RCL_EbCL, @@ -1590,7 +1588,7 @@ void (*insttable_G2EbCL[])(BYTE *, BYTE) SHL_EbCL, SAR_EbCL, }; -void (*insttable_G2EbCL_ext[])(DWORD, BYTE) = { +void (*insttable_G2EbCL_ext[])(UINT32, UINT) = { ROL_EbCL_ext, ROR_EbCL_ext, RCL_EbCL_ext, @@ -1601,7 +1599,7 @@ void (*insttable_G2EbCL_ext[])(DWORD, BY SAR_EbCL_ext, }; -void (*insttable_G2EwCL[])(WORD *, BYTE) = { +void (*insttable_G2EwCL[])(UINT16 *, UINT) = { ROL_EwCL, ROR_EwCL, RCL_EwCL, @@ -1611,7 +1609,7 @@ void (*insttable_G2EwCL[])(WORD *, BYTE) SHL_EwCL, SAR_EwCL, }; -void (*insttable_G2EwCL_ext[])(DWORD, BYTE) = { +void (*insttable_G2EwCL_ext[])(UINT32, UINT) = { ROL_EwCL_ext, ROR_EwCL_ext, RCL_EwCL_ext, @@ -1622,7 +1620,7 @@ void (*insttable_G2EwCL_ext[])(DWORD, BY SAR_EwCL_ext, }; -void (*insttable_G2EdCL[])(DWORD *, BYTE) = { +void (*insttable_G2EdCL[])(UINT32 *, UINT) = { ROL_EdCL, ROR_EdCL, RCL_EdCL, @@ -1632,7 +1630,7 @@ void (*insttable_G2EdCL[])(DWORD *, BYTE SHL_EdCL, SAR_EdCL, }; -void (*insttable_G2EdCL_ext[])(DWORD, BYTE) = { +void (*insttable_G2EdCL_ext[])(UINT32, UINT) = { ROL_EdCL_ext, ROR_EdCL_ext, RCL_EdCL_ext, @@ -1644,7 +1642,7 @@ void (*insttable_G2EdCL_ext[])(DWORD, BY }; /* group 3 */ -void (*insttable_G3Eb[])(DWORD) = { +void (*insttable_G3Eb[])(UINT32) = { TEST_EbIb, TEST_EbIb, NOT_Eb, @@ -1655,7 +1653,7 @@ void (*insttable_G3Eb[])(DWORD) = { IDIV_ALEb, }; -void (*insttable_G3Ew[])(DWORD) = { +void (*insttable_G3Ew[])(UINT32) = { TEST_EwIw, TEST_EwIw, NOT_Ew, @@ -1666,7 +1664,7 @@ void (*insttable_G3Ew[])(DWORD) = { IDIV_AXEw, }; -void (*insttable_G3Ed[])(DWORD) = { +void (*insttable_G3Ed[])(UINT32) = { TEST_EdId, TEST_EdId, NOT_Ed, @@ -1678,7 +1676,7 @@ void (*insttable_G3Ed[])(DWORD) = { }; /* group 4 */ -void (*insttable_G4[])(DWORD) = { +void (*insttable_G4[])(UINT32) = { INC_Eb, DEC_Eb, undef_op2, @@ -1690,7 +1688,7 @@ void (*insttable_G4[])(DWORD) = { }; /* group 5 */ -void (*insttable_G5Ew[])(DWORD) = { +void (*insttable_G5Ew[])(UINT32) = { INC_Ew, DEC_Ew, CALL_Ew, @@ -1701,7 +1699,7 @@ void (*insttable_G5Ew[])(DWORD) = { undef_op2, /* POP_Ew_G5 */ }; -void (*insttable_G5Ed[])(DWORD) = { +void (*insttable_G5Ed[])(UINT32) = { INC_Ed, DEC_Ed, CALL_Ed, @@ -1713,7 +1711,7 @@ void (*insttable_G5Ed[])(DWORD) = { }; /* group 6 */ -void (*insttable_G6_16[])(DWORD) = { +void (*insttable_G6[])(UINT32) = { SLDT_Ew, STR_Ew, LLDT_Ew, @@ -1724,42 +1722,20 @@ void (*insttable_G6_16[])(DWORD) = { undef_op2, }; -void (*insttable_G6_32[])(DWORD) = { - SLDT_Ed, - STR_Ed, - LLDT_Ew, - LTR_Ew, - VERR_Ew, - VERW_Ew, - undef_op2, - undef_op2, -}; - /* group 7 */ -void (*insttable_G7_16[])(DWORD) = { - SGDT16_Ms, - SIDT16_Ms, - LGDT16_Ms, - LIDT16_Ms, +void (*insttable_G7[])(UINT32) = { + SGDT_Ms, + SIDT_Ms, + LGDT_Ms, + LIDT_Ms, SMSW_Ew, undef_op2, LMSW_Ew, INVLPG, }; -void (*insttable_G7_32[])(DWORD) = { - SGDT32_Ms, - SIDT32_Ms, - LGDT32_Ms, - LIDT32_Ms, - SMSW_Ed, - undef_op2, - LMSW_Ew, - INVLPG, -}; - /* group 8 */ -void (*insttable_G8EwIb[])(DWORD) = { +void (*insttable_G8EwIb[])(UINT32) = { undef_op2, undef_op2, undef_op2, @@ -1770,7 +1746,7 @@ void (*insttable_G8EwIb[])(DWORD) = { BTC_EwIb, }; -void (*insttable_G8EdIb[])(DWORD) = { +void (*insttable_G8EdIb[])(UINT32) = { undef_op2, undef_op2, undef_op2, @@ -1782,7 +1758,7 @@ void (*insttable_G8EdIb[])(DWORD) = { }; /* group 9 */ -void (*insttable_G9[])(DWORD) = { +void (*insttable_G9[])(UINT32) = { undef_op2, CMPXCHG8B, undef_op2,