100kb image size reduction on x86 from addressing mode optimization
parent
91685ca669
commit
c710b3b34d
|
@ -115,7 +115,8 @@ M: indirect extended? indirect-base extended? ;
|
||||||
: canonicalize ( indirect -- )
|
: canonicalize ( indirect -- )
|
||||||
#! Modify the indirect to work around certain addressing mode
|
#! Modify the indirect to work around certain addressing mode
|
||||||
#! quirks.
|
#! quirks.
|
||||||
dup canonicalize-EBP canonicalize-ESP ;
|
dup canonicalize-EBP
|
||||||
|
canonicalize-ESP ;
|
||||||
|
|
||||||
C: indirect ( base index scale displacement -- indirect )
|
C: indirect ( base index scale displacement -- indirect )
|
||||||
[ set-indirect-displacement ] keep
|
[ set-indirect-displacement ] keep
|
||||||
|
@ -128,7 +129,10 @@ C: indirect ( base index scale displacement -- indirect )
|
||||||
dup integer? [ >r f f f r> ] [ f f f ] if <indirect> ;
|
dup integer? [ >r f f f r> ] [ f f f ] if <indirect> ;
|
||||||
|
|
||||||
: [+] ( reg displacement -- indirect )
|
: [+] ( reg displacement -- indirect )
|
||||||
dup integer? [ >r f f r> ] [ f f ] if <indirect> ;
|
dup integer?
|
||||||
|
[ dup zero? [ drop f ] when >r f f r> ]
|
||||||
|
[ f f ] if
|
||||||
|
<indirect> ;
|
||||||
|
|
||||||
: reg-code "register" word-prop 7 bitand ;
|
: reg-code "register" word-prop 7 bitand ;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue