目标语言
目标机模型
使用三地址机器的模型,与三地址码的关键区别:寄存器
寄存器是位于CPU内部用于存放数据的小型高速存储区域,几乎所有的CPU计算都需要寄存器参与(存放参数/结果),几乎所有参与计算的程序数据都位于内存中(使用外存数据也必须先读入内存),机器码需要频繁地在寄存器与内存之间搬运数据。
指令
加载:
LD dst,addr
把地址addr中的内容加载到dst所指的寄存器保存:
ST x,r
把寄存器r中的内容保存到x中计算:
<OP> dst,src1,src2
把src1和src2中的值运算后将结果存放到dst中无条件跳转:
BR L
控制流转向标号L的指令条件跳转:
B<cond> r,L
对r中的值进行测试,如果为真则转向L,cond代表对寄存器r中的值做某个常见测试,如BLTZ r,L
表示当r<0时跳转到L
寻址模式
变量x:指向分配x的内存位置
a(r):地址是a的左值加上寄存器r中的值
constant(r):寄存器r中内容加上前面的常数即其地址
*r:寄存器r的内容所表示的位置上存放的内容位置(解引用r)
*constant(r):寄存器中内容加上常量所代表的位置上的内容所表示的位置
常量#constant
程序及指令的代价
不同的目的有不同的度量(最短编译时间、运行时间、目标程序大小、能耗)。不可判定一个目标程序是否最优。
Last updated