Skip to content

Commit

Permalink
[FIX] fixing block links
Browse files Browse the repository at this point in the history
  • Loading branch information
Cr0a3 committed Sep 11, 2024
1 parent 360e894 commit 3a1a610
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 6 deletions.
4 changes: 2 additions & 2 deletions src/CodeGen/compilation/br.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@ impl CompilationHelper {
};

let mut cmp = MachineInstr::new(
MachineMnemonic::Compare(iftrue, iffalse)
MachineMnemonic::Compare(iffalse, iftrue) // val == 0 -> iffalse | else -> iftrue
);
cmp.add_operand(src);
cmp.add_operand(MachineOperand::Imm(1));
cmp.add_operand(MachineOperand::Imm(0));

mc_sink.push( cmp );
}
Expand Down
8 changes: 4 additions & 4 deletions src/IR/module.rs
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ impl Module {

let mut comp = vec![];

let mut block_links: Vec<((i64, i64, i64, i64), String, String)> = vec![];
let mut block_links: Vec<((i64, i64, i64, i64), String, String, i64)> = vec![];

let mut block_adrs = HashMap::new();

Expand All @@ -177,7 +177,7 @@ impl Module {
link.at as i64 + (prev_len as i64) + link.addend + idx
};

block_links.push(((adr(0), adr(1), adr(2), adr(3)), link.to, link.from));
block_links.push(((adr(0), adr(1), adr(2), adr(3)), link.to, link.from, link.at as i64));
} else {
obj.link(Link {
from: link.from,
Expand All @@ -190,11 +190,11 @@ impl Module {
}
}

for (idx, target, source) in block_links {
for (idx, target, source, off) in block_links {
let mut target_adr = *block_adrs.get(&target).expect("hmm i made a programming error") as i64;
let source_adr = *block_adrs.get(&source).expect("hmm i made a programming error") as i64 + 5;

target_adr = -(source_adr - target_adr);
target_adr = target_adr - source_adr - (off - source_adr);

let bytes = target_adr.to_be_bytes();

Expand Down

0 comments on commit 3a1a610

Please sign in to comment.