jumps weren't actually being pushed to the vector

This commit is contained in:
Simone
2023-12-27 11:00:20 +01:00
parent fb3146744f
commit 9d8ecdc953
3 changed files with 10 additions and 2 deletions

View File

@@ -37,7 +37,7 @@ Fn JIT::Recompile() {
//prologue();
//mov(rbp, u64(this));
//mov(rdi, u64(this) + THIS_OFFSET(regs));
u64 pc = regs.pc + 0x3D0;
u64 pc = regs.pc;
while(old_stable) {
old_stable = stable;

View File

@@ -75,7 +75,12 @@ template <> struct fmt::formatter<Entry> : formatter<string_view> {
}
if (e.bOffs.index_or_imm.has_value()) {
std::string dst = fmt::format("0x{:0X}", e.bOffs.index_or_imm.value());
std::string dst;
if (e.bOffs.isReg()) {
dst = fmt::format("R{}", e.bOffs.index_or_imm.value());
} else if (e.bOffs.isImm()) {
dst = fmt::format("0x{:0X}", e.bOffs.index_or_imm.value());
}
op += dst;
put_comma = true;
}

View File

@@ -453,6 +453,7 @@ void JIT::j(u32 instr) {
Entry or_(Entry::OR, dst, dst, op2);
ir.push(or_);
Entry e(Entry::BRANCH, or_.GetDst());
ir.push(e);
}
void JIT::jal(u32 instr) {
@@ -470,6 +471,7 @@ void JIT::jalr(u32 instr) {
Entry::Operand{Entry::Operand::REG_S64, RD(instr)},
Entry::Operand{Entry::Operand::PC64});
ir.push(link);
j(instr);
}
void JIT::slti(u32 instr) {
@@ -732,6 +734,7 @@ void JIT::dsra32(u32 instr) {
void JIT::jr(u32 instr) {
auto addr = Entry::Operand{Entry::Operand::REG_U64, RS(instr)};
Entry e(Entry::BRANCH, addr);
ir.push(e);
}
void JIT::dsub(u32 instr) {