三地址语句的目标代码生成
对每个形如x = y op z 的三地址指令I,执行如下动作
寄存器描述符和地址描述符
- 寄存器描述符(register descriptor)
记录每个寄存器当前存放的是哪些变量的值
- 地址描述符(address descriptor)
- 记录运行时每个名字的当前值存放在哪个或哪些位置
- 该位置可能是寄存器、栈单元、内存地址或者是它们的某个集合
- 这些信息可以存放在该变量名对应的符号表条目中
基本块的收尾处理
对于一个在基本块的出口处可能活跃的变量x,如果它的地址描述符表明它的值没有存放在x的内存位置上,则生成指令“ST x, R” (R是在基本块结尾处存放x值的寄存器)。
管理寄存器和地址描述符
当代码生成算法生成加载、保存和其他指令时,它必须同时更新寄存器和地址描述符。