写出下面条件语句的四元式:
if a<b and e>d then x:=a+b else x:=a-b
1,A and B(如果A为0,就不用探究B的结果了),对于当前的if语句而言,若:a>=b,则直接执行else
2,下面的语句加入是从地址为100开始的
3,语句中a<b(E1),e>d(E2),(E1t表示a<b为真),(E表示:(a<b and e>d))
(j<,a,b,E1t),表示a<b
(j,-,-,Ef),表示无条件跳转,也就是说,当紧接着的指令不执行的时候,就会产生无条件跳转指令
100 (j<,a,b,E1t) E1t为待填地址,先用E1t表示
101 (j ,- ,- ,Ef ) Ef为待填地址,表示整个条件出错
102 (j>,e,d,Et ) Et为待填,表示整个语句正确(E2t,此刻就代表Et),然后回填:
100 (j<,a,b,102)
103 (j,- ,- ,Ef) Ef为待填,表示整个语句出错
104 (+,a,b,T1) T1暂存a+b,将地址回填
102 (j>,e,d,104)
105 (:=,T1,-,x) 将T1的值赋值给x
106 (j,- ,- ,s.next) 同样的无条件跳转
107 (-,a,b,T2) T2暂存a-b,将地址回填
101 (j ,- ,- ,107)
103 (j,- ,- ,107)
108 (:=,T2,-,x) 将T2的值赋值给x
109 。。。。。。。。 继续执行if-else整体后面的语句,并且继续将地址回填
106 (j,- ,- ,109)