Added the "xchg" instruction

This commit is contained in:
Pierre Pronchery 2011-04-18 04:40:17 +00:00
parent 5de28736a7
commit 299bfc910a
2 changed files with 46 additions and 1 deletions

View File

@ -418,6 +418,46 @@
{ "fnclex", 0xdbe2, OP2F, AOT_NONE, AOT_NONE, AOT_NONE },
/* NOP 0x90 1 */
{ "nop", 0x90, OP1F, AOT_NONE, AOT_NONE, AOT_NONE },
/* XCHG 0x90 +rW 1 AX rW */
{ "xchg", 0x90, OP1F, OP_AX, OP_AX, AOT_NONE },
{ "xchg", 0x91, OP1F, OP_AX, OP_CX, AOT_NONE },
{ "xchg", 0x92, OP1F, OP_AX, OP_DX, AOT_NONE },
{ "xchg", 0x93, OP1F, OP_AX, OP_BX, AOT_NONE },
{ "xchg", 0x94, OP1F, OP_AX, OP_SP, AOT_NONE },
{ "xchg", 0x95, OP1F, OP_AX, OP_BP, AOT_NONE },
{ "xchg", 0x96, OP1F, OP_AX, OP_SI, AOT_NONE },
{ "xchg", 0x97, OP1F, OP_AX, OP_DI, AOT_NONE },
{ "xchg", 0x91, OP1F, OP_CX, OP_AX, AOT_NONE },
{ "xchg", 0x92, OP1F, OP_DX, OP_AX, AOT_NONE },
{ "xchg", 0x93, OP1F, OP_BX, OP_AX, AOT_NONE },
{ "xchg", 0x94, OP1F, OP_SP, OP_AX, AOT_NONE },
{ "xchg", 0x95, OP1F, OP_BP, OP_AX, AOT_NONE },
{ "xchg", 0x96, OP1F, OP_SI, OP_AX, AOT_NONE },
{ "xchg", 0x97, OP1F, OP_DI, OP_AX, AOT_NONE },
/* XCHG 0x86 /r 1 r/m8 r8 */
{ "xchg", 0x86, OP1F, OP_RM8_D0_R,OP_R8, AOT_NONE },
{ "xchg", 0x86, OP1F, OP_RM8_D8_R,OP_R8, AOT_NONE },
{ "xchg", 0x86, OP1F, OP_RM8_DW_R,OP_R8, AOT_NONE },
{ "xchg", 0x86, OP1F, OP_RM8_R8_R,OP_R8, AOT_NONE },
/* XCHG 0x86 /r 1 r8 r/m8 */
#if 1 /* FIXME doesn't work at the moment */
{ "xchg", 0x86, OP1F, OP_RM8_R8_R,OP_RM8_D0_R,AOT_NONE },
{ "xchg", 0x86, OP1F, OP_RM8_R8_R,OP_RM8_D8_R,AOT_NONE },
{ "xchg", 0x86, OP1F, OP_RM8_R8_R,OP_RM8_DW_R,AOT_NONE },
{ "xchg", 0x86, OP1F, OP_RM8_R8_R,OP_RM8_R8_R,AOT_NONE },
#endif
/* XCHG 0x87 /r 1 r/mW rW */
{ "xchg", 0x87, OP1F, OP_RMW_D0_R,OP_RW, AOT_NONE },
{ "xchg", 0x87, OP1F, OP_RMW_D8_R,OP_RW, AOT_NONE },
{ "xchg", 0x87, OP1F, OP_RMW_DW_R,OP_RW, AOT_NONE },
{ "xchg", 0x87, OP1F, OP_RMW_RW_R,OP_RW, AOT_NONE },
/* XCHG 0x87 /r 1 rW r/mW */
#if 1 /* FIXME doesn't work at the moment */
{ "xchg", 0x87, OP1F, OP_RMW_RW_R,OP_RMW_D0_R,AOT_NONE },
{ "xchg", 0x87, OP1F, OP_RMW_RW_R,OP_RMW_D8_R,AOT_NONE },
{ "xchg", 0x87, OP1F, OP_RMW_RW_R,OP_RMW_DW_R,AOT_NONE },
{ "xchg", 0x87, OP1F, OP_RMW_RW_R,OP_RMW_RW_R,AOT_NONE },
#endif
/* XLAT 0xd7 1 */
{ "xlat", 0xd7, OP1F, AOT_NONE, AOT_NONE, AOT_NONE },
/* XLATB 0xd7 1 */

View File

@ -144,7 +144,12 @@
fchs
fclex
fnclex
nop /* 0x90 */
nop /* 90 */
/* XCHG */
xchg %eax, %ecx /* 91 */
xchg %ecx, %eax /* 91 */
xchg [%eax], %ebx /* 87 18 */
xchg %eax, [%ebx]
xlatb
/* XOR */
xor [%ecx], %dh /* 30 31 */