Skip to content

Commit

Permalink
8.1修正了刚进入函数时对形参的处理
Browse files Browse the repository at this point in the history
  • Loading branch information
夏廷轩 committed May 11, 2024
1 parent 20c63c5 commit d56a0d5
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion src/gen_ir.rs
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ impl GenerateIR for FuncDef {

info.insert_symbol(func_fparam.ident.clone(), Var(VarTypeBase::new()));

write!(output, "@{}: ", info.get_name(&func_fparam.ident).unwrap()).unwrap();
write!(output, "%{}: ", info.get_name(&func_fparam.ident).unwrap()).unwrap();
match &func_fparam.btype {
BType::Int => write!(output, "i32 ").unwrap(),
}
Expand All @@ -81,6 +81,15 @@ impl GenerateIR for FuncDef {
write!(output, " ").unwrap();
write!(output, "{{\n").unwrap();
write!(output, "%entry:\n").unwrap();

//先将形参复制为临时变量,便于后续生成目标代码
for func_fparam in &self.func_fparams {
let param_name = info.get_name(&func_fparam.ident).unwrap();
writeln!(output, " %{} = alloc i32", param_name).unwrap();
writeln!(output, " store %{}, @{}", param_name, param_name).unwrap();
//这里注意到底用%还是@取决于LVal生成的load是啥
}

match self.block.generate(output, info) {
Returned::Yes => {}
Returned::No => match self.func_type {
Expand Down

0 comments on commit d56a0d5

Please sign in to comment.