diff --git a/src/arch/i386.ins b/src/arch/i386.ins index 1022e0d..505efdd 100644 --- a/src/arch/i386.ins +++ b/src/arch/i386.ins @@ -415,10 +415,27 @@ { "fclex", 0x9bdbe2, OP3F, AOT_NONE, AOT_NONE, AOT_NONE }, /* FCMOVcc */ /* FIXME implement */ +/* FFREE 0xddc0 + i 2 */ +{ "ffree", 0xddc0, OP2F, OP_st0, AOT_NONE, AOT_NONE }, +{ "ffree", 0xddc1, OP2F, OP_st1, AOT_NONE, AOT_NONE }, +{ "ffree", 0xddc2, OP2F, OP_st2, AOT_NONE, AOT_NONE }, +{ "ffree", 0xddc3, OP2F, OP_st3, AOT_NONE, AOT_NONE }, +{ "ffree", 0xddc4, OP2F, OP_st4, AOT_NONE, AOT_NONE }, +{ "ffree", 0xddc5, OP2F, OP_st5, AOT_NONE, AOT_NONE }, +{ "ffree", 0xddc6, OP2F, OP_st6, AOT_NONE, AOT_NONE }, +{ "ffree", 0xddc7, OP2F, OP_st7, AOT_NONE, AOT_NONE }, /* FIADD 0xda /0 1 m32int */ /* FIXME implement */ /* FIADD 0xde /0 1 m64int */ /* FIXME implement */ +/* FILD 0xdf /0 1 m16int */ +/* FIXME implement */ +/* FILD 0xdb /0 1 m32int */ +/* FIXME implement */ +/* FILD 0xdf /5 1 m64int */ +/* FIXME implement */ +/* FINCSTP 0xd9f7 2 */ +{ "fincstp", 0xd9f7, OP3F, AOT_NONE, AOT_NONE, AOT_NONE }, /* FINIT 0x9bdbe3 3 */ { "finit", 0x9bdbe3, OP3F, AOT_NONE, AOT_NONE, AOT_NONE }, /* FIST 0xdf /2 1 m16int */ diff --git a/test/i386.S b/test/i386.S index c06cfbb..a6ee527 100644 --- a/test/i386.S +++ b/test/i386.S @@ -142,6 +142,14 @@ faddp %st7, %st0 fchs fclex + ffree %st0 /* dd c0 */ + ffree %st1 /* dd c1 */ + ffree %st2 /* dd c2 */ + ffree %st3 /* dd c3 */ + ffree %st4 /* dd c4 */ + ffree %st5 /* dd c5 */ + ffree %st6 /* dd c6 */ + ffree %st7 /* dd c7 */ finit fld %st0 /* d9 c0 */ fld %st1