C–:支持垃圾回收的可移植汇编语言
1. 信息整合挑战
在相关操作中,需要整合两种不同类型的信息:
- 前端独有信息 :
- 哪些 C– 参数和局部变量是堆指针。
- 如何将源语言变量映射到 C– 变量,以及如何将源代码位置与 C– 语句关联起来。
- 在哪些 C– 语句中哪些异常处理程序处于作用域内,以及在哪些 C– 语句中哪些变量是可见的。
- 后端独有信息 :
- 每个 C– 局部变量和参数是否存活,存活时其位置,以及随着程序计数器的变化这些信息如何改变。
- 哪些程序计数器值对应哪些 C– 语句。
- 如何找到所有活动过程的激活记录以及如何展开栈。
主要挑战在于如何让后端和前端共享信息,同时又无需将它们实现为一个单一的集成单元。
2. 支持高级运行时服务的框架
2.1 框架概述
可执行程序通常分为三个部分,这些部分可能存在于目标文件、库或它们的组合中:
- 前端编译器 :将高级源程序转换为一个或多个 C– 模块,这些模块再由 C– 编译器分别转换为生成的目标代码。
- 前端运行时系统 :通常较大,包含垃圾回收器、异常处理程序以及源语言所需的其他组件。它使用适合人类编写的编程语言(如 C 语言)编写。
- C– 运行时系统 :希望尽可能小,主要负责维护和提供只有后端才能知道的信息。它通过 C 语言运行时接口将这些信息提供给前端运行时
C–:支持垃圾回收的可移植汇编语言
超级会员免费看
订阅专栏 解锁全文
675

被折叠的 条评论
为什么被折叠?



