@@ -223,6 +223,7 @@ main(int argc, char** argv)
223
223
TEST ("\x01\x04\x25\x01\x00\x00\x00" , "add dword ptr [0x1], eax" );
224
224
TEST3264 ("\x01\x04\x25\x00\x00\x00\x80" , "add dword ptr [0x80000000], eax" , "add dword ptr [0xffffffff80000000], eax" );
225
225
TEST64 ("\x41\x01\x04\x25\x01\x00\x00\x00" , "add dword ptr [0x1], eax" );
226
+ TEST ("\x01\x04\x25\x00\x00\x00\x00" , "add dword ptr [0x0], eax" );
226
227
// [rip+disp32]
227
228
TEST64 ("\x01\x05\x01\x00\x00\x00" , "add dword ptr [rip+0x1], eax" );
228
229
TEST64 ("\x41\x01\x05\x01\x00\x00\x00" , "add dword ptr [rip+0x1], eax" );
@@ -1146,6 +1147,10 @@ main(int argc, char** argv)
1146
1147
TEST32 ("\xc5\x00" , "lds eax, fword ptr [eax]" );
1147
1148
TEST ("\x0f\xb2\x00" , "lss eax, fword ptr [@ax]" );
1148
1149
TEST64 ("\x48\x0f\xb2\x00" , "lss rax, tbyte ptr [rax]" );
1150
+ TEST ("\x0f\xb4\x00" , "lfs eax, fword ptr [@ax]" );
1151
+ TEST64 ("\x48\x0f\xb4\x00" , "lfs rax, tbyte ptr [rax]" );
1152
+ TEST ("\x0f\xb5\x00" , "lgs eax, fword ptr [@ax]" );
1153
+ TEST64 ("\x48\x0f\xb5\x00" , "lgs rax, tbyte ptr [rax]" );
1149
1154
TEST ("\xc5\xf2\x2a\xc0" , "vcvtsi2ss xmm0, xmm1, eax" );
1150
1155
TEST ("\xc4\xe1\xf2\x2a\xc0" , "vcvtsi2ss xmm0, xmm1, @ax" ); // VEX.W ignored
1151
1156
TEST ("\xf3\xc5\xf2\x2a\xc0" , "UD" ); // VEX+REP
@@ -1615,6 +1620,20 @@ main(int argc, char** argv)
1615
1620
1616
1621
TEST ("\x0f\xae\x00" , "fxsave [@ax]" );
1617
1622
TEST64 ("\x48\x0f\xae\x00" , "fxsave64 [rax]" );
1623
+ TEST ("\x0f\xae\x08" , "fxrstor [@ax]" );
1624
+ TEST64 ("\x48\x0f\xae\x08" , "fxrstor64 [rax]" );
1625
+ TEST ("\x0f\xae\x20" , "xsave [@ax]" );
1626
+ TEST64 ("\x48\x0f\xae\x20" , "xsave64 [rax]" );
1627
+ TEST ("\x0f\xc7\x20" , "xsavec [@ax]" );
1628
+ TEST64 ("\x48\x0f\xc7\x20" , "xsavec64 [rax]" );
1629
+ TEST ("\x0f\xae\x30" , "xsaveopt [@ax]" );
1630
+ TEST64 ("\x48\x0f\xae\x30" , "xsaveopt64 [rax]" );
1631
+ TEST ("\x0f\xc7\x28" , "xsaves [@ax]" );
1632
+ TEST64 ("\x48\x0f\xc7\x28" , "xsaves64 [rax]" );
1633
+ TEST ("\x0f\xae\x28" , "xrstor [@ax]" );
1634
+ TEST64 ("\x48\x0f\xae\x28" , "xrstor64 [rax]" );
1635
+ TEST ("\x0f\xc7\x18" , "xrstors [@ax]" );
1636
+ TEST64 ("\x48\x0f\xc7\x18" , "xrstors64 [rax]" );
1618
1637
TEST ("\xff\xe0" , "jmp @ax" );
1619
1638
TEST3264 ("\x66\xff\xe0" , "jmp ax" , "jmp rax" );
1620
1639
TEST64 ("\x48\xff\xe0" , "jmp rax" );
@@ -1672,6 +1691,8 @@ main(int argc, char** argv)
1672
1691
// TEST64("\x48\xe7\xff", "out eax, 0xff"); // TODO
1673
1692
TEST32 ("\x66\x61" , "popaw" );
1674
1693
TEST32 ("\x61" , "popad" );
1694
+ TEST ("\x66\x9c" , "pushfw" );
1695
+ TEST3264 ("\x9c" , "pushfd" , "pushfq" );
1675
1696
TEST ("\x66\x9d" , "popfw" );
1676
1697
TEST3264 ("\x9d" , "popfd" , "popfq" );
1677
1698
TEST ("\x66\xcf" , "iretw" );
0 commit comments