函数说明翻译
函数说明 → 填符号表
- 函数名
- 形参列表(个数 + 类型 + 顺序)
- 局部变量信息
- 返回类型
符号表记录格式示例:
函数名: f
返回类型: int
形参: (int, float)
局部量: x, y
函数调用翻译
函数调用四步:
重点 函数调用的四步流程必须掌握。
第一步:检查存在性 + 参数匹配
- 查符号表确认函数已声明
- 核对实参与形参的个数、顺序、类型是否一致
第二步:分配活动记录
- 为被调用函数分配活动记录(Activation Record, AR)
- AR 包含:实参空间、局部数据、临时变量、机器状态、返回地址、存取链与控制链
第三步:传参
- 将实参值或地址填入 AR 的实参空间
- 参数传递方式:值传递 / 引用传递
第四步:保存返回地址
- 将调用点下一条指令地址作为返回地址保存到 AR 中
- 生成跳转指令进入被调用函数
- 函数执行完成后通过返回地址回到调用点
中间代码示例
调用 f(a, b):
// 检查存在性 + 参数匹配(语义分析阶段完成)
// 分配AR并传参
(param, a, _, _)
(param, b, _, _)
// 保存返回地址并跳转
(call, f, _, 返回地址)
// 返回后继续执行
param指令传递参数call指令保存返回地址并跳转到函数入口- 函数内使用
return指令返回