N64Recomp/RSPRecomp/src/rsp_recomp.cpp

34 lines
1 KiB
C++
Raw Normal View History

#include "rabbitizer.hpp"
#include "fmt/format.h"
#include "fmt/ostream.h"
int main() {
//rabbitizer::InstructionRsp instr{ 0xE9DD3801, 0x040013E0 }; // suv $v29[0], 0x8($14)
rabbitizer::InstructionRsp instr{ 0xEAF70B84, 0x04001624 }; // ssv $v23[7], 0x8($23)
//rabbitizer::InstructionRsp instr{ 0x4B5E888F, 0x04001414 }; // vmadh $v2, $v17, $v30[2]
bool has_element = false;
int element = 0;
fmt::print("{}\n", instr.disassemble(0));
fmt::print("{}\n", instr.getOpcodeName());
fmt::print("{}\n", instr.disassembleOperands());
if (instr.hasOperand(rabbitizer::OperandType::rsp_vt_elementhigh)) {
element = instr.GetRsp_elementhigh();
has_element = true;
} else if (instr.hasOperand(rabbitizer::OperandType::rsp_vt_elementlow)) {
if (has_element) {
fmt::print(stderr, "Instruction cannot have two element values {}\n", instr.disassemble(0));
std::exit(EXIT_FAILURE);
}
element = instr.GetRsp_elementlow();
has_element = true;
}
if (has_element) {
fmt::print("element: 0x{:X}\n", element);
}
return 0;
}