public override string Gen() { string code = string.Empty; ScopeManager.FunctionEnter(name); ScopeManager.ScopeEnter(); if (body != null) { code += $"${name}:\n"; code += "push\trbp\n"; code += "mov\trbp, rsp\n"; code += $"sub\trsp, {SymbolTable.CurFunVarSize}\n"; code += body.Gen(); code += $"{name}_rtn:\n"; code += "leave\n"; code += "ret\n"; } ScopeManager.ScopeLeave(); ScopeManager.FunctionLeave(); return(code); }