5 compiler-construction analysis definition range
在编译器数据流分析中,变量的有效范围与其到达定义之间有什么区别?两者似乎指的是同一件事......
小智 5
到达定义是针对程序中的特定位置定义的。例如,在第 10 行,使用代码“a = b + c”,编译器可以知道“c”的到达定义是什么,或者换句话说,回答问题“变量 c 在什么语句中获得了 a值可以达到第 10 行吗?”。
生命范围是相对于变量定义的。变量 c 的有效范围从变量 c 的定义开始,一直持续到变量的下一个定义(在该位置变量被终止,或者定义为不同的变量,如果您使用的是 SSA),或者变量 c 存在的范围(块、函数或程序)。
这两个概念相似,但它们不是一回事。
它们\xe2\x80\x99 是非常不同的东西,我建议你回去重新阅读那些让你困惑的定义。使用给定变量的点的变量的到达定义必须是该变量的定义。\n变量的生命周期是程序中可以使用它的部分,其中包括其他内容而不是定义,例如阅读它。
\n\n例如,参见 1986 年的《龙之书》,第 534 页(可能太笼统而没有帮助)和 610 页。
\n 归档时间: |
|
查看次数: |
2336 次 |
最近记录: |