寄存器的实际存在与指令的实时区别

时间:2017-12-29 16:27:23

标签: compiler-construction compiler-optimization

现场注册和直播注册有什么区别?

我的理解是,一个实时注册表示当前行中指定的寄存器包含一个不会从其连续行更改的变量。

以下是我的编译器考试中可能有助于回答的一些机器代码

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

1 个答案:

答案 0 :(得分:1)

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

从头开始,如果寄存器复位之前将使用其内容,则寄存器在程序中的给定点处有效。例如,在L2L3之间,注册z已生效,因为它将来会被使用(L3),但t因为在更改值之前没有使用t,所以已经死了。这意味着z L3L2tdump(),而Debug则为\Doctrine\Common\Util\Debug::dump($d);