Ben*_*cob 1 compiler-construction global-variables ssa
我正在研究一种编译器,它使用SSA作为包含全局变量的语言.我想知道我应该如何实现全局变量的用法和定义,例如我应该如何转换下面的代码?
非SSA表格:
x;
y;
main () {
x = 0;
foo();
y = x;
x = 2;
foo();
}
foo () {
print x;
x = 1;
}
Run Code Online (Sandbox Code Playgroud)
在SSA形式中,有些地方我不确定要使用的下标:
main () {
x.0 = 0;
foo()
y.0 = x.?
x.1 = 2;
foo();
}
foo () {
print x.?;
x.? = 1;
}
Run Code Online (Sandbox Code Playgroud)
我曾考虑添加phi函数,但这似乎并没有解决这些phi函数所指的下标问题.
非常感谢,本
小智 6
经典SSA并不真正涵盖全局变量,或任何其他可能由您看不到的代码读取和写入的内存位置.有一些扩展试图覆盖堆内存,但似乎并没有你正在追求其中一个.
作为比较点,LLVM不会尝试将全局变量用于SSA形式.全局变量是内存位置,其"名称"是指向该内存位置的指针,因此访问全局变量是普通的加载/存储操作.
| 归档时间: |
|
| 查看次数: |
330 次 |
| 最近记录: |