18得票2回答
将SSA转换为堆栈机

我们都知道如何将代码从SSA表示法转换为寄存器机器码。 (基本上,图形着色寄存器分配是这种转换的核心。) 但是,将代码从SSA转换为堆栈机器有什么通用方法吗?(在我正在查看的情况下,是CIL字节码。)考虑到不需要寄存器分配,我预计这会更简单一些。

10得票1回答
堆栈机代码的SSA

我正在为一个栈机(具体来说是CIL)编写编译器,我已经将代码解析成基本块的图形。从这里开始,我想对方法应用SSA,但进展不顺。我的第一次尝试(在使用平面列表而不是图形时)是遍历代码并保留SSA ID的堆栈(即分配目标),当我生成分配时将它们推入堆栈中,并在使用时将它们弹出。这对于单个基本块很好...

7得票1回答
如何优化简单的堆栈机器代码?

我一直在尝试使用一种简单的基于栈的语言,并且发现自己不断地手动优化代码块。我想,“嘿,这很像计算机可以做的事情!具有明确目标和语义的重复工作。” 但是寻找周围,我发现几乎没有有关优化栈机器代码的东西。有寄存器机,但没有基于栈的语言。对于“如何优化栈机器代码?”这个问题,似乎一般的回答是“不要”...

7得票2回答
如何在堆栈机中查找GC根?

我正在编写一个相当标准的堆栈机编译器。现在我想添加垃圾回收器。我可以看到我可以生成某种“堆栈映射”以知道每个激活记录中哪些变量是gc根。然而,我不知道如何处理执行期间推送到堆栈中的中间值。我正在编译的语言类似于Pascal,因此我不需要也不想使用标签来标识指针和其他数据类型。 我会感激任何关...