mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 12:37:44 +00:00
LibX86: Disassemble most remaining FPU instructions
Some of the remaining instructions have different behavior for register and non-register ops. Since we already have the two-level flags tables, model this by setting all handlers in the two-level table to the register op handler, while the first-level flags table stores the action for the non-reg handler.
This commit is contained in:
parent
06c59cce6f
commit
8593bdb711
5 changed files with 350 additions and 9 deletions
|
@ -200,6 +200,36 @@ public:
|
|||
virtual void FSCALE(const Instruction&) = 0;
|
||||
virtual void FSIN(const Instruction&) = 0;
|
||||
virtual void FCOS(const Instruction&) = 0;
|
||||
virtual void FIADD_RM32(const Instruction&) = 0;
|
||||
virtual void FADDP(const Instruction&) = 0;
|
||||
virtual void FIMUL_RM32(const Instruction&) = 0;
|
||||
virtual void FCMOVE(const Instruction&) = 0;
|
||||
virtual void FICOM_RM32(const Instruction&) = 0;
|
||||
virtual void FCMOVBE(const Instruction&) = 0;
|
||||
virtual void FICOMP_RM32(const Instruction&) = 0;
|
||||
virtual void FCMOVU(const Instruction&) = 0;
|
||||
virtual void FISUB_RM32(const Instruction&) = 0;
|
||||
virtual void FISUBR_RM32(const Instruction&) = 0;
|
||||
virtual void FUCOMPP(const Instruction&) = 0;
|
||||
virtual void FIDIV_RM32(const Instruction&) = 0;
|
||||
virtual void FIDIVR_RM32(const Instruction&) = 0;
|
||||
virtual void FILD_RM32(const Instruction&) = 0;
|
||||
virtual void FCMOVNB(const Instruction&) = 0;
|
||||
virtual void FISTTP_RM32(const Instruction&) = 0;
|
||||
virtual void FCMOVNE(const Instruction&) = 0;
|
||||
virtual void FIST_RM32(const Instruction&) = 0;
|
||||
virtual void FCMOVNBE(const Instruction&) = 0;
|
||||
virtual void FISTP_RM32(const Instruction&) = 0;
|
||||
virtual void FCMOVNU(const Instruction&) = 0;
|
||||
virtual void FNENI(const Instruction&) = 0;
|
||||
virtual void FNDISI(const Instruction&) = 0;
|
||||
virtual void FNCLEX(const Instruction&) = 0;
|
||||
virtual void FNINIT(const Instruction&) = 0;
|
||||
virtual void FNSETPM(const Instruction&) = 0;
|
||||
virtual void FLD_RM80(const Instruction&) = 0;
|
||||
virtual void FUCOMI(const Instruction&) = 0;
|
||||
virtual void FCOMI(const Instruction&) = 0;
|
||||
virtual void FSTP_RM80(const Instruction&) = 0;
|
||||
virtual void FADD_RM64(const Instruction&) = 0;
|
||||
virtual void FMUL_RM64(const Instruction&) = 0;
|
||||
virtual void FCOM_RM64(const Instruction&) = 0;
|
||||
|
@ -208,6 +238,43 @@ public:
|
|||
virtual void FSUBR_RM64(const Instruction&) = 0;
|
||||
virtual void FDIV_RM64(const Instruction&) = 0;
|
||||
virtual void FDIVR_RM64(const Instruction&) = 0;
|
||||
virtual void FLD_RM64(const Instruction&) = 0;
|
||||
virtual void FFREE(const Instruction&) = 0;
|
||||
virtual void FISTTP_RM64(const Instruction&) = 0;
|
||||
virtual void FST_RM64(const Instruction&) = 0;
|
||||
virtual void FSTP_RM64(const Instruction&) = 0;
|
||||
virtual void FRSTOR(const Instruction&) = 0;
|
||||
virtual void FUCOM(const Instruction&) = 0;
|
||||
virtual void FUCOMP(const Instruction&) = 0;
|
||||
virtual void FNSAVE(const Instruction&) = 0;
|
||||
virtual void FNSTSW(const Instruction&) = 0;
|
||||
virtual void FIADD_RM16(const Instruction&) = 0;
|
||||
virtual void FCMOVB(const Instruction&) = 0;
|
||||
virtual void FIMUL_RM16(const Instruction&) = 0;
|
||||
virtual void FMULP(const Instruction&) = 0;
|
||||
virtual void FICOM_RM16(const Instruction&) = 0;
|
||||
virtual void FICOMP_RM16(const Instruction&) = 0;
|
||||
virtual void FCOMPP(const Instruction&) = 0;
|
||||
virtual void FISUB_RM16(const Instruction&) = 0;
|
||||
virtual void FSUBRP(const Instruction&) = 0;
|
||||
virtual void FISUBR_RM16(const Instruction&) = 0;
|
||||
virtual void FSUBP(const Instruction&) = 0;
|
||||
virtual void FIDIV_RM16(const Instruction&) = 0;
|
||||
virtual void FDIVRP(const Instruction&) = 0;
|
||||
virtual void FIDIVR_RM16(const Instruction&) = 0;
|
||||
virtual void FDIVP(const Instruction&) = 0;
|
||||
virtual void FILD_RM16(const Instruction&) = 0;
|
||||
virtual void FFREEP(const Instruction&) = 0;
|
||||
virtual void FISTTP_RM16(const Instruction&) = 0;
|
||||
virtual void FIST_RM16(const Instruction&) = 0;
|
||||
virtual void FISTP_RM16(const Instruction&) = 0;
|
||||
virtual void FBLD_M80(const Instruction&) = 0;
|
||||
virtual void FNSTSW_AX(const Instruction&) = 0;
|
||||
virtual void FILD_RM64(const Instruction&) = 0;
|
||||
virtual void FUCOMIP(const Instruction&) = 0;
|
||||
virtual void FBSTP_M80(const Instruction&) = 0;
|
||||
virtual void FCOMIP(const Instruction&) = 0;
|
||||
virtual void FISTP_RM64(const Instruction&) = 0;
|
||||
virtual void HLT(const Instruction&) = 0;
|
||||
virtual void IDIV_RM16(const Instruction&) = 0;
|
||||
virtual void IDIV_RM32(const Instruction&) = 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue