diff options
author | Andreas Kling <kling@serenityos.org> | 2020-08-11 20:27:08 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2020-08-11 20:29:14 +0200 |
commit | c6ee6c0b422c97fbd75db74165e3e04b5781b66e (patch) | |
tree | a165690cc2421bebe33e999e0afb2c28a524fc16 /DevTools/UserspaceEmulator | |
parent | 62ec6e5fe0d09b97d1df286ef766f68f40e6f4e3 (diff) | |
download | serenity-c6ee6c0b422c97fbd75db74165e3e04b5781b66e.zip |
UserspaceEmulator: Log unimplemented instructions with proper backtrace
Diffstat (limited to 'DevTools/UserspaceEmulator')
-rw-r--r-- | DevTools/UserspaceEmulator/SoftCPU.cpp | 497 |
1 files changed, 252 insertions, 245 deletions
diff --git a/DevTools/UserspaceEmulator/SoftCPU.cpp b/DevTools/UserspaceEmulator/SoftCPU.cpp index 871b321621..c2c7984604 100644 --- a/DevTools/UserspaceEmulator/SoftCPU.cpp +++ b/DevTools/UserspaceEmulator/SoftCPU.cpp @@ -34,6 +34,13 @@ # pragma GCC optimize("O3") #endif +#define TODO_INSN() \ + do { \ + report("\n==%d== Unimplemented instruction: %s\n", getpid(), __FUNCTION__); \ + m_emulator.dump_backtrace(); \ + _exit(0); \ + } while (0) + //#define MEMORY_DEBUG #define DEFINE_GENERIC_SHIFT_ROTATE_INSN_HANDLERS(mnemonic, op) \ @@ -943,12 +950,12 @@ ALWAYS_INLINE void SoftCPU::generic_RM32_CL(Op op, const X86::Instruction& insn) insn.modrm().write32(*this, insn, op(*this, data, cl())); } -void SoftCPU::AAA(const X86::Instruction&) { TODO(); } -void SoftCPU::AAD(const X86::Instruction&) { TODO(); } -void SoftCPU::AAM(const X86::Instruction&) { TODO(); } -void SoftCPU::AAS(const X86::Instruction&) { TODO(); } -void SoftCPU::ARPL(const X86::Instruction&) { TODO(); } -void SoftCPU::BOUND(const X86::Instruction&) { TODO(); } +void SoftCPU::AAA(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::AAD(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::AAM(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::AAS(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::ARPL(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::BOUND(const X86::Instruction&) { TODO_INSN(); } template<typename T> ALWAYS_INLINE static T op_bsf(SoftCPU&, T value) @@ -1146,8 +1153,8 @@ void SoftCPU::CALL_FAR_mem16(const X86::Instruction&) { TODO(); } -void SoftCPU::CALL_FAR_mem32(const X86::Instruction&) { TODO(); } -void SoftCPU::CALL_RM16(const X86::Instruction&) { TODO(); } +void SoftCPU::CALL_FAR_mem32(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::CALL_RM16(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::CALL_RM32(const X86::Instruction& insn) { @@ -1157,9 +1164,9 @@ void SoftCPU::CALL_RM32(const X86::Instruction& insn) set_eip(address.value()); } -void SoftCPU::CALL_imm16(const X86::Instruction&) { TODO(); } -void SoftCPU::CALL_imm16_imm16(const X86::Instruction&) { TODO(); } -void SoftCPU::CALL_imm16_imm32(const X86::Instruction&) { TODO(); } +void SoftCPU::CALL_imm16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::CALL_imm16_imm16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::CALL_imm16_imm32(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::CALL_imm32(const X86::Instruction& insn) { @@ -1190,9 +1197,9 @@ void SoftCPU::CLD(const X86::Instruction&) set_df(false); } -void SoftCPU::CLI(const X86::Instruction&) { TODO(); } -void SoftCPU::CLTS(const X86::Instruction&) { TODO(); } -void SoftCPU::CMC(const X86::Instruction&) { TODO(); } +void SoftCPU::CLI(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::CLTS(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::CMC(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::CMOVcc_reg16_RM16(const X86::Instruction& insn) { @@ -1275,7 +1282,7 @@ void SoftCPU::CMPXCHG_RM8_reg8(const X86::Instruction& insn) } } -void SoftCPU::CPUID(const X86::Instruction&) { TODO(); } +void SoftCPU::CPUID(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::CWD(const X86::Instruction&) { @@ -1287,8 +1294,8 @@ void SoftCPU::CWDE(const X86::Instruction&) set_eax(shadow_wrap_with_taint_from(sign_extended_to<u32>(ax().value()), ax())); } -void SoftCPU::DAA(const X86::Instruction&) { TODO(); } -void SoftCPU::DAS(const X86::Instruction&) { TODO(); } +void SoftCPU::DAA(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::DAS(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::DEC_RM16(const X86::Instruction& insn) { @@ -1377,8 +1384,8 @@ void SoftCPU::DIV_RM8(const X86::Instruction& insn) set_ah(shadow_wrap_with_taint_from<u8>(remainder, original_ax, divisor)); } -void SoftCPU::ENTER16(const X86::Instruction&) { TODO(); } -void SoftCPU::ENTER32(const X86::Instruction&) { TODO(); } +void SoftCPU::ENTER16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::ENTER32(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::ESCAPE(const X86::Instruction&) { @@ -1387,126 +1394,126 @@ void SoftCPU::ESCAPE(const X86::Instruction&) TODO(); } -void SoftCPU::FADD_RM32(const X86::Instruction&) { TODO(); } -void SoftCPU::FMUL_RM32(const X86::Instruction&) { TODO(); } -void SoftCPU::FCOM_RM32(const X86::Instruction&) { TODO(); } -void SoftCPU::FCOMP_RM32(const X86::Instruction&) { TODO(); } -void SoftCPU::FSUB_RM32(const X86::Instruction&) { TODO(); } -void SoftCPU::FSUBR_RM32(const X86::Instruction&) { TODO(); } -void SoftCPU::FDIV_RM32(const X86::Instruction&) { TODO(); } -void SoftCPU::FDIVR_RM32(const X86::Instruction&) { TODO(); } -void SoftCPU::FLD_RM32(const X86::Instruction&) { TODO(); } -void SoftCPU::FXCH(const X86::Instruction&) { TODO(); } -void SoftCPU::FST_RM32(const X86::Instruction&) { TODO(); } -void SoftCPU::FNOP(const X86::Instruction&) { TODO(); } -void SoftCPU::FSTP_RM32(const X86::Instruction&) { TODO(); } -void SoftCPU::FLDENV(const X86::Instruction&) { TODO(); } -void SoftCPU::FCHS(const X86::Instruction&) { TODO(); } -void SoftCPU::FABS(const X86::Instruction&) { TODO(); } -void SoftCPU::FTST(const X86::Instruction&) { TODO(); } -void SoftCPU::FXAM(const X86::Instruction&) { TODO(); } -void SoftCPU::FLDCW(const X86::Instruction&) { TODO(); } -void SoftCPU::FLD1(const X86::Instruction&) { TODO(); } -void SoftCPU::FLDL2T(const X86::Instruction&) { TODO(); } -void SoftCPU::FLDL2E(const X86::Instruction&) { TODO(); } -void SoftCPU::FLDPI(const X86::Instruction&) { TODO(); } -void SoftCPU::FLDLG2(const X86::Instruction&) { TODO(); } -void SoftCPU::FLDLN2(const X86::Instruction&) { TODO(); } -void SoftCPU::FLDZ(const X86::Instruction&) { TODO(); } -void SoftCPU::FNSTENV(const X86::Instruction&) { TODO(); } -void SoftCPU::F2XM1(const X86::Instruction&) { TODO(); }; -void SoftCPU::FYL2X(const X86::Instruction&) { TODO(); }; -void SoftCPU::FPTAN(const X86::Instruction&) { TODO(); }; -void SoftCPU::FPATAN(const X86::Instruction&) { TODO(); }; -void SoftCPU::FXTRACT(const X86::Instruction&) { TODO(); }; -void SoftCPU::FPREM1(const X86::Instruction&) { TODO(); }; -void SoftCPU::FDECSTP(const X86::Instruction&) { TODO(); }; -void SoftCPU::FINCSTP(const X86::Instruction&) { TODO(); }; -void SoftCPU::FNSTCW(const X86::Instruction&) { TODO(); }; -void SoftCPU::FPREM(const X86::Instruction&) { TODO(); }; -void SoftCPU::FYL2XP1(const X86::Instruction&) { TODO(); }; -void SoftCPU::FSQRT(const X86::Instruction&) { TODO(); }; -void SoftCPU::FSINCOS(const X86::Instruction&) { TODO(); }; -void SoftCPU::FRNDINT(const X86::Instruction&) { TODO(); }; -void SoftCPU::FSCALE(const X86::Instruction&) { TODO(); }; -void SoftCPU::FSIN(const X86::Instruction&) { TODO(); }; -void SoftCPU::FCOS(const X86::Instruction&) { TODO(); }; -void SoftCPU::FIADD_RM32(const X86::Instruction&) { TODO(); }; -void SoftCPU::FCMOVB(const X86::Instruction&) { TODO(); }; -void SoftCPU::FIMUL_RM32(const X86::Instruction&) { TODO(); }; -void SoftCPU::FCMOVE(const X86::Instruction&) { TODO(); }; -void SoftCPU::FICOM_RM32(const X86::Instruction&) { TODO(); }; -void SoftCPU::FCMOVBE(const X86::Instruction&) { TODO(); }; -void SoftCPU::FICOMP_RM32(const X86::Instruction&) { TODO(); }; -void SoftCPU::FCMOVU(const X86::Instruction&) { TODO(); }; -void SoftCPU::FISUB_RM32(const X86::Instruction&) { TODO(); }; -void SoftCPU::FISUBR_RM32(const X86::Instruction&) { TODO(); }; -void SoftCPU::FUCOMPP(const X86::Instruction&) { TODO(); }; -void SoftCPU::FIDIV_RM32(const X86::Instruction&) { TODO(); }; -void SoftCPU::FIDIVR_RM32(const X86::Instruction&) { TODO(); }; -void SoftCPU::FILD_RM32(const X86::Instruction&) { TODO(); }; -void SoftCPU::FCMOVNB(const X86::Instruction&) { TODO(); }; -void SoftCPU::FISTTP_RM32(const X86::Instruction&) { TODO(); }; -void SoftCPU::FCMOVNE(const X86::Instruction&) { TODO(); }; -void SoftCPU::FIST_RM32(const X86::Instruction&) { TODO(); }; -void SoftCPU::FCMOVNBE(const X86::Instruction&) { TODO(); }; -void SoftCPU::FISTP_RM32(const X86::Instruction&) { TODO(); }; -void SoftCPU::FCMOVNU(const X86::Instruction&) { TODO(); }; -void SoftCPU::FNENI(const X86::Instruction&) { TODO(); }; -void SoftCPU::FNDISI(const X86::Instruction&) { TODO(); }; -void SoftCPU::FNCLEX(const X86::Instruction&) { TODO(); }; -void SoftCPU::FNINIT(const X86::Instruction&) { TODO(); }; -void SoftCPU::FNSETPM(const X86::Instruction&) { TODO(); }; -void SoftCPU::FLD_RM80(const X86::Instruction&) { TODO(); }; -void SoftCPU::FUCOMI(const X86::Instruction&) { TODO(); }; -void SoftCPU::FCOMI(const X86::Instruction&) { TODO(); }; -void SoftCPU::FSTP_RM80(const X86::Instruction&) { TODO(); }; -void SoftCPU::FADD_RM64(const X86::Instruction&) { TODO(); } -void SoftCPU::FMUL_RM64(const X86::Instruction&) { TODO(); } -void SoftCPU::FCOM_RM64(const X86::Instruction&) { TODO(); } -void SoftCPU::FCOMP_RM64(const X86::Instruction&) { TODO(); } -void SoftCPU::FSUB_RM64(const X86::Instruction&) { TODO(); } -void SoftCPU::FSUBR_RM64(const X86::Instruction&) { TODO(); } -void SoftCPU::FDIV_RM64(const X86::Instruction&) { TODO(); } -void SoftCPU::FDIVR_RM64(const X86::Instruction&) { TODO(); } -void SoftCPU::FLD_RM64(const X86::Instruction&) { TODO(); } -void SoftCPU::FFREE(const X86::Instruction&) { TODO(); } -void SoftCPU::FISTTP_RM64(const X86::Instruction&) { TODO(); } -void SoftCPU::FST_RM64(const X86::Instruction&) { TODO(); } -void SoftCPU::FSTP_RM64(const X86::Instruction&) { TODO(); } -void SoftCPU::FRSTOR(const X86::Instruction&) { TODO(); } -void SoftCPU::FUCOM(const X86::Instruction&) { TODO(); } -void SoftCPU::FUCOMP(const X86::Instruction&) { TODO(); } -void SoftCPU::FNSAVE(const X86::Instruction&) { TODO(); } -void SoftCPU::FNSTSW(const X86::Instruction&) { TODO(); } -void SoftCPU::FIADD_RM16(const X86::Instruction&) { TODO(); } -void SoftCPU::FADDP(const X86::Instruction&) { TODO(); } -void SoftCPU::FIMUL_RM16(const X86::Instruction&) { TODO(); } -void SoftCPU::FMULP(const X86::Instruction&) { TODO(); } -void SoftCPU::FICOM_RM16(const X86::Instruction&) { TODO(); } -void SoftCPU::FICOMP_RM16(const X86::Instruction&) { TODO(); } -void SoftCPU::FCOMPP(const X86::Instruction&) { TODO(); } -void SoftCPU::FISUB_RM16(const X86::Instruction&) { TODO(); } -void SoftCPU::FSUBRP(const X86::Instruction&) { TODO(); } -void SoftCPU::FISUBR_RM16(const X86::Instruction&) { TODO(); } -void SoftCPU::FSUBP(const X86::Instruction&) { TODO(); } -void SoftCPU::FIDIV_RM16(const X86::Instruction&) { TODO(); } -void SoftCPU::FDIVRP(const X86::Instruction&) { TODO(); } -void SoftCPU::FIDIVR_RM16(const X86::Instruction&) { TODO(); } -void SoftCPU::FDIVP(const X86::Instruction&) { TODO(); } -void SoftCPU::FILD_RM16(const X86::Instruction&) { TODO(); } -void SoftCPU::FFREEP(const X86::Instruction&) { TODO(); } -void SoftCPU::FISTTP_RM16(const X86::Instruction&) { TODO(); } -void SoftCPU::FIST_RM16(const X86::Instruction&) { TODO(); } -void SoftCPU::FISTP_RM16(const X86::Instruction&) { TODO(); } -void SoftCPU::FBLD_M80(const X86::Instruction&) { TODO(); } -void SoftCPU::FNSTSW_AX(const X86::Instruction&) { TODO(); } -void SoftCPU::FILD_RM64(const X86::Instruction&) { TODO(); } -void SoftCPU::FUCOMIP(const X86::Instruction&) { TODO(); } -void SoftCPU::FBSTP_M80(const X86::Instruction&) { TODO(); } -void SoftCPU::FCOMIP(const X86::Instruction&) { TODO(); } -void SoftCPU::FISTP_RM64(const X86::Instruction&) { TODO(); } -void SoftCPU::HLT(const X86::Instruction&) { TODO(); } +void SoftCPU::FADD_RM32(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FMUL_RM32(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FCOM_RM32(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FCOMP_RM32(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FSUB_RM32(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FSUBR_RM32(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FDIV_RM32(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FDIVR_RM32(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FLD_RM32(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FXCH(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FST_RM32(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FNOP(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FSTP_RM32(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FLDENV(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FCHS(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FABS(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FTST(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FXAM(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FLDCW(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FLD1(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FLDL2T(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FLDL2E(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FLDPI(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FLDLG2(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FLDLN2(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FLDZ(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FNSTENV(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::F2XM1(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FYL2X(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FPTAN(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FPATAN(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FXTRACT(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FPREM1(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FDECSTP(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FINCSTP(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FNSTCW(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FPREM(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FYL2XP1(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FSQRT(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FSINCOS(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FRNDINT(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FSCALE(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FSIN(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FCOS(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FIADD_RM32(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FCMOVB(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FIMUL_RM32(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FCMOVE(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FICOM_RM32(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FCMOVBE(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FICOMP_RM32(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FCMOVU(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FISUB_RM32(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FISUBR_RM32(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FUCOMPP(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FIDIV_RM32(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FIDIVR_RM32(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FILD_RM32(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FCMOVNB(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FISTTP_RM32(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FCMOVNE(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FIST_RM32(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FCMOVNBE(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FISTP_RM32(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FCMOVNU(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FNENI(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FNDISI(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FNCLEX(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FNINIT(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FNSETPM(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FLD_RM80(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FUCOMI(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FCOMI(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FSTP_RM80(const X86::Instruction&) { TODO_INSN(); }; +void SoftCPU::FADD_RM64(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FMUL_RM64(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FCOM_RM64(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FCOMP_RM64(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FSUB_RM64(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FSUBR_RM64(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FDIV_RM64(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FDIVR_RM64(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FLD_RM64(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FFREE(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FISTTP_RM64(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FST_RM64(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FSTP_RM64(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FRSTOR(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FUCOM(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FUCOMP(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FNSAVE(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FNSTSW(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FIADD_RM16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FADDP(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FIMUL_RM16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FMULP(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FICOM_RM16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FICOMP_RM16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FCOMPP(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FISUB_RM16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FSUBRP(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FISUBR_RM16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FSUBP(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FIDIV_RM16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FDIVRP(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FIDIVR_RM16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FDIVP(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FILD_RM16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FFREEP(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FISTTP_RM16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FIST_RM16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FISTP_RM16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FBLD_M80(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FNSTSW_AX(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FILD_RM64(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FUCOMIP(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FBSTP_M80(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FCOMIP(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::FISTP_RM64(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::HLT(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::IDIV_RM16(const X86::Instruction& insn) { @@ -1677,11 +1684,11 @@ void SoftCPU::INC_reg32(const X86::Instruction& insn) gpr32(insn.reg32()) = op_inc(*this, const_gpr32(insn.reg32())); } -void SoftCPU::INSB(const X86::Instruction&) { TODO(); } -void SoftCPU::INSD(const X86::Instruction&) { TODO(); } -void SoftCPU::INSW(const X86::Instruction&) { TODO(); } -void SoftCPU::INT3(const X86::Instruction&) { TODO(); } -void SoftCPU::INTO(const X86::Instruction&) { TODO(); } +void SoftCPU::INSB(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::INSD(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::INSW(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::INT3(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::INTO(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::INT_imm8(const X86::Instruction& insn) { @@ -1690,14 +1697,14 @@ void SoftCPU::INT_imm8(const X86::Instruction& insn) set_eax(shadow_wrap_as_initialized(m_emulator.virt_syscall(eax().value(), edx().value(), ecx().value(), ebx().value()))); } -void SoftCPU::INVLPG(const X86::Instruction&) { TODO(); } -void SoftCPU::IN_AL_DX(const X86::Instruction&) { TODO(); } -void SoftCPU::IN_AL_imm8(const X86::Instruction&) { TODO(); } -void SoftCPU::IN_AX_DX(const X86::Instruction&) { TODO(); } -void SoftCPU::IN_AX_imm8(const X86::Instruction&) { TODO(); } -void SoftCPU::IN_EAX_DX(const X86::Instruction&) { TODO(); } -void SoftCPU::IN_EAX_imm8(const X86::Instruction&) { TODO(); } -void SoftCPU::IRET(const X86::Instruction&) { TODO(); } +void SoftCPU::INVLPG(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::IN_AL_DX(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::IN_AL_imm8(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::IN_AX_DX(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::IN_AX_imm8(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::IN_EAX_DX(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::IN_EAX_imm8(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::IRET(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::JCXZ_imm8(const X86::Instruction& insn) { @@ -1712,9 +1719,9 @@ void SoftCPU::JCXZ_imm8(const X86::Instruction& insn) } } -void SoftCPU::JMP_FAR_mem16(const X86::Instruction&) { TODO(); } -void SoftCPU::JMP_FAR_mem32(const X86::Instruction&) { TODO(); } -void SoftCPU::JMP_RM16(const X86::Instruction&) { TODO(); } +void SoftCPU::JMP_FAR_mem16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::JMP_FAR_mem32(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::JMP_RM16(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::JMP_RM32(const X86::Instruction& insn) { @@ -1726,8 +1733,8 @@ void SoftCPU::JMP_imm16(const X86::Instruction& insn) set_eip(eip() + (i16)insn.imm16()); } -void SoftCPU::JMP_imm16_imm16(const X86::Instruction&) { TODO(); } -void SoftCPU::JMP_imm16_imm32(const X86::Instruction&) { TODO(); } +void SoftCPU::JMP_imm16_imm16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::JMP_imm16_imm32(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::JMP_imm32(const X86::Instruction& insn) { @@ -1753,12 +1760,12 @@ void SoftCPU::Jcc_imm8(const X86::Instruction& insn) set_eip(eip() + (i8)insn.imm8()); } -void SoftCPU::LAHF(const X86::Instruction&) { TODO(); } -void SoftCPU::LAR_reg16_RM16(const X86::Instruction&) { TODO(); } -void SoftCPU::LAR_reg32_RM32(const X86::Instruction&) { TODO(); } -void SoftCPU::LDS_reg16_mem16(const X86::Instruction&) { TODO(); } -void SoftCPU::LDS_reg32_mem32(const X86::Instruction&) { TODO(); } -void SoftCPU::LEAVE16(const X86::Instruction&) { TODO(); } +void SoftCPU::LAHF(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::LAR_reg16_RM16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::LAR_reg32_RM32(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::LDS_reg16_mem16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::LDS_reg32_mem32(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::LEAVE16(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::LEAVE32(const X86::Instruction&) { @@ -1779,16 +1786,16 @@ void SoftCPU::LEA_reg32_mem32(const X86::Instruction& insn) gpr32(insn.reg32()) = shadow_wrap_as_initialized<u32>(insn.modrm().resolve(*this, insn).offset()); } -void SoftCPU::LES_reg16_mem16(const X86::Instruction&) { TODO(); } -void SoftCPU::LES_reg32_mem32(const X86::Instruction&) { TODO(); } -void SoftCPU::LFS_reg16_mem16(const X86::Instruction&) { TODO(); } -void SoftCPU::LFS_reg32_mem32(const X86::Instruction&) { TODO(); } -void SoftCPU::LGDT(const X86::Instruction&) { TODO(); } -void SoftCPU::LGS_reg16_mem16(const X86::Instruction&) { TODO(); } -void SoftCPU::LGS_reg32_mem32(const X86::Instruction&) { TODO(); } -void SoftCPU::LIDT(const X86::Instruction&) { TODO(); } -void SoftCPU::LLDT_RM16(const X86::Instruction&) { TODO(); } -void SoftCPU::LMSW_RM16(const X86::Instruction&) { TODO(); } +void SoftCPU::LES_reg16_mem16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::LES_reg32_mem32(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::LFS_reg16_mem16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::LFS_reg32_mem32(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::LGDT(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::LGS_reg16_mem16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::LGS_reg32_mem32(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::LIDT(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::LLDT_RM16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::LMSW_RM16(const X86::Instruction&) { TODO_INSN(); } template<typename T> ALWAYS_INLINE static void do_lods(SoftCPU& cpu, const X86::Instruction& insn) @@ -1856,11 +1863,11 @@ void SoftCPU::LOOP_imm8(const X86::Instruction& insn) } } -void SoftCPU::LSL_reg16_RM16(const X86::Instruction&) { TODO(); } -void SoftCPU::LSL_reg32_RM32(const X86::Instruction&) { TODO(); } -void SoftCPU::LSS_reg16_mem16(const X86::Instruction&) { TODO(); } -void SoftCPU::LSS_reg32_mem32(const X86::Instruction&) { TODO(); } -void SoftCPU::LTR_RM16(const X86::Instruction&) { TODO(); } +void SoftCPU::LSL_reg16_RM16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::LSL_reg32_RM32(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::LSS_reg16_mem16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::LSS_reg32_mem32(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::LTR_RM16(const X86::Instruction&) { TODO_INSN(); } template<typename T> ALWAYS_INLINE static void do_movs(SoftCPU& cpu, const X86::Instruction& insn) @@ -1935,8 +1942,8 @@ void SoftCPU::MOV_AX_moff16(const X86::Instruction& insn) set_ax(read_memory16({ segment(insn.segment_prefix().value_or(X86::SegmentRegister::DS)), insn.imm_address() })); } -void SoftCPU::MOV_CR_reg32(const X86::Instruction&) { TODO(); } -void SoftCPU::MOV_DR_reg32(const X86::Instruction&) { TODO(); } +void SoftCPU::MOV_CR_reg32(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::MOV_DR_reg32(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::MOV_EAX_moff32(const X86::Instruction& insn) { @@ -1953,7 +1960,7 @@ void SoftCPU::MOV_RM16_reg16(const X86::Instruction& insn) insn.modrm().write16(*this, insn, const_gpr16(insn.reg16())); } -void SoftCPU::MOV_RM16_seg(const X86::Instruction&) { TODO(); } +void SoftCPU::MOV_RM16_seg(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::MOV_RM32_imm32(const X86::Instruction& insn) { @@ -2000,8 +2007,8 @@ void SoftCPU::MOV_reg16_imm16(const X86::Instruction& insn) gpr16(insn.reg16()) = shadow_wrap_as_initialized(insn.imm16()); } -void SoftCPU::MOV_reg32_CR(const X86::Instruction&) { TODO(); } -void SoftCPU::MOV_reg32_DR(const X86::Instruction&) { TODO(); } +void SoftCPU::MOV_reg32_CR(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::MOV_reg32_DR(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::MOV_reg32_RM32(const X86::Instruction& insn) { @@ -2023,8 +2030,8 @@ void SoftCPU::MOV_reg8_imm8(const X86::Instruction& insn) gpr8(insn.reg8()) = shadow_wrap_as_initialized(insn.imm8()); } -void SoftCPU::MOV_seg_RM16(const X86::Instruction&) { TODO(); } -void SoftCPU::MOV_seg_RM32(const X86::Instruction&) { TODO(); } +void SoftCPU::MOV_seg_RM16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::MOV_seg_RM32(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::MUL_RM16(const X86::Instruction& insn) { @@ -2101,21 +2108,21 @@ void SoftCPU::NOT_RM8(const X86::Instruction& insn) insn.modrm().write8(*this, insn, ValueWithShadow<u8>(~data.value(), data.shadow())); } -void SoftCPU::OUTSB(const X86::Instruction&) { TODO(); } -void SoftCPU::OUTSD(const X86::Instruction&) { TODO(); } -void SoftCPU::OUTSW(const X86::Instruction&) { TODO(); } -void SoftCPU::OUT_DX_AL(const X86::Instruction&) { TODO(); } -void SoftCPU::OUT_DX_AX(const X86::Instruction&) { TODO(); } -void SoftCPU::OUT_DX_EAX(const X86::Instruction&) { TODO(); } -void SoftCPU::OUT_imm8_AL(const X86::Instruction&) { TODO(); } -void SoftCPU::OUT_imm8_AX(const X86::Instruction&) { TODO(); } -void SoftCPU::OUT_imm8_EAX(const X86::Instruction&) { TODO(); } -void SoftCPU::PADDB_mm1_mm2m64(const X86::Instruction&) { TODO(); } -void SoftCPU::PADDW_mm1_mm2m64(const X86::Instruction&) { TODO(); } -void SoftCPU::PADDD_mm1_mm2m64(const X86::Instruction&) { TODO(); } -void SoftCPU::POPA(const X86::Instruction&) { TODO(); } -void SoftCPU::POPAD(const X86::Instruction&) { TODO(); } -void SoftCPU::POPF(const X86::Instruction&) { TODO(); } +void SoftCPU::OUTSB(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::OUTSD(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::OUTSW(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::OUT_DX_AL(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::OUT_DX_AX(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::OUT_DX_EAX(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::OUT_imm8_AL(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::OUT_imm8_AX(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::OUT_imm8_EAX(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::PADDB_mm1_mm2m64(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::PADDW_mm1_mm2m64(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::PADDD_mm1_mm2m64(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::POPA(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::POPAD(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::POPF(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::POPFD(const X86::Instruction&) { @@ -2125,10 +2132,10 @@ void SoftCPU::POPFD(const X86::Instruction&) taint_flags_from(popped_value); } -void SoftCPU::POP_DS(const X86::Instruction&) { TODO(); } -void SoftCPU::POP_ES(const X86::Instruction&) { TODO(); } -void SoftCPU::POP_FS(const X86::Instruction&) { TODO(); } -void SoftCPU::POP_GS(const X86::Instruction&) { TODO(); } +void SoftCPU::POP_DS(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::POP_ES(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::POP_FS(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::POP_GS(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::POP_RM16(const X86::Instruction& insn) { @@ -2140,7 +2147,7 @@ void SoftCPU::POP_RM32(const X86::Instruction& insn) insn.modrm().write32(*this, insn, pop32()); } -void SoftCPU::POP_SS(const X86::Instruction&) { TODO(); } +void SoftCPU::POP_SS(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::POP_reg16(const X86::Instruction& insn) { @@ -2152,9 +2159,9 @@ void SoftCPU::POP_reg32(const X86::Instruction& insn) gpr32(insn.reg32()) = pop32(); } -void SoftCPU::PUSHA(const X86::Instruction&) { TODO(); } -void SoftCPU::PUSHAD(const X86::Instruction&) { TODO(); } -void SoftCPU::PUSHF(const X86::Instruction&) { TODO(); } +void SoftCPU::PUSHA(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::PUSHAD(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::PUSHF(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::PUSHFD(const X86::Instruction&) { @@ -2162,20 +2169,20 @@ void SoftCPU::PUSHFD(const X86::Instruction&) push32(shadow_wrap_as_initialized(m_eflags & 0x00fcffff)); } -void SoftCPU::PUSH_CS(const X86::Instruction&) { TODO(); } -void SoftCPU::PUSH_DS(const X86::Instruction&) { TODO(); } -void SoftCPU::PUSH_ES(const X86::Instruction&) { TODO(); } -void SoftCPU::PUSH_FS(const X86::Instruction&) { TODO(); } -void SoftCPU::PUSH_GS(const X86::Instruction&) { TODO(); } -void SoftCPU::PUSH_RM16(const X86::Instruction&) { TODO(); } +void SoftCPU::PUSH_CS(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::PUSH_DS(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::PUSH_ES(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::PUSH_FS(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::PUSH_GS(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::PUSH_RM16(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::PUSH_RM32(const X86::Instruction& insn) { push32(insn.modrm().read32<ValueWithShadow<u32>>(*this, insn)); } -void SoftCPU::PUSH_SP_8086_80186(const X86::Instruction&) { TODO(); } -void SoftCPU::PUSH_SS(const X86::Instruction&) { TODO(); } +void SoftCPU::PUSH_SP_8086_80186(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::PUSH_SS(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::PUSH_imm16(const X86::Instruction& insn) { @@ -2312,7 +2319,7 @@ ALWAYS_INLINE static T op_rcr(SoftCPU& cpu, T data, ValueWithShadow<u8> steps) DEFINE_GENERIC_SHIFT_ROTATE_INSN_HANDLERS(RCR, op_rcr) -void SoftCPU::RDTSC(const X86::Instruction&) { TODO(); } +void SoftCPU::RDTSC(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::RET(const X86::Instruction& insn) { @@ -2322,8 +2329,8 @@ void SoftCPU::RET(const X86::Instruction& insn) set_eip(ret_address.value()); } -void SoftCPU::RETF(const X86::Instruction&) { TODO(); } -void SoftCPU::RETF_imm16(const X86::Instruction&) { TODO(); } +void SoftCPU::RETF(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::RETF_imm16(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::RET_imm16(const X86::Instruction& insn) { @@ -2402,7 +2409,7 @@ ALWAYS_INLINE static T op_ror(SoftCPU& cpu, T data, ValueWithShadow<u8> steps) DEFINE_GENERIC_SHIFT_ROTATE_INSN_HANDLERS(ROR, op_ror) -void SoftCPU::SAHF(const X86::Instruction&) { TODO(); } +void SoftCPU::SAHF(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::SALC(const X86::Instruction&) { @@ -2481,7 +2488,7 @@ void SoftCPU::SETcc_RM8(const X86::Instruction& insn) insn.modrm().write8(*this, insn, shadow_wrap_as_initialized<u8>(evaluate_condition(insn.cc()))); } -void SoftCPU::SGDT(const X86::Instruction&) { TODO(); } +void SoftCPU::SGDT(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::SHLD_RM16_reg16_CL(const X86::Instruction& insn) { @@ -2527,9 +2534,9 @@ void SoftCPU::SHRD_RM32_reg32_imm8(const X86::Instruction& insn) DEFINE_GENERIC_SHIFT_ROTATE_INSN_HANDLERS(SHR, op_shr) -void SoftCPU::SIDT(const X86::Instruction&) { TODO(); } -void SoftCPU::SLDT_RM16(const X86::Instruction&) { TODO(); } -void SoftCPU::SMSW_RM16(const X86::Instruction&) { TODO(); } +void SoftCPU::SIDT(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::SLDT_RM16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::SMSW_RM16(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::STC(const X86::Instruction&) { @@ -2541,7 +2548,7 @@ void SoftCPU::STD(const X86::Instruction&) set_df(true); } -void SoftCPU::STI(const X86::Instruction&) { TODO(); } +void SoftCPU::STI(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::STOSB(const X86::Instruction& insn) { @@ -2567,14 +2574,14 @@ void SoftCPU::STOSW(const X86::Instruction& insn) }); } -void SoftCPU::STR_RM16(const X86::Instruction&) { TODO(); } -void SoftCPU::UD0(const X86::Instruction&) { TODO(); } -void SoftCPU::UD1(const X86::Instruction&) { TODO(); } -void SoftCPU::UD2(const X86::Instruction&) { TODO(); } -void SoftCPU::VERR_RM16(const X86::Instruction&) { TODO(); } -void SoftCPU::VERW_RM16(const X86::Instruction&) { TODO(); } -void SoftCPU::WAIT(const X86::Instruction&) { TODO(); } -void SoftCPU::WBINVD(const X86::Instruction&) { TODO(); } +void SoftCPU::STR_RM16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::UD0(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::UD1(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::UD2(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::VERR_RM16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::VERW_RM16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::WAIT(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::WBINVD(const X86::Instruction&) { TODO_INSN(); } void SoftCPU::XADD_RM16_reg16(const X86::Instruction& insn) { @@ -2678,16 +2685,16 @@ DEFINE_GENERIC_INSN_HANDLERS(AND, op_and, true, false, false) DEFINE_GENERIC_INSN_HANDLERS(CMP, op_sub, false, false, false) DEFINE_GENERIC_INSN_HANDLERS_PARTIAL(TEST, op_and, false, false, false) -void SoftCPU::MOVQ_mm1_mm2m64(const X86::Instruction&) { TODO(); } -void SoftCPU::EMMS(const X86::Instruction&) { TODO(); } -void SoftCPU::MOVQ_mm1_m64_mm2(const X86::Instruction&) { TODO(); } -void SoftCPU::wrap_0xC0(const X86::Instruction&) { TODO(); } -void SoftCPU::wrap_0xC1_16(const X86::Instruction&) { TODO(); } -void SoftCPU::wrap_0xC1_32(const X86::Instruction&) { TODO(); } -void SoftCPU::wrap_0xD0(const X86::Instruction&) { TODO(); } -void SoftCPU::wrap_0xD1_16(const X86::Instruction&) { TODO(); } -void SoftCPU::wrap_0xD1_32(const X86::Instruction&) { TODO(); } -void SoftCPU::wrap_0xD2(const X86::Instruction&) { TODO(); } -void SoftCPU::wrap_0xD3_16(const X86::Instruction&) { TODO(); } -void SoftCPU::wrap_0xD3_32(const X86::Instruction&) { TODO(); } +void SoftCPU::MOVQ_mm1_mm2m64(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::EMMS(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::MOVQ_mm1_m64_mm2(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::wrap_0xC0(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::wrap_0xC1_16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::wrap_0xC1_32(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::wrap_0xD0(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::wrap_0xD1_16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::wrap_0xD1_32(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::wrap_0xD2(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::wrap_0xD3_16(const X86::Instruction&) { TODO_INSN(); } +void SoftCPU::wrap_0xD3_32(const X86::Instruction&) { TODO_INSN(); } } |