Compiler construction 登记有效范围

Compiler construction 登记有效范围,compiler-construction,Compiler Construction,我是一个研究编译器活性和活性范围的人,但有点困惑。下图取自教程,显示了给定代码的活动范围。例如,它表示R2在第2行load R2,2处加载,其值在第6行mult r1,r1,R2之前有效。为什么?在第6行,我们执行乘法并将结果分配回R1,但不在R2中,那么为什么R2会失去它的值呢 谢谢 实时范围的全部要点是找出如何最大限度地减少寄存器的使用。为了做到这一点,我们需要找出寄存器中的值必须保留多长时间,因为在以后的计算中需要它 正如twalberg所说,r2不再需要,因此我们可以使用该寄存器来存储不

我是一个研究编译器活性和活性范围的人,但有点困惑。下图取自教程,显示了给定代码的活动范围。例如,它表示
R2
在第2行
load R2,2
处加载,其值在第6行
mult r1,r1,R2
之前有效。为什么?在第6行,我们执行乘法并将结果分配回
R1
,但不在
R2
中,那么为什么
R2
会失去它的值呢

谢谢


实时范围的全部要点是找出如何最大限度地减少寄存器的使用。为了做到这一点,我们需要找出寄存器中的值必须保留多长时间,因为在以后的计算中需要它


正如twalberg所说,
r2
不再需要,因此我们可以使用该寄存器来存储不同的值。

也许不是因为
r2
中的值在第6步无效,而是因为后面的指令都没有引用它,所以在这个函数中不再需要它,所以可以认为它已失效。活着/死去与有效/无效不是一回事。