📅  最后修改于: 2020-12-06 08:08:32             🧑  作者: Mango
代码生成器用于生成三地址语句的目标代码。它使用寄存器存储三个地址语句的操作数。
考虑三个地址语句x:= y + z。它可以具有以下代码序列:
该算法将一个三地址语句序列作为输入。对于形式为a:= b op c的每三个地址语句,执行各种操作。这些如下:
赋值语句d:=(ab)+(ac)+(ac)可以转换为以下三个地址代码的序列:
t:= a-b
u:= a-c
v:= t +u
d:= v+u
该示例的代码序列如下:
Statement | Code Generated | Register descriptor Register empty |
Address descriptor |
---|---|---|---|
t:= a – b | MOV a, R0 SUB b, R0 |
R0 contains t | t in R0 |
u:= a – c | MOV a, R1 SUB c, R1 |
R0 contains t R1 contains u |
t in R0 u in R1 |
v:= t + u | ADD R1, R0 | R0 contains v R1 contains u |
u in R1 v in R1 |
d:= v + u | ADD R1, R0 MOV R0, d |
R0 contains d | d in R0 d in R0 and memory |