寄存器活入和活出指令之间的区别
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
简短的回答是,对于程序中的给定指令,如果寄存器在执行指令之前处于活动状态,则为活动状态;如果在指令执行后处于活动状态,则为活动状态。
从头开始,如果在重置寄存器之前将使用其内容,则寄存器在程序中的给定点处于活动状态。例如,在 L2
和 L3
之间的时间点,寄存器 z
处于活动状态,因为它将在将来(由 L3
使用)但是 t
已死,因为在更改值之前没有使用 t
。这意味着 z
是 L3
的住家,L2
的住家,而 t
不是。
登记册住进和出住有什么区别?
我的理解是,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
简短的回答是,对于程序中的给定指令,如果寄存器在执行指令之前处于活动状态,则为活动状态;如果在指令执行后处于活动状态,则为活动状态。
从头开始,如果在重置寄存器之前将使用其内容,则寄存器在程序中的给定点处于活动状态。例如,在 L2
和 L3
之间的时间点,寄存器 z
处于活动状态,因为它将在将来(由 L3
使用)但是 t
已死,因为在更改值之前没有使用 t
。这意味着 z
是 L3
的住家,L2
的住家,而 t
不是。