【发布时间】:2013-07-02 19:49:40
【问题描述】:
我正在为相当标准的堆栈机器编写编译器。现在我想添加一个垃圾收集器。我可以看到我可以生成某种“堆栈图”来了解每个激活记录中哪些变量是 gc 根。但是,我不知道如何处理在执行期间压入堆栈的中间值。我正在编译的语言类似于 Pascal,所以我不需要也不想使用标签来识别来自其他数据类型的指针。
我会很感激任何关于如何做的提示/指针
- 在任何时间点在堆栈中查找 gc 根(即如何识别已压入堆栈的中间值中哪些是 gc 根)。
- 编码此信息的常用形式(即,如何生成和编码“堆栈图”)
非常感谢! 尼古拉斯
【问题讨论】:
标签: compiler-construction garbage-collection code-generation stack-machine gc-roots