mirror of
https://github.com/hsoft/collapseos.git
synced 2024-12-25 05:28:06 +11:00
Make DO .. LOOP binary code more compact
Only a few bytes saved in forth1.bin, but the DO .. LOOP construct isn't used much yet. It's still significant savings per LOOP call.
This commit is contained in:
parent
b8dd86bd18
commit
add3b6629b
@ -94,12 +94,20 @@
|
||||
H@
|
||||
; IMMEDIATE
|
||||
|
||||
( Increase loop counter and returns whether we should loop. )
|
||||
: _
|
||||
R> ( IP, keep for later )
|
||||
R> 1 + ( ip i+1 )
|
||||
DUP >R ( ip i )
|
||||
I' = ( ip f )
|
||||
SWAP >R ( f )
|
||||
;
|
||||
|
||||
( One could think that we should have a sub word to avoid all
|
||||
these COMPILE, but we can't because otherwise it messes with
|
||||
the RS )
|
||||
: LOOP
|
||||
COMPILE R> 1 LITN COMPILE + COMPILE DUP COMPILE >R
|
||||
COMPILE I' COMPILE = COMPILE (?br)
|
||||
COMPILE _ COMPILE (?br)
|
||||
H@ - ,
|
||||
COMPILE R> COMPILE DROP COMPILE R> COMPILE DROP
|
||||
; IMMEDIATE
|
||||
|
Loading…
Reference in New Issue
Block a user