actually compiles and does stuff now

This commit is contained in:
2024-12-06 19:44:33 -05:00
parent 31c197e991
commit 620c4557e9
67 changed files with 1931 additions and 1287 deletions

41
src/ir/lower/func.rs Normal file
View File

@@ -0,0 +1,41 @@
use super::*;
use crate::compiler::arch::riscv64::Reg;
use arch::riscv64::RV64Instruction;
use std::collections::HashMap;
#[derive(Debug)]
pub struct IRLFunction {
pub name: String,
pub addr: AddrID,
pub instructions: Vec<IRLInstruction>,
pub stack: HashMap<VarID, usize>,
pub args: Vec<(VarID, usize)>,
}
#[derive(Debug)]
pub enum IRLInstruction {
Mv {
dest: VarID,
src: VarID,
},
Ref {
dest: VarID,
src: VarID,
},
LoadAddr {
dest: VarID,
src: AddrID,
},
Call {
dest: VarID,
f: AddrID,
args: Vec<(VarID, usize)>,
},
AsmBlock {
instructions: Vec<RV64Instruction>,
args: Vec<(Reg, VarID)>,
},
Ret {
src: VarID,
},
}