diff --git a/src/arch/i386.ins b/src/arch/i386.ins index 9183bcd..2f59ee0 100644 --- a/src/arch/i386.ins +++ b/src/arch/i386.ins @@ -586,6 +586,35 @@ { "fnop", 0xd9d0, OP2F, AOT_NONE, AOT_NONE, AOT_NONE }, /* FWAIT 0x9b 1 */ { "fwait", 0x9b, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, +/* LOCK 0xf0 1 */ +{ "lock", 0xf0, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, +/* LODSB 0xac 1 */ +{ "lodsb", 0xac, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, +#ifdef ARCH_i386_real +/* LODSW 0xad 1 */ +{ "lodsw", 0xad, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, +#else +/* LODSD 0xad 1 */ +{ "lodsd", 0xad, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, +#endif +/* LOOP 0xe2 1 rel8 */ +{ "loop", 0xe2, OP1F, OP_S8, AOT_NONE, AOT_NONE }, +/* LOOPE 0xe1 1 rel8 */ +{ "loope", 0xe1, OP1F, OP_S8, AOT_NONE, AOT_NONE }, +/* LOOPNE 0xe0 1 rel8 */ +{ "loopne", 0xe0, OP1F, OP_S8, AOT_NONE, AOT_NONE }, +/* LOOPNZ 0xe0 1 rel8 */ +{ "loopnz", 0xe0, OP1F, OP_S8, AOT_NONE, AOT_NONE }, +/* LOOPZ 0xe1 1 rel8 */ +{ "loopz", 0xe1, OP1F, OP_S8, AOT_NONE, AOT_NONE }, +/* MOV 0x0f20 /r 2 r32 cr0-cr4 */ +/* FIXME implement */ +/* MOV 0x0f22 /r 2 cr0-cr4 r32 */ +/* FIXME implement */ +/* MOV 0x0f21 /r 2 r32 dr0-dr7 */ +/* FIXME implement */ +/* MOV 0x0f23 /r 2 dr0-dr7 r32 */ +/* FIXME implement */ /* MOVSB 0xa4 1 */ { "movsb", 0xa4, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, #ifdef ARCH_i386_real diff --git a/test/i386.S b/test/i386.S index 5b16e73..4b7641e 100644 --- a/test/i386.S +++ b/test/i386.S @@ -240,6 +240,14 @@ fnclex fninit fwait + lock + lodsb /* ac */ + lodsd /* ad */ + loop $0x41 + loope $0x41 + loopne $0x41 + loopnz $0x41 + loopz $0x41 nop /* 90 */ movsb movsd