三地址代码

  • 指令集合
    • 运算/赋值:x=y op z, x=op z
    • 复制:x=y
    • 无条件转移指令:goto L
    • 条件转移指令:if x goto L, if False x goto L
    • 条件转移指令:if x relop y goto L
    • 过程调用/返回:param $x_i$, call p,n
    • 带下标的复制:x=y[i], x[i]=y
    • 地址/指针赋值指令:x=&y, x=*y, *x=y
  • 四元式:op arg1 arg2 result
    • 单目运算符:no arg2
    • param 运算不使用 arg2, result
    • 转移目标:result
  • 三元式:使用三元式的位置来引用三元式的运算结果
  • 简接三元式:包含一个指向三元式的指针的列表
  • 静态单赋值(SSA):所有赋值都是针对不同名的变量
  • 回填