gpt4 book ai didi

compiler-construction - 将 SSA 转换为堆栈机

转载 作者:行者123 更新时间:2023-12-04 01:10:00 24 4
gpt4 key购买 nike

如何将代码从 SSA 表示转换为寄存器机器是众所周知的。 (基本上,图形着色寄存器分配是这种转换的核心。)

但是从 SSA 转换为堆栈机的一般方法是什么? (CIL 字节码,在我正在查看的情况下。)鉴于不需要寄存器分配,我希望它更简单?

最佳答案

SSA 基本上是一组“逻辑”门,每个门都有多个输入,通常有一个输出。

所以基本上你需要将每个门视为一组输入的堆栈推送,然后是一个零操作数运算符,它将堆栈值组合到该门的结果中。例如,a + b * c 作为带有乘法累加运算符的 SSA 对 a,b,c 进行 3 次推送,然后是 MAC_TOS 运算符。

如果一个人有一系列这样的门,你可以获取早先的门的输出,它已经在堆栈上,就像它被压入一样。

所以,SSA 计算看起来像一个 n 元的门树,输出在根处。

您可以按固定顺序遍历树,推送尚未推送的操作数,并在计算完所有操作数后生成门运算符。

所以SSA图(树):

a 
\
*
b / \
+
c /
\ /
-
/
d

可用于生产
push a
push b
times
push c
push d
subtract
times

关于compiler-construction - 将 SSA 转换为堆栈机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51340463/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com