const std::unordered_map< OperandType, uint32_t > & get_operand_type_sizes()
const std::unordered_map< WireOpCode, std::vector< OperandType > > & get_instruction_wire_formats()
bool check_tag(const Instruction &instruction)
Check whether the instruction must have a tag operand and whether the operand value is in the value t...
InstrDeserializationError
@ INVALID_EXECUTION_OPCODE
@ INSTRUCTION_OUT_OF_RANGE
Instruction deserialize_instruction(std::span< const uint8_t > bytecode, size_t pos)
Parsing of an instruction in the supplied bytecode at byte position pos. This checks that the WireOpC...
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
std::string to_string() const
std::vector< uint8_t > serialize() const
bool operator==(const Instruction &other) const =default
std::vector< Operand > operands
size_t size_in_bytes() const
ExecutionOpCode get_exec_opcode() const