diff --git a/src/arch/i386.ins b/src/arch/i386.ins index 5600fdc..73dba06 100644 --- a/src/arch/i386.ins +++ b/src/arch/i386.ins @@ -73,5 +73,19 @@ { "adc", 0x81, OP1F, OP_RMW_D8+2,OP_UW, AOT_NONE }, { "adc", 0x81, OP1F, OP_RMW_DW+2,OP_UW, AOT_NONE }, { "adc", 0x81, OP1F, OP_RMW_RW+2,OP_UW, AOT_NONE }, +/* ADD 0x04 ib 1 al imm8 */ +{ "add", 0x04, OP1F, OP_al, OP_U8, AOT_NONE }, +/* ADD 0x05 iW 1 AX immW */ +{ "add", 0x05, OP1F, OP_AX, OP_UW, AOT_NONE }, +/* ADD 0x80 /0 ib 1 r/m8 imm8 */ +{ "add", 0x80, OP1F, OP_RM8_D0+0,OP_U8, AOT_NONE }, +{ "add", 0x80, OP1F, OP_RM8_D8+0,OP_U8, AOT_NONE }, +{ "add", 0x80, OP1F, OP_RM8_DW+0,OP_U8, AOT_NONE }, +{ "add", 0x80, OP1F, OP_RM8_R8+0,OP_U8, AOT_NONE }, +/* ADC 0x81 /0 iW 1 r/m8 imm8 */ +{ "add", 0x81, OP1F, OP_RMW_D0+0,OP_UW, AOT_NONE }, +{ "add", 0x81, OP1F, OP_RMW_D8+0,OP_UW, AOT_NONE }, +{ "add", 0x81, OP1F, OP_RMW_DW+0,OP_UW, AOT_NONE }, +{ "add", 0x81, OP1F, OP_RMW_RW+0,OP_UW, AOT_NONE }, /* NOP */ { "nop", 0x90, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, diff --git a/test/i386.S b/test/i386.S index 697bc5b..2a90751 100644 --- a/test/i386.S +++ b/test/i386.S @@ -15,7 +15,7 @@ adc %bl, %bh /* 12 */ #endif adc %al, $0x40 /* 14 40 */ - adc %eax, $0x41424344 /* 15 41 42 43 44 */ + adc %eax, $0x41424344 /* 15 44 43 42 41 */ adc [%edx], $0x46 /* 80 12 46 */ adc [%ebx + $0x15], $0x47 /* 80 53 15 47 */ adc [%ebx + $0x16171819], $0x48 /* 80 93 19 18 17 16 48 */ @@ -26,4 +26,18 @@ /* 81 93 19 18 17 16 4b */ /* 4a 49 48 */ adc %ecx, $0x45464748 /* 81 d1 45 46 47 48 */ + /* ADD */ + add %al, $0x40 /* 04 40 */ + add %eax, $0x41424344 /* 05 44 43 42 41 */ + add [%edx], $0x46 /* 80 02 46 */ + add [%ebx + $0x15], $0x47 /* 80 43 15 47 */ + add [%ebx + $0x16171819], $0x48 /* 80 83 19 18 17 16 48 */ + add %cl, $0x45 /* 80 c1 45 */ + add [%edx], $0x46474849 /* 81 02 46 47 48 49 */ + add [%ebx + $0x14], $0x4748494a /* 81 43 14 47 48 49 4a */ + add [%ebx + $0x16171819], $0x48494a4b + /* 81 83 19 18 17 16 4b */ + /* 4a 49 48 */ + add %ecx, $0x45464748 /* 81 c1 45 46 47 48 */ + /* NOP */ nop