These instructions | Are equivalent to |
{ | *.Beg3 |
{ | *.Beg2 |
{ | *.Beg1 |
UP2 | GOTO.Beg2 |
UP3 | GOTO.Beg3 |
EXIT1 | GOTO.End1 |
EXIT3 | GOTO.End3 |
} | *.End1 |
} | *.End2 |
} | *.End3 |
Notes:
1.EXIT1 is equivalent to EXIT, and UP1 is equivalent to UP.
2.The same rules apply in ARM mode: EXITGE3 for example is a BGE for the exit label 3 blocks down Using SKELSE, SKEC, SKENC, SKLSE instructions, two blocks create an
These | Are equivalent to | Or in |
instructions |
| language |
?A=0.A | ?A=0.A GOYES.Beg2 | IF NOT A=0 THEN |
SKIPYES | *.Beg1 | BEGIN |
{ | GOTO.End2 % and not | ... |
EXIT | End1 | ... |
UP | GOTO.Beg1 | END |
} | *.End1 | ELSE |
SKELSE | GOTO.End2 | BEGIN |
{ | *.Beg2 | ... |
A+1.A | A+1.A | ... |
EXIT | GOTO.End2 | ... |
UP | GOTO.Beg2 | END |
} | *.End2 |
|
Notes:
1.SKELSE places a GOTO between the 2 blocks, SKEC places a GOC, SKENC a GONC and SKLSE places nothing.
2.UPs are compiled directly when encountered while EXITs and block openings are compiled later on. You can not have more than 64 pending EXITs and block openings simultaneously.
Tests
A test instruction (?A=0.A) may be followed by:
• A GOYES Label, → Label or
•A
•A RTY or RTNYES instruction.
•A SKIPYES { or { instruction. In this case, a skip block is open.
•A GOTO, GOTOL, GOVLNG, GOSUB, GOSUBL or GOSBVL. In this case, the test is inverted and a proper
jump instruction is generated (ie: ?A=B.A GOTO A is compiled as ?A#B.A { GOTO A }.
•A EXIT or UP.