Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Short-circuit test
- //Output:
- 2.0000
- 3.0000
- 5.0000
- 6.0000
- //ZScript:
- #option SHORT_CIRCUIT on
- bool foo(int x)
- {
- Trace(x);
- return true;
- }
- global script active
- {
- void run()
- {
- if(true || foo(1)); //Empty statement means that the result of the if does not matter
- if(false || foo(2));
- if(true && foo(3));
- if(false && foo(4));
- Trace(5);
- Trace(6);
- }
- }
- //ZASM:
- ~Init
- SETV d2,0
- PUSHR d2
- POP d3
- active
- SETV d2,0
- PUSHR d3
- SETR d4,SP
- SETV d2,1
- COMPAREV d2,0
- GOTOTRUE 7
- SETV d2,0
- SETV d2,0
- PUSHR d2
- COMPAREV d2,0
- SETFALSE d2
- COMPAREV d2,0.0001
- GOTOTRUE 21
- PUSHR d4
- SETV d2,0.0020
- PUSHR d2
- SETV d2,2
- PUSHR d2
- GOTO 92
- POP d4
- POP d3
- COMPAREV d3,0
- SETFALSE d3
- ADDR d2,d3
- COMPAREV d2,0.0001
- SETMORE d2
- COMPAREV d2,0
- GOTOTRUE 29
- SETV d2,0
- SETV d2,1
- PUSHR d2
- COMPAREV d2,0
- SETFALSE d2
- COMPAREV d2,0.0001
- GOTOFALSE 43
- PUSHR d4
- SETV d2,0.0042
- PUSHR d2
- SETV d2,3
- PUSHR d2
- GOTO 92
- POP d4
- POP d3
- COMPAREV d3,0
- SETFALSE d3
- ADDR d2,d3
- COMPAREV d2,0.0002
- SETMORE d2
- COMPAREV d2,0
- GOTOTRUE 51
- SETV d2,0
- SETV d2,0
- COMPAREV d2,0
- GOTOTRUE 55
- SETV d2,0
- PUSHR d4
- SETV d2,0.0062
- PUSHR d2
- SETV d2,5
- PUSHR d2
- GOTO 73
- POP d4
- PUSHR d4
- SETV d2,0.0069
- PUSHR d2
- SETV d2,6
- PUSHR d2
- GOTO 73
- POP d4
- SETV d3,0
- POP d3
- QUIT
- POP d3
- TRACER d3
- RETURN
- SETV d2,0
- SETR d4,SP
- PUSHR d4
- SETV d2,0.0086
- PUSHR d2
- SETR d6,d4
- ADDV d6,0
- LOADI d2,d6
- PUSHR d2
- GOTO 73
- POP d4
- SETV d2,1
- GOTO 89
- SETV d3,0
- POP d3
- RETURN
- SETV d2,0
- SETR d4,SP
- PUSHR d4
- SETV d2,0.0102
- PUSHR d2
- SETR d6,d4
- ADDV d6,0
- LOADI d2,d6
- PUSHR d2
- GOTO 73
- POP d4
- SETV d2,1
- GOTO 105
- SETV d3,0
- POP d3
- RETURN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement