| the "for-statement"
|
for (var = expr; boolExpr; assignment) stmt translates to
code
for var = expr
loop: code for boolExpr
; result in ACC: 1=true, 0=false
JMZ end
code for stmt
code for assignment
JMP loop
end: NOP
|
| expr1 + expr2 |
code for expr2
STO T1
code for expr1
ADD T1
|
| (expr1 <= expr2) |
code for expr2
STO T1
code for expr1
SUB T1
STO T1
; T1 = expr1 - expr2
CPZ T1
; ACC = 1, if expr1==expr2; otherwise ACC =
0
JMZ notEq
; 0 in ACC means (expr != 0)
JMP done
; this instruction executes when (expr == 0)
notEq: CPL T1 ; now
test to see if expr1 < expr2
done: NOP
|
|