zhouqijie

目标语言

熟悉目标计算机及其指令集是设计一个优秀代码生成器的前提。为了给某个目标机器上的一个完整的源程序生成高质量代码。我们需要了解该目标机的许多细节。


一个简单的目标机模型

一个简单的三地址机器的模型。它具有加载和保存操作。计算操作、跳转操作、无条件跳转。

  1. 加载指令。LD dst addr(用于把addr位置的值加载到位置dst)
  2. 保存指令。ST x, r(把寄存器r上的值保存到位置x)
  3. 计算运算。<OP> dst src1 src2(使用src1和src1执行运算并将结果保存在dst中)
  4. 无条件跳转。BR L(跳转到标号为L的机器指令)
  5. 条件跳转。Bcond r L(r是一个寄存器而L是一个标号)
  1. 变量名寻址。
  2. 下标寻址。
  3. 指针寻址。
  4. 直接常数寻址。

我们经常会指出编译及运行一个程序所需的带价。根据我们在优化一个程序时感兴趣的方面,我们会使用不同的度量。

常用的度量包括编译时间、目标程序大小、运行时间、能耗等。

(详见《编译原理》p332)

(END)