travel fn path for compilation

This commit is contained in:
2024-12-07 20:03:19 -05:00
parent e63f652eb5
commit 0e0dbd647d
15 changed files with 230 additions and 259 deletions

View File

@@ -1,4 +1,4 @@
use crate::{compiler::program::{Addr, Instr, SymTable}, ir::AddrID};
use crate::{compiler::program::{Addr, Instr, SymTable}, ir::Symbol};
use super::*;
@@ -12,10 +12,10 @@ pub enum LinkerInstruction {
Sd { src: Reg, offset: i32, base: Reg },
Ld { dest: Reg, offset: i32, base: Reg },
Mv { dest: Reg, src: Reg },
La { dest: Reg, src: AddrID },
La { dest: Reg, src: Symbol },
Jal { dest: Reg, offset: i32 },
Call(AddrID),
J(AddrID),
Call(Symbol),
J(Symbol),
Ret,
Ecall,
Li { dest: Reg, imm: i64 },
@@ -28,7 +28,7 @@ impl Instr for LinkerInstruction {
sym_map: &SymTable,
pos: Addr,
missing: bool,
) -> Option<AddrID> {
) -> Option<Symbol> {
let last = match self {
Self::Add { dest, src1, src2 } => add(*dest, *src1, *src2),
Self::Addi { dest, src, imm } => addi(*dest, *src, BitsI32::new(*imm)),