From 9b3199d97bade14065bbccf5b327088be2895571 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Tue, 19 Sep 2023 13:45:19 -0400 Subject: [PATCH] Reduce failures to 205/324. --- InstructionSets/x86/Instruction.cpp | 20 ++++++++++++++++---- InstructionSets/x86/Instruction.hpp | 6 ++++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/InstructionSets/x86/Instruction.cpp b/InstructionSets/x86/Instruction.cpp index b81019398..39d67bb1d 100644 --- a/InstructionSets/x86/Instruction.cpp +++ b/InstructionSets/x86/Instruction.cpp @@ -81,10 +81,22 @@ std::string InstructionSet::x86::to_string(Operation operation, DataSize size) { constexpr char sizes[][6] = { "cmpsb", "cmpsw", "cmpsd", "?" }; return sizes[static_cast(size)]; } - case Operation::LODS: return "lods"; - case Operation::MOVS: return "movs"; - case Operation::SCAS: return "scas"; - case Operation::STOS: return "stos"; + case Operation::LODS: { + constexpr char sizes[][6] = { "lodsb", "lodsw", "lodsd", "?" }; + return sizes[static_cast(size)]; + } + case Operation::MOVS: { + constexpr char sizes[][6] = { "movsb", "movsw", "movsd", "?" }; + return sizes[static_cast(size)]; + } + case Operation::SCAS: { + constexpr char sizes[][6] = { "scasb", "scasw", "scasd", "?" }; + return sizes[static_cast(size)]; + } + case Operation::STOS: { + constexpr char sizes[][6] = { "stosb", "stosw", "stosd", "?" }; + return sizes[static_cast(size)]; + } case Operation::LOOP: return "loop"; case Operation::LOOPE: return "loope"; diff --git a/InstructionSets/x86/Instruction.hpp b/InstructionSets/x86/Instruction.hpp index cdb9f193b..78a6061c3 100644 --- a/InstructionSets/x86/Instruction.hpp +++ b/InstructionSets/x86/Instruction.hpp @@ -366,6 +366,8 @@ constexpr int num_operands(Operation operation) { case Operation::IDIV: case Operation::RETfar: case Operation::ESC: + case Operation::AAM: case Operation::AAD: + case Operation::INT: return 1; // Pedantically, these have an displacement rather than an operand. @@ -387,6 +389,10 @@ constexpr int num_operands(Operation operation) { case Operation::STI: case Operation::CMC: case Operation::LAHF: case Operation::SAHF: + case Operation::AAA: case Operation::AAS: + case Operation::DAA: case Operation::DAS: + case Operation::CBW: case Operation::CWD: + case Operation::INTO: case Operation::Invalid: return 0; }