instrs: Encode memory size for FPU instructions

This commit is contained in:
Alexis Engelke
2020-06-19 14:03:04 +02:00
parent bacfecfead
commit 618d90ed42
2 changed files with 60 additions and 56 deletions

View File

@@ -1262,14 +1262,14 @@ VEX.F3.L0.0f38f7 RMV GP GP GP - SARX
F3.0f38f6 RM GP GP - - ADOX
#
# FPU
d8//0 M FPU - - - FADD_F32
d8//1 M FPU - - - FMUL_F32
d8//2 M FPU - - - FCOM_F32
d8//3 M FPU - - - FCOMP_F32
d8//4 M FPU - - - FSUB_F32
d8//5 M FPU - - - FSUBR_F32
d8//6 M FPU - - - FDIV_F32
d8//7 M FPU - - - FDIVR_F32
d8//0 M MEM32 - - - FADD
d8//1 M MEM32 - - - FMUL
d8//2 M MEM32 - - - FCOM
d8//3 M MEM32 - - - FCOMP
d8//4 M MEM32 - - - FSUB
d8//5 M MEM32 - - - FSUBR
d8//6 M MEM32 - - - FDIV
d8//7 M MEM32 - - - FDIVR
d8//c0+ AO FPU FPU - - FADD
d8//c8+ AO FPU FPU - - FMUL
d8//d0+ AO FPU FPU - - FCOM
@@ -1278,13 +1278,13 @@ d8//e0+ AO FPU FPU - - FSUB
d8//e8+ AO FPU FPU - - FSUBR
d8//f0+ AO FPU FPU - - FDIV
d8//f8+ AO FPU FPU - - FDIVR
d9//0 M FPU - - - FLD_F32
d9//2 M FPU - - - FST_F32
d9//3 M FPU - - - FSTP_F32
d9//0 M MEM32 - - - FLD
d9//2 M MEM32 - - - FST
d9//3 M MEM32 - - - FSTP
d9//4 M MEMZ - - - FLDENV
d9//5 M GP16 - - - FLDCW
d9//5 M MEM16 - - - FLDCW
d9//6 M MEMZ - - - FSTENV
d9//7 M GP16 - - - FSTCW
d9//7 M MEM16 - - - FSTCW
d9//c8+ O FPU - - - FXCH
d9//d0 NP - - - - FNOP
d9//e0 NP - - - - FCHS
@@ -1314,25 +1314,25 @@ d9//fc NP - - - - FRNDINT
d9//fd NP - - - - FSCALE
d9//fe NP - - - - FSIN
d9//ff NP - - - - FCOS
da//0 M FPU - - - FIADD_I32
da//1 M FPU - - - FIMUL_I32
da//2 M FPU - - - FICOM_I32
da//3 M FPU - - - FICOMP_I32
da//4 M FPU - - - FISUB_I32
da//5 M FPU - - - FISUBR_I32
da//6 M FPU - - - FIDIV_I32
da//7 M FPU - - - FIDIVR_I32
da//0 M MEM32 - - - FIADD
da//1 M MEM32 - - - FIMUL
da//2 M MEM32 - - - FICOM
da//3 M MEM32 - - - FICOMP
da//4 M MEM32 - - - FISUB
da//5 M MEM32 - - - FISUBR
da//6 M MEM32 - - - FIDIV
da//7 M MEM32 - - - FIDIVR
da//c0+ O FPU - - - FCMOVB
da//c8+ O FPU - - - FCMOVE
da//d0+ O FPU - - - FCMOVBE
da//d8+ O FPU - - - FCMOVU
da//e9 NP - - - - FUCOMPP
db//0 M FPU - - - FILD_I32
db//1 M FPU - - - FISTTP_I32
db//2 M FPU - - - FIST_I32
db//3 M FPU - - - FISTP_I32
db//5 M FPU - - - FLD_F80
db//7 M FPU - - - FSTP_F80
db//0 M MEM32 - - - FILD
db//1 M MEM32 - - - FISTTP
db//2 M MEM32 - - - FIST
db//3 M MEM32 - - - FISTP
db//5 M FPU - - - FLD
db//7 M FPU - - - FSTP
db//c0+ O FPU - - - FCMOVNB
db//c8+ O FPU - - - FCMOVNE
db//d0+ O FPU - - - FCMOVNBE
@@ -1341,40 +1341,40 @@ db//e2 NP - - - - FCLEX
db//e3 NP - - - - FINIT
db//e8+ O FPU - - - FUCOMI
db//f0+ O FPU - - - FCOMI
dc//0 M FPU - - - FADD_F64
dc//1 M FPU - - - FMUL_F64
dc//2 M FPU - - - FCOM_F64
dc//3 M FPU - - - FCOMP_F64
dc//4 M FPU - - - FSUB_F64
dc//5 M FPU - - - FSUBR_F64
dc//6 M FPU - - - FDIV_F64
dc//7 M FPU - - - FDIVR_F64
dc//0 M MEM64 - - - FADD
dc//1 M MEM64 - - - FMUL
dc//2 M MEM64 - - - FCOM
dc//3 M MEM64 - - - FCOMP
dc//4 M MEM64 - - - FSUB
dc//5 M MEM64 - - - FSUBR
dc//6 M MEM64 - - - FDIV
dc//7 M MEM64 - - - FDIVR
dc//c0+ OA FPU FPU - - FADD
dc//c8+ OA FPU FPU - - FMUL
dc//e0+ OA FPU FPU - - FSUBR
dc//e8+ OA FPU FPU - - FSUB
dc//f0+ OA FPU FPU - - FDIVR
dc//f8+ OA FPU FPU - - FDIV
dd//0 M FPU - - - FLD_F64
dd//1 M FPU - - - FISTTP_I64
dd//2 M FPU - - - FST_F64
dd//3 M FPU - - - FSTP_F64
dd//0 M MEM64 - - - FLD
dd//1 M MEM64 - - - FISTTP
dd//2 M MEM64 - - - FST
dd//3 M MEM64 - - - FSTP
dd//4 M MEMZ - - - FRSTOR
dd//6 M MEMZ - - - FSAVE
dd//7 M GP16 - - - FSTSW
dd//7 M MEM16 - - - FSTSW
dd//c0+ O FPU - - - FFREE
dd//d0+ O FPU - - - FST
dd//d8+ O FPU - - - FSTP
dd//e0+ O FPU - - - FUCOM
dd//e8+ O FPU - - - FUCOMP
de//0 M FPU - - - FIADD_I16
de//1 M FPU - - - FIMUL_I16
de//2 M FPU - - - FICOM_I16
de//3 M FPU - - - FICOMP_I16
de//4 M FPU - - - FISUB_I16
de//5 M FPU - - - FISUBR_I16
de//6 M FPU - - - FIDIV_I16
de//7 M FPU - - - FIDIVR_I16
de//0 M MEM16 - - - FIADD
de//1 M MEM16 - - - FIMUL
de//2 M MEM16 - - - FICOM
de//3 M MEM16 - - - FICOMP
de//4 M MEM16 - - - FISUB
de//5 M MEM16 - - - FISUBR
de//6 M MEM16 - - - FIDIV
de//7 M MEM16 - - - FIDIVR
de//c0+ OA FPU FPU - - FADDP
de//c8+ OA FPU FPU - - FMULP
de//d9 NP - - - - FCOMPP
@@ -1382,14 +1382,14 @@ de//e0+ OA FPU FPU - - FSUBRP
de//e8+ OA FPU FPU - - FSUBP
de//f0+ OA FPU FPU - - FDIVRP
de//f8+ OA FPU FPU - - FDIVP
df//0 M FPU - - - FILD_I16
df//1 M FPU - - - FISTTP_I16
df//2 M FPU - - - FIST_I16
df//3 M FPU - - - FISTP_I16
df//4 M MEMZ - - - FBLD
df//5 M GP - - - FILD_I64
df//6 M MEMZ - - - FBSTP
df//7 M GP - - - FISTP_I64
df//0 M MEM16 - - - FILD
df//1 M MEM16 - - - FISTTP
df//2 M MEM16 - - - FIST
df//3 M MEM16 - - - FISTP
df//4 M FPU - - - FBLD
df//5 M MEM64 - - - FILD
df//6 M FPU - - - FBSTP
df//7 M MEM64 - - - FISTP
# FSTSW AX
df//e0 O GP16 - - - FSTSW
df//f0+ AO FPU FPU - - FCOMIP

View File

@@ -105,6 +105,10 @@ OPKIND_LOOKUP = {
"SREG": (0, 0, 3),
"FPU": (0, 0, 4),
"MEMZ": (0, 0, 0),
"MEM8": (1, 0, 0),
"MEM16": (1, 1, 0),
"MEM32": (1, 2, 0),
"MEM64": (1, 3, 0),
"BND": (0, 0, 8),
"CR": (0, 0, 9),
"DR": (0, 0, 10),