Advertisement
Venrob

ZScript Short-circuit test

Mar 30th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.74 KB | None | 0 0
  1. //Short-circuit test
  2. //Output:
  3. 2.0000
  4. 3.0000
  5. 5.0000
  6. 6.0000
  7. //ZScript:
  8.  
  9. #option SHORT_CIRCUIT on
  10. bool foo(int x)
  11. {
  12. Trace(x);
  13. return true;
  14. }
  15.  
  16. global script active
  17. {
  18. void run()
  19. {
  20. if(true || foo(1)); //Empty statement means that the result of the if does not matter
  21. if(false || foo(2));
  22. if(true && foo(3));
  23. if(false && foo(4));
  24. Trace(5);
  25. Trace(6);
  26. }
  27. }
  28.  
  29. //ZASM:
  30. ~Init
  31. SETV d2,0
  32. PUSHR d2
  33. POP d3
  34.  
  35. active
  36. SETV d2,0
  37. PUSHR d3
  38. SETR d4,SP
  39. SETV d2,1
  40. COMPAREV d2,0
  41. GOTOTRUE 7
  42. SETV d2,0
  43. SETV d2,0
  44. PUSHR d2
  45. COMPAREV d2,0
  46. SETFALSE d2
  47. COMPAREV d2,0.0001
  48. GOTOTRUE 21
  49. PUSHR d4
  50. SETV d2,0.0020
  51. PUSHR d2
  52. SETV d2,2
  53. PUSHR d2
  54. GOTO 92
  55. POP d4
  56. POP d3
  57. COMPAREV d3,0
  58. SETFALSE d3
  59. ADDR d2,d3
  60. COMPAREV d2,0.0001
  61. SETMORE d2
  62. COMPAREV d2,0
  63. GOTOTRUE 29
  64. SETV d2,0
  65. SETV d2,1
  66. PUSHR d2
  67. COMPAREV d2,0
  68. SETFALSE d2
  69. COMPAREV d2,0.0001
  70. GOTOFALSE 43
  71. PUSHR d4
  72. SETV d2,0.0042
  73. PUSHR d2
  74. SETV d2,3
  75. PUSHR d2
  76. GOTO 92
  77. POP d4
  78. POP d3
  79. COMPAREV d3,0
  80. SETFALSE d3
  81. ADDR d2,d3
  82. COMPAREV d2,0.0002
  83. SETMORE d2
  84. COMPAREV d2,0
  85. GOTOTRUE 51
  86. SETV d2,0
  87. SETV d2,0
  88. COMPAREV d2,0
  89. GOTOTRUE 55
  90. SETV d2,0
  91. PUSHR d4
  92. SETV d2,0.0062
  93. PUSHR d2
  94. SETV d2,5
  95. PUSHR d2
  96. GOTO 73
  97. POP d4
  98. PUSHR d4
  99. SETV d2,0.0069
  100. PUSHR d2
  101. SETV d2,6
  102. PUSHR d2
  103. GOTO 73
  104. POP d4
  105. SETV d3,0
  106. POP d3
  107. QUIT
  108. POP d3
  109. TRACER d3
  110. RETURN
  111. SETV d2,0
  112. SETR d4,SP
  113. PUSHR d4
  114. SETV d2,0.0086
  115. PUSHR d2
  116. SETR d6,d4
  117. ADDV d6,0
  118. LOADI d2,d6
  119. PUSHR d2
  120. GOTO 73
  121. POP d4
  122. SETV d2,1
  123. GOTO 89
  124. SETV d3,0
  125. POP d3
  126. RETURN
  127. SETV d2,0
  128. SETR d4,SP
  129. PUSHR d4
  130. SETV d2,0.0102
  131. PUSHR d2
  132. SETR d6,d4
  133. ADDV d6,0
  134. LOADI d2,d6
  135. PUSHR d2
  136. GOTO 73
  137. POP d4
  138. SETV d2,1
  139. GOTO 105
  140. SETV d3,0
  141. POP d3
  142. RETURN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement