条件语句 四元式
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)
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)
相关文章推荐
- 高性能JavaScript循环语句和条件语句
- MySQL Where 条件语句介绍和运算符小结
- 实现一个简单的计算器
- NOP(N) NOP_##N
- 编译器是如何工作的?(转)
- 写给想学java的朋友!
- 学java的必看!
- java中的加密!
- java中的使用类!
- LEX/FLEX词法分析器
- 如何模仿人的学习模式来教计算机程序解数学题?
- 上下文无关文法1
- 上下文无关文法2
- 编译原理——词法分析器
- 编译原理预习笔记------名词理解
- Simple scanner of c
- 编译原理:短语、直接短语、句柄、素短语
- 编译原理中FIRST集合与FOLLOW集合的算法
- 上下文无关文法解析
- 识别浮点常量问题-编译原理程序实现