在编译器数据流分析,就是一个可变的生存区间之间的差,它的到达定义?这两个似乎是指同样的事情...

有帮助吗?

解决方案

他们是非常不同的东西,我建议你回去重读哪个定义让你感到困惑。对于其使用给定的变量必须是,除了别的以外,该变量的定义的点的变量的定义到达。 一个变量的生存期是在其中可以使用的方案,其中包括比定义其他的事情,例如,读它的部分。

请参阅,例如,1986年的龙书,页534(也许是太一般是有益的)和610。

其他提示

到达定义相对于程序中的特定位置定义的。例如,在第10行,代码为“A = B + C”是很有用的编译器知道的“C”的深远定义,或者换句话说回答这个问题:“在什么声明没有变量c获得值,该值可达到10行?”。

现场范围相对于一个变量定义。变量c的生存区间从变量c的定义开始并且前往,直到变量的一个定义(其中一位的变量就会被杀死,或者定义为不同的变量,如果你正在使用SSA),或在年底范围(块,功能或程序)变量c是否存在。

这两个概念是类似的,但它们是不一样的东西。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top