Compiler construction 对指令进行实时输入和实时输出的寄存器之间的区别
登记簿的住址和住址有什么区别 我的理解是,活出寄存器意味着在当前行中指定的寄存器包含一个变量,该变量不会从其后续行更改 这是我的编译器考试中的一些机器代码,可以帮助我回答问题Compiler construction 对指令进行实时输入和实时输出的寄存器之间的区别,compiler-construction,compiler-optimization,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 简而言之,对于程序中的给定指令,如果寄存器在指令执行之前处于活动状态,则寄存器处于活动状态;如果寄存器在指
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
不是