diff --git a/InstructionSets/x86/AccessType.hpp b/InstructionSets/x86/AccessType.hpp index c66cb3f5c..1136e7b75 100644 --- a/InstructionSets/x86/AccessType.hpp +++ b/InstructionSets/x86/AccessType.hpp @@ -30,6 +30,15 @@ enum class AccessType { PreauthorisedRead, }; +constexpr const char *to_string(const AccessType type) { + switch(type) { + case AccessType::Read: return "read"; + case AccessType::Write: return "write"; + case AccessType::ReadModifyWrite: return "read-modify-write"; + case AccessType::PreauthorisedRead: return "preauthorised read"; + } +} + constexpr bool is_writeable(const AccessType type) { return type == AccessType::ReadModifyWrite || type == AccessType::Write; } diff --git a/InstructionSets/x86/Instruction.cpp b/InstructionSets/x86/Instruction.cpp index 5632fc504..557e58624 100644 --- a/InstructionSets/x86/Instruction.cpp +++ b/InstructionSets/x86/Instruction.cpp @@ -120,6 +120,7 @@ std::string InstructionSet::x86::to_string(Operation operation, DataSize size, M case Operation::IN: return "in"; case Operation::OUT: return "out"; + case Operation::OUTS: return "outs"; case Operation::JO: return "jo"; case Operation::JNO: return "jno"; @@ -223,6 +224,7 @@ std::string InstructionSet::x86::to_string(Operation operation, DataSize size, M case Operation::NOP: return "nop"; case Operation::POP: return "pop"; case Operation::POPF: return "popf"; + case Operation::PUSHA: return "pusha"; case Operation::PUSH: return "push"; case Operation::PUSHF: return "pushf"; case Operation::RCL: return "rcl";