寄存器活入和活出指令之间的区别

Difference between a register being live-in and live-out to an instruction

登记册住进和出住有什么区别?

我的理解是,live-out register是指当前行指定的寄存器包含一个变量,该变量从其后续行开始不变。

这是我的编译器考试中的一些机器代码,可以帮助回答

L0 : lim z, 0
L1 : jmp L6
L2 : sub x, x, y
L3 : mov t, z
L4 : lim z, 0
L5 : addi z, t, 1
L6 : blth y, x, L2

简短的回答是,对于程序中的给定指令,如果寄存器在执行指令之前处于活动状态,则为活动状态;如果在指令执行后处于活动状态,则为活动状态。

从头开始,如果在重置寄存器之前将使用其内容,则寄存器在程序中的给定点处于活动状态。例如,在 L2L3 之间的时间点,寄存器 z 处于活动状态,因为它将在将来(由 L3 使用)但是 t 已死,因为在更改值之前没有使用 t 。这意味着 zL3 的住家,L2 的住家,而 t 不是。