Improve process_ea and introduce -OL
commitac732cb6a599836bf4c988e59ac6de4498758c72
authorVictor van den Elzen <victor.vde@gmail.com>
Tue, 31 Mar 2009 02:59:44 +0000 (31 04:59 +0200)
committerVictor van den Elzen <victor.vde@gmail.com>
Sat, 24 Jul 2010 20:00:12 +0000 (24 22:00 +0200)
tree9983e099a978cd40786f9529eb687a6d5a14d265
parent088d151130b427367766057feadd8351e03ee19b
Improve process_ea and introduce -OL

Two fixes:
1. Optimization of [bx+0xFFFF] etc
   0xFFFF is an sbyte under 16-bit semantics,
   so make sure to check it right.

2. Don't optimize displacements in -O0
   Displacements that fit into an sbyte or
   can be removed should *not* be optimized in -O0.

   Implicit zero displacements are still optimized, e.g.:
   [eax] -> 0 bit displacement, [ebp] -> 8 bit displacement.
   However explicit displacements are not optimized:
   [eax+0] -> 32 bit displacement, [ebp+0] -> 32 bit displacement.

Because #2 breaks compatibility with 0.98,
I introduced a new optimization level: -OL, legacy.
assemble.c
doc/changes.src
doc/nasmdoc.src
nasm.c
nasm.h
parser.c
test/zero_displacement.asm [new file with mode: 0644]