您的位置:首页 > 其它

条件语句 四元式

2016-05-24 15:00 204 查看
写出下面条件语句的四元式:

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)
                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息