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.
Allow non-identifier characters in the name of environment variables,
by surrounding them with string quotes (subject to ordinary
string-quoting rules.)
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
We still miss Chuck, but I don't think we can really say anymore we're
doing this particular release in his memory.
Requiescat in pace, our friend.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Make -Ox the default; it's the optimization level expected by most
users, and it is clearly still causing confusion that it has to be
specified manually.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
inslist.src is an intermediate file, it should be in "make clean"
rather than "make spotless"; otherwise it ends up in the xdoc tarball.
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Due to previous commit empty line was occasionally
removed which make text harder to read. Restore it.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
We've a problem in supporting [i]rmacro, exitmacro
facilities at moment.
In a sake of not holding new NASM release any longer these
directives are just marked as being "forbidden".
This allow us to not squash much changes in current source
code base but remain on a safe side same time.
Reviewed-by: Keith Kanios <keith@kanios.net>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
This reverts commit 3012d5d430.
nasm64developer pointed out that we still have this
limit in label.c (IDLEN_MAX).
Reported-by: nasm64developer
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
We always allocate enough memory to hold identifiers
with any length. So lets remove restriction from
documentation.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Fix case where \\ needs to be written as \\\\ in order to appear as a
double backslash. Also add mention of release candidates and
snapshots.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
It isn't just invalid UTF-8 sequences that are affected; it is in fact
any high-bit bytes (we don't ever try to construct UTF-8 characters,
just deconstruct them.)
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Revert to original %+ behavior. This is what we really wanted in the
first place, except this time we have fixed some bugs.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Update user-visible changes so far. Since I consider the license
change alone to be big enough of a deal to justify a "real" version
number, make this version 2.07.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
We seem to use the term "extensions" to mean anything that is specific
to an object format, so continue to do so.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Add support for directly generating Intel hex or Motorola S-records.
These formats are commonly used with ROM burners.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
This adds copyright verbiage to the Perl scripts. Scripts that are
known to be clean w.r.t. the 2-clause BSD license are given that
license; unclear ones are given the "LGPL for now".
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Move backend-specific code into the output/ directory, and make the
null debugging backend a separate file (it certainly isn't needed for
ndisasm...)
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Eliminiate hard-coded section numbers, at least to the best of our
ability. There is still a very odd piece of computation in
elf_build_reltab() which I can't really figure out...
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Add something approaching real ELF header files.
Begin merging the common ELF code, beginning with the section name
detection.
Drop automatic generation of .comment section, and in particular the
treatment of .common as a special section (if we decide generating
.comment is still a good idea, we should just do it as a macro.)
Augment the list of known sections, and make it table-driven.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
I realized that a documentation change is required to inform users about the
addition of entry point support for the as86 format. The following produces
reasonable output for .txt output, but I am blind and so can't check the
other formats as readily.
The implication that %line allows NASM to digest cpp output is just
plain wrong, at least without additional intermediate processing. Be
a little more circumspect.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Minimize the TLS documentation examples (we don't need "dword" in a
mov from ebx, for example.) This is just to avoid user confusion.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Explicitly document that %[...] and macro parameters concatenate the
same way, and cross-reference the two.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Remove duplicate entry for the "error" warning class; leave at the end
with "all", as being another meta-warning class.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Retroactively document the following changes to the warning options:
- gcc-like syntax (-Wfoo, -Wno-foo)
- "all" alias
- "error" metawarning
Added in 2.00rc1 but never documented.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Use expand_id() for the argument to %use, instead of expand_smacro().
This really makes more sense for a "naked" argument. This is a
semantic change, but is unlikely to break any real code.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>