100kb image size reduction on x86 from addressing mode optimization

slava 2006-11-09 07:06:53 +00:00
parent 91685ca669
commit c710b3b34d
1 changed files with 6 additions and 2 deletions

View File

@ -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 ;