summaryrefslogtreecommitdiff
path: root/DevTools/UserspaceEmulator/SoftCPU.h
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2020-07-10 17:18:49 +0200
committerAndreas Kling <kling@serenityos.org>2020-07-10 20:20:27 +0200
commit0cf7fd5268582eca705158f71541013ef340738d (patch)
tree3541d1fd69c521e8912d9d322611c75ebd6173a4 /DevTools/UserspaceEmulator/SoftCPU.h
parent9955819d92438a06465927b3b4eadb8fc1c383e1 (diff)
downloadserenity-0cf7fd5268582eca705158f71541013ef340738d.zip
UserspaceEmulator+LibX86: Implement all the forms of XOR
And they're all generic, which will make it easy to support more ops.
Diffstat (limited to 'DevTools/UserspaceEmulator/SoftCPU.h')
-rw-r--r--DevTools/UserspaceEmulator/SoftCPU.h24
1 files changed, 23 insertions, 1 deletions
diff --git a/DevTools/UserspaceEmulator/SoftCPU.h b/DevTools/UserspaceEmulator/SoftCPU.h
index 37da19fde6..a8d167000a 100644
--- a/DevTools/UserspaceEmulator/SoftCPU.h
+++ b/DevTools/UserspaceEmulator/SoftCPU.h
@@ -664,11 +664,33 @@ private:
virtual void wrap_0xD3_32(const X86::Instruction&) override;
template<typename Op>
- void generic_RM32_reg32(Op, const X86::Instruction&);
+ void generic_AL_imm8(Op, const X86::Instruction&);
+ template<typename Op>
+ void generic_AX_imm16(Op, const X86::Instruction&);
+ template<typename Op>
+ void generic_EAX_imm32(Op, const X86::Instruction&);
+ template<typename Op>
+ void generic_RM16_imm16(Op, const X86::Instruction&);
+ template<typename Op>
+ void generic_RM16_imm8(Op, const X86::Instruction&);
+ template<typename Op>
+ void generic_RM16_reg16(Op, const X86::Instruction&);
template<typename Op>
void generic_RM32_imm32(Op, const X86::Instruction&);
template<typename Op>
void generic_RM32_imm8(Op, const X86::Instruction&);
+ template<typename Op>
+ void generic_RM32_reg32(Op, const X86::Instruction&);
+ template<typename Op>
+ void generic_RM8_imm8(Op, const X86::Instruction&);
+ template<typename Op>
+ void generic_RM8_reg8(Op, const X86::Instruction&);
+ template<typename Op>
+ void generic_reg16_RM16(Op, const X86::Instruction&);
+ template<typename Op>
+ void generic_reg32_RM32(Op, const X86::Instruction&);
+ template<typename Op>
+ void generic_reg8_RM8(Op, const X86::Instruction&);
private:
Emulator& m_emulator;