四元式的翻译(拉链回填)

四元式的翻译(拉链回填)

1.定义

四元式实际上是一种“三地址语句”的等价表示。它的一般形式为:
(op,arg1,arg2,result);
布尔式的四元式序列形式如下:

  • (jnz, A, _ , p): 若A为真转第p个四元式
  • (jez, A, _ , p): 若A为假转第p个四元式
  • (jrop ,A1,A2,p): 若的A1 rop A2关系为真转
  • (j,_ , _ , p): 无条件转第p个四元式
    其中,无条件跳转一般是在if或者while的假出口

2.拉链回填

2.1 题目

if A∨B<D
then S1
else S2的四元式序列

解:

  1. (jnz, A,_,0)->5
  2. (j,_,_,0) ->3
  3. (j<,B,D,0)->1->5
  4. (j,_,_,0)->7
  5. S1
  6. (j,_,_,0)->8
  7. S2

2.2 题目

While (A∨B) do
if ^ (C∧D) then x=x+2 
else y=y*3;

解:

  1. (jnz, A,_,0)->5
  2. (j,_,_,0) ->3
  3. (j<,B,D,0)->1->5
  4. (j,_,_,0)->15
  5. (jnz,C,_,0)->7
  6. (j,_,_,0)->9
  7. (jnz,D,_,0)->12
  8. (j,_,_,0)->6->9
  9. (+,x,2,T1)
  10. (=,T1,_,x)
  11. (j,_,_,0)->1
  12. (*,y,3,T2)
  13. (=,T2,_y)
  14. (j,_,_,0)->1

至此,结束。拉链回填应该是为了得到if或者while需要跳转的地址才有技术。
应当主义判断时候的优先级(逻辑运算):非与或

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值