编译原理运行时环境重点.ppt

小结 machunyan 西北工业大学软件与微电子学院 * 什么是活动记录?请给出C语言活动记录的内容。 设有c语言程序: main() { printf(“%d\n”,f(3)); } f(int x) { if(x==1) return 1; else return x*f(x-1); } 试给出运行该程序在返回主函数之前运行栈的活动 记录示意图。 machunyan 西北工业大学软件与微电子学院 * m:2 返回地址 控制链 y:1 fp mOffset yOffset mOffset=+8 yOffset=-4 高端地址 低端地址 对名字的访问:(续) machunyan 西北工业大学软件与微电子学院 * 例:考虑下面的C过程 Viod f(int x,char c) {int a[10]; double y; …… } c x 返回地址 控制链 a[9] … a[1] a[0] y fp cOffset aOffset xOffset yOffset xOffset=+8 cOffset=+12 aOffset=-40 yOffset=-48 现在对a[i]访问,要求计算地址: (-40+4*i)(fp) 对名字的访问:(续) 对f调用的活动记录为: machunyan 西北工业大学软件与微电子学院 * 目标代码的生成必须 支持

文档评论(0)

1亿VIP精品文档

相关文档