mirror of https://git.sr.ht/~rabbits/drifblim
Optimized rel resolver
This commit is contained in:
parent
26bb0fd535
commit
1b91f4493c
|
@ -222,8 +222,9 @@
|
||||||
( ) DUP .Ref/abs-byte NEQ ?{ STH2kr resolve-abs STA
|
( ) DUP .Ref/abs-byte NEQ ?{ STH2kr resolve-abs STA
|
||||||
POP }
|
POP }
|
||||||
( ) DUP .Ref/abs-short NEQ ?{ STH2kr resolve-abs STA2 }
|
( ) DUP .Ref/abs-short NEQ ?{ STH2kr resolve-abs STA2 }
|
||||||
( ) DUP .Ref/rel-byte NEQ ?{ STH2kr resolve-rel-byte }
|
( ) DUP .Ref/rel-byte NEQ ?{ STH2kr resolve-rel STA
|
||||||
( ) DUP .Ref/rel-short NEQ ?{ STH2kr resolve-rel-short }
|
POP }
|
||||||
|
( ) DUP .Ref/rel-short NEQ ?{ STH2kr resolve-rel STA2 }
|
||||||
POP POP2r
|
POP POP2r
|
||||||
( ) #0005 ADD2 GTH2k ?&>l
|
( ) #0005 ADD2 GTH2k ?&>l
|
||||||
POP2 POP2 JMP2r
|
POP2 POP2 JMP2r
|
||||||
|
@ -232,16 +233,9 @@
|
||||||
( value* ) INC2k INC2 LDA2 LDA2
|
( value* ) INC2k INC2 LDA2 LDA2
|
||||||
( addr* ) SWP2 LDA2 ;Rom/mem ADD2 JMP2r
|
( addr* ) SWP2 LDA2 ;Rom/mem ADD2 JMP2r
|
||||||
|
|
||||||
@resolve-rel-byte ( ref* -- )
|
@resolve-rel ( ref* -- value* addr* )
|
||||||
( | catch distance overflow )
|
|
||||||
( value ) INC2k INC2 LDA2 LDA2 OVR2 LDA2 INC2 INC2 SUB2
|
|
||||||
( addr* ) SWP2 LDA2 ;Rom/mem ADD2 STA
|
|
||||||
POP JMP2r
|
|
||||||
|
|
||||||
@resolve-rel-short ( ref* -- )
|
|
||||||
( value* ) INC2k INC2 LDA2 LDA2 OVR2 LDA2 INC2 INC2 SUB2
|
( value* ) INC2k INC2 LDA2 LDA2 OVR2 LDA2 INC2 INC2 SUB2
|
||||||
( addr* ) SWP2 LDA2 ;Rom/mem ADD2 STA2
|
( addr* ) SWP2 LDA2 ;Rom/mem ADD2 JMP2r
|
||||||
JMP2r
|
|
||||||
|
|
||||||
@get-abs-byte ( label* -- addr )
|
@get-abs-byte ( label* -- addr )
|
||||||
.Ref/abs-byte ;get-ref/type STA
|
.Ref/abs-byte ;get-ref/type STA
|
||||||
|
|
Loading…
Reference in New Issue