tests: Add few more encode/decode cases
This commit is contained in:
@@ -1363,8 +1363,8 @@ db/0m M MEM32 - - - FILD ENC_SEPSZ
|
||||
db/1m M MEM32 - - - FISTTP ENC_SEPSZ
|
||||
db/2m M MEM32 - - - FIST ENC_SEPSZ
|
||||
db/3m M MEM32 - - - FISTP ENC_SEPSZ
|
||||
db/5m M FPU - - - FLD
|
||||
db/7m M FPU - - - FSTP
|
||||
db/5m M FPU - - - FLD ENC_SEPSZ
|
||||
db/7m M FPU - - - FSTP ENC_SEPSZ
|
||||
db/0r M FPU - - - FCMOVNB
|
||||
db/1r M FPU - - - FCMOVNE
|
||||
db/2r M FPU - - - FCMOVNBE
|
||||
|
||||
@@ -130,6 +130,7 @@ main(int argc, char** argv)
|
||||
TEST("\x0F\x01\xE2", "smsw edx");
|
||||
TEST("\x66\x0F\x01\xE2", "smsw dx");
|
||||
TEST64("\x66\x48\x0F\x01\xE2", "smsw rdx");
|
||||
TEST64("\xf2\x66\x0f\x01\x23", "smsw word ptr [rbx]");
|
||||
TEST32("\x66\x0f\x20\x00", "mov eax, cr0"); // mod=0, 66h
|
||||
TEST64("\x66\x0f\x20\x00", "mov rax, cr0"); // mod=0, 66h
|
||||
TEST32("\xf3\x0f\x20\x00", "mov eax, cr0"); // REP
|
||||
@@ -155,6 +156,7 @@ main(int argc, char** argv)
|
||||
TEST64("\x41\xd8\xc1", "fadd st(0), st(1)"); // REX.B ignored
|
||||
TEST64("\xd9\xc9", "fxch st(1)");
|
||||
TEST64("\xd9\xd0", "fnop");
|
||||
TEST("\xdf\xe0", "fstsw ax");
|
||||
TEST64("\x41\xdf\xe0", "fstsw ax");
|
||||
|
||||
// ModRM Test cases
|
||||
@@ -226,6 +228,8 @@ main(int argc, char** argv)
|
||||
TEST("\x66\x6a\xff", "pushw 0xffff");
|
||||
TEST32("\x6a\xff", "push 0xffffffff");
|
||||
TEST64("\x6a\xff", "push 0xffffffffffffffff");
|
||||
TEST32("\x60", "pushad");
|
||||
TEST32("\x66\x60", "pushaw");
|
||||
TEST("\xb0\xf0", "mov al, 0xf0");
|
||||
TEST("\x66\xb8\xf0\xf0", "mov ax, 0xf0f0");
|
||||
TEST("\xb8\xf0\xf0\xab\xff", "mov eax, 0xffabf0f0");
|
||||
|
||||
@@ -85,6 +85,18 @@ main(int argc, char** argv)
|
||||
TEST("\xff\x30", FE_PUSHm, FE_MEM(FE_AX, 0, 0, 0));
|
||||
TEST("\xff\x31", FE_PUSHm, FE_MEM(FE_CX, 0, 0, 0));
|
||||
TEST("\x9c", FE_PUSHF);
|
||||
TEST("\x8c\xc0", FE_MOV_S2Grr, FE_AX, FE_ES);
|
||||
TEST("\x8c\xc8", FE_MOV_S2Grr, FE_AX, FE_CS);
|
||||
TEST("\x8c\xd0", FE_MOV_S2Grr, FE_AX, FE_SS);
|
||||
TEST("\x8c\xd8", FE_MOV_S2Grr, FE_AX, FE_DS);
|
||||
TEST("\x8c\xe0", FE_MOV_S2Grr, FE_AX, FE_FS);
|
||||
TEST("\x8c\xe8", FE_MOV_S2Grr, FE_AX, FE_GS);
|
||||
TEST("\x8e\xc0", FE_MOV_G2Srr, FE_ES, FE_AX);
|
||||
// TEST("", FE_MOV_G2Srr, FE_CS, FE_AX);
|
||||
TEST("\x8e\xd0", FE_MOV_G2Srr, FE_SS, FE_AX);
|
||||
TEST("\x8e\xd8", FE_MOV_G2Srr, FE_DS, FE_AX);
|
||||
TEST("\x8e\xe0", FE_MOV_G2Srr, FE_FS, FE_AX);
|
||||
TEST("\x8e\xe8", FE_MOV_G2Srr, FE_GS, FE_AX);
|
||||
TEST("\xd2\xe4", FE_SHL8rr, FE_AH, FE_CX);
|
||||
TEST("", FE_SHL8rr, FE_AH, FE_DX);
|
||||
TEST("\xd0\xe0", FE_SHL8ri, FE_AX, 1);
|
||||
@@ -201,6 +213,27 @@ main(int argc, char** argv)
|
||||
TEST("", FE_MOV64ar, 0xfedcba9876543210, FE_CX);
|
||||
TEST("", FE_MOV64ar|FE_ADDR32, 0xfedcba98, FE_CX);
|
||||
|
||||
// Test FPU instructions
|
||||
TEST("\xd8\x00", FE_FADDm32, FE_MEM(FE_AX, 0, 0, 0));
|
||||
TEST("\xdc\x00", FE_FADDm64, FE_MEM(FE_AX, 0, 0, 0));
|
||||
TEST("\xd8\xc0", FE_FADDrr, FE_ST0, FE_ST0);
|
||||
TEST("\xd8\xc1", FE_FADDrr, FE_ST0, FE_ST1);
|
||||
TEST("\xdc\xc1", FE_FADDrr, FE_ST1, FE_ST0);
|
||||
TEST("", FE_FADDrr, FE_ST1, FE_ST1);
|
||||
TEST("\xde\xc1", FE_FADDPrr, FE_ST1, FE_ST0);
|
||||
TEST("\xda\x00", FE_FIADDm32, FE_MEM(FE_AX, 0, 0, 0));
|
||||
TEST("\xde\x00", FE_FIADDm16, FE_MEM(FE_AX, 0, 0, 0));
|
||||
TEST("\xd9\x00", FE_FLDm32, FE_MEM(FE_AX, 0, 0, 0));
|
||||
TEST("\xdd\x00", FE_FLDm64, FE_MEM(FE_AX, 0, 0, 0));
|
||||
TEST("\xdb\x28", FE_FLDm80, FE_MEM(FE_AX, 0, 0, 0));
|
||||
TEST("\xdf\x00", FE_FILDm16, FE_MEM(FE_AX, 0, 0, 0));
|
||||
TEST("\xdb\x00", FE_FILDm32, FE_MEM(FE_AX, 0, 0, 0));
|
||||
TEST("\xdf\x28", FE_FILDm64, FE_MEM(FE_AX, 0, 0, 0));
|
||||
TEST("\xd9\xc1", FE_FLDr, FE_ST1);
|
||||
TEST("\xd9\xe8", FE_FLD1);
|
||||
TEST("\xdf\xe0", FE_FSTSWr, FE_AX);
|
||||
TEST("", FE_FSTSWr, FE_CX);
|
||||
|
||||
// Test VEX encoding
|
||||
TEST("\xc5\xfc\x77", FE_VZEROALL);
|
||||
TEST("\xc5\xf8\x77", FE_VZEROUPPER);
|
||||
|
||||
Reference in New Issue
Block a user