Advertisement
Guest User

Untitled

a guest
Nov 17th, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. test("candy"){
  2.  
  3.  
  4. /*
  5. def main(a, b){
  6. def f(){
  7. x = 2
  8. w = 30
  9. def g(){
  10. x = 10
  11. w = 15
  12. def h(){
  13. x = 100
  14. k()
  15. }
  16. }
  17. def k(){
  18.  
  19. print(x)
  20. w = 99
  21. x + w
  22. }
  23. }
  24. */
  25. val a = new Variable("a")
  26. val b = new Variable("b")
  27. val main = new Procedure("main", Seq(a,b))
  28. val f = new Procedure("f", Seq(), Option(main))
  29. val g = new Procedure("g", Seq(), Option(f))
  30. val h = new Procedure("h", Seq(), Option(g))
  31. val k = new Procedure("k", Seq(), Option(f))
  32. val x = new Variable("x")
  33. val x_ = new Variable("x")
  34. val w = new Variable("w")
  35.  
  36.  
  37. main.code = block(
  38. call(f)
  39. )
  40.  
  41. f.code = Scope(
  42. Seq(x, w),
  43. block(
  44. LIS(Reg.result),
  45. Word(encodeSigned(2)),
  46. write(x, Reg.result),
  47. LIS(Reg.result),
  48. Word(encodeSigned(30)),
  49. write(w, Reg.result),
  50. call(g)
  51. )
  52. )
  53. g.code = Scope(
  54. Seq(x, w),
  55. block(
  56. LIS(Reg.result),
  57. Word(encodeSigned(10)),
  58. write(x, Reg.result),
  59. LIS(Reg.result),
  60. Word(encodeSigned(15)),
  61. write(w, Reg.result),
  62. call(h),
  63. )
  64. )
  65.  
  66. h.code = Scope(
  67. Seq(x),
  68. block(
  69. LIS(Reg.result),
  70. Word(encodeSigned(100)),
  71. write(x, Reg.result),
  72. call(k)
  73. )
  74. )
  75.  
  76. k.code = Scope(
  77. Seq(),
  78. block(
  79. LIS(Reg.result),
  80. Word(encodeSigned(99)),
  81. write(w, Reg.result),
  82. binOp(
  83. read(Reg.result, x),
  84. plus,
  85. read(Reg.result, x)
  86. )
  87. )
  88. )
  89.  
  90.  
  91. val machineCode = compilerA6(Seq(main, f, g, h, k, A5.printProcedure))
  92. val finalState = A4.loadAndRun(machineCode, Word(encodeSigned(6)), debug=true)
  93. println(decodeSigned(finalState.reg(3)))
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement