Advertisement
Guest User

bool

a guest
Nov 13th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.16 KB | None | 0 0
  1. --przejscie dwuprzebiegowe - daj mape ktory raz uzyta
  2.  
  3. .data
  4. lbv_a: .long 0
  5. lbv_b: .long 0
  6.  
  7. .text
  8. .global main
  9.  
  10. main:
  11.  
  12.  
  13. visitEAnd (Eand e); Exp ma lt, lf
  14. lt: String
  15. lf: String
  16.  
  17. visitETrue(ETrue e):
  18.     emit("jmp " + this.lt)
  19. visitEFalse(EFalse e):
  20.     emit("jmp " + this.lf
  21. visitENot(ENot e):
  22.     e.exp.visit(new Visitor(lt=this.lf, lf=this.lt));
  23. visitEAnd(EAnd e):
  24.     String nl = labelGENERATOR.newLabel()
  25.     e.lexp.visit(new Visitor(lt=nl, lf=this.lf))
  26.     emit(nl+":")
  27.     e.vexp.visit(new Visitor(lt=this.lt, lf=this.lf))
  28. visitEOr(EOr e):
  29.     String ul = LabelAGENERATOR.newLabel()
  30.     e.lexp.visit(new Visitor(lt=this.lt, lf=ul))
  31.     emit("ul:")
  32.     e.rexp.visit(new Visitor(lt=this.lt, lf=this.lf))
  33. visitERef(ERef e):
  34.   emit("mov lbr_" + e.id + ", %eax")
  35.   emit("test %eax, %eax")
  36.   emit("jz " + this.lf)
  37.   emit("jmp " + this.lt)
  38.  
  39. visitSExp(SExp s)
  40.     String lt = LabelGENERATOR.newLabel()
  41.     String lf = LabelGENERATOR.newLabel()
  42.     String lnext = LabelGENERATOR.newLabel()
  43.     s.exp.visit(new ExpVisitor(lt=lt, lf=lf))
  44.     emit("lt +":")
  45.     emit("push $fmt_true")
  46.     emit(lnext + ":");
  47.     emit("call printf")
  48.     emit("add $4, %esp")
  49.  
  50.  
  51.  
  52.  
  53. labelgGENERATOR - unikalna nazwa
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement