三地址码
格式:
x = y op z
三地址码的右边只能有一个操作符
每个三地址码语句包含三个地址:两个是操作数,一个是结果
三地址码的类型:
最后三行是函数
注意:只有if、goto语句,不存在while/for等循环语句。
汇编里实现循环通过goto跳转。
变址访问:
y表示开始地址,i表示偏移量
注意:在三地址码中,不允许出现x[j] = y[i],这就变成四地址码了。
将x=y+2*2转换成三地址码:
t1 = 2 * 2
t2 = y + t1
x = t2
将如下代码转换成三地址码:
i = 1;
a = 0;
while(i <= 10) {
a = a + 1;
i = i + 1;
}
转换结果:
i = 1
a = 0
L1: t1 = (i <= 10)
if(t1 == 0) goto L2
t2 = a + 1
a = t2
t3