summaryrefslogtreecommitdiff
path: root/CHANGES
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2008-07-14 02:45:57 -0400
committerH. Peter Anvin <hpa@zytor.com>2008-07-14 02:45:57 -0400
commit04156cd099ca15a9aa89d405b0ad967d3de564e6 (patch)
tree993ddc22472f975bdeaac56dc99b9a2b545b3170 /CHANGES
parentcf6b43476e182672b04598da33f084b6e1ac2de0 (diff)
downloadnasm-04156cd099ca15a9aa89d405b0ad967d3de564e6.tar.gz
Move the revision history into the documentation
Clumsily convert the revision history to nasmdoc format, so it can be included in the documentation as Appendix C.
Diffstat (limited to 'CHANGES')
-rw-r--r--CHANGES1500
1 files changed, 2 insertions, 1498 deletions
diff --git a/CHANGES b/CHANGES
index 36462307..b89696f4 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,1498 +1,2 @@
-2.04
-----
-* Sanitize macro handing in the %error directive.
-* New %warning preprocessor directive.
-* __utf16__ and __utf32__ operators to generate UTF-16 and UTF-32
- strings.
-* Fix bug in case-insensitive matching when compiled on platforms that
- don't use the "configure" script. Of the official release binaries,
- that only affects the OS/2 binary.
-* Correct the handling of nested %reps.
-* Support for x87 packed BCD constants.
-* New %warning directive to issue user-controlled warnings.
-* New %strcat directive to join strings together.
-* Correct the LTR instruction in 64-bit mode.
-* Fix unnecessary REX.W prefix on indirect jumps in 64-bit mode.
-
-2.03.01
--------
-* Fix buffer overflow in the listing module.
-* Fix the handling of hexadecimal escape codes in `...` strings.
-* The Postscript/PDF documentation has been reformatted.
-* The -F option now implies -g.
-
-2.03
-----
-* Add support for Intel AVX, CLMUL and FMA instructions,
- including YMM registers.
-* "dy", "resy" and "yword" for 32-byte operands.
-* Fix some SSE5 instructions.
-* Intel INVEPT, INVVPID and MOVBE instructions.
-* Fix checking for critical expressions when the optimizer is enabled.
-* Support the DWARF debugging format for ELF targets.
-* Fix optimizations of signed bytes.
-* Fix operation on bigendian machines.
-* Fix buffer overflow in the preprocessor.
-* SAFESEH support for Win32, IMAGEREL for Win64 (SEH).
-* %? and %?? to refer to the name of a macro itself. In particular,
- "%idefine keyword $%?" can be used to make a keyword "disappear".
-* New options for dependency generation: -MD, -MF, -MP, -MT, -MQ.
-* New preprocessor directives %pathsearch and %depend; INCBIN
- reimplemented as a macro.
-* %include now resolves macros in a sane manner.
-* %substr can now be used to get other than one-character substrings.
-* New type of character/string constants, using backquotes (`...`),
- which support C-style escape sequences.
-* %defstr and %idefstr to stringize macro definitions before creation.
-* Fix forward references used in EQU statements.
-
-2.02
-----
-* Additional fixes for MMX operands with explicit "qword", as well as
- (hopefully) SSE operands with "oword".
-* Fix handling of truncated strings with DO.
-* Fix segfaults due to memory overwrites when floating-point constants
- were used.
-* Fix segfaults due to missing include files.
-* Fix OpenWatcom Makefiles for DOS and OS/2.
-* Add autogenerated instruction list back into the documentation.
-* ELF: Fix segfault when generating stabs, and no symbols have been
- defined.
-* ELF: Experimental support for DWARF debugging information.
-* New compile date and time standard macros.
-* %ifnum now returns true for negative numbers.
-* New %iftoken test for a single token.
-* New %ifempty test for empty expansion.
-* Add support for the XSAVE instruction group.
-* Makefile for Netware/gcc.
-* Fix issue with some warnings getting emitted way too many times.
-* Autogenerated instruction list added to the documentation.
-
-2.01
-----
-* Fix the handling of MMX registers with explicit "qword" tags on
- memory (broken in 2.00 due to 64-bit changes.)
-* Fix the PREFETCH instructions.
-* Fix the documentation.
-* Fix debugging info when using "-f elf" (backwards alias for "-f
- elf32").
-* Man pages for rdoff tools (from the Debian project.)
-* ELF: handle large numbers of sections.
-* Fix corrupt output when the optimizer runs out of passes.
-
-2.00
-----
-* Added c99 data-type compliance.
-* Added general x86-64 support.
-* Added win64 (x86-64 COFF) output format.
-* Added __BITS__ standard macro.
-* Renamed the elf output format to elf32 for clarity.
-* Added elf64 and macho (MacOS X) output formats.
-* Added Numeric constants in DQ directive.
-* Added oword, do and reso pseudo operands.
-* Allow underscores in numbers.
-* Added 8-, 16- and 128-bit floating-point formats.
-* Added binary, octal and hexadecimal floating-point.
-* Correct the generation of floating-point constants.
-* Added Floating-point option control.
-* Added Infinity and NaN floating point support.
-* Added ELF Symbol Visibility support.
-* Added Setting OSABI value in ELF header directive.
-* Added Generate Makefile Dependencies option.
-* Added Unlimited Optimization Passes option.
-* Added %IFN and %ELIFN support.
-* Added Logical Negation Operator.
-* Enhanced Stack Relative Preprocessor Directives.
-* Enhanced ELF Debug Formats.
-* Enhanced Send Errors to a File option.
-* Added SSSE3, SSE4.1, SSE4.2, SSE5 support.
-* Added a large number of additional instructions.
-* Significant performance improvements.
-
-0.98.39
--------
-* fix buffer overflow
-* fix outas86's .bss handling
-* "make spotless" no longer deletes config.h.in.
-* %(el)if(n)idn insensitivity to string quotes difference (#809300).
-* (nasm.c) __OUTPUT_FORMAT__ changed to string value instead of symbol.
-
-0.98.38
--------
-* Add Makefile for 16-bit DOS binaries under OpenWatcom, and modify
- mkdep.pl to be able to generate completely pathless dependencies, as
- required by OpenWatcom wmake (it supports path searches, but not
- explicit paths.)
-* Fix the STR instruction.
-* Fix the ELF output format, which was broken under certain
- circumstances due to the addition of stabs support.
-* Quick-fix Borland format debug-info for -f obj
-* Fix for %rep with no arguments (#560568)
-* Fix concatenation of preprocessor function call (#794686)
-* Fix long label causes coredump (#677841)
-* Use autoheader as well as autoconf to keep configure from generating
- ridiculously long command lines.
-* Make sure that all of the formats which support debugging output
- actually will suppress debugging output when -g not specified.
-
-0.98.37
--------
-* Paths given in "-I" switch searched for "incbin"ed as
- well as "%include"ed files.
-* Added stabs debugging for the ELF output format, patch from
- Martin Wawro.
-* Fix output/outbin.c to allow origin > 80000000h.
-* Make -U switch work.
-* Fix the use of relative offsets with explicit prefixes, e.g. "a32 loop foo".
-* Remove "backslash()".
-* Fix the SMSW and SLDT instructions.
-* -O2 and -O3 are no longer aliases for -O10 and -O15. If you mean the
- latter, please say so! :)
-
-0.98.36
--------
-* Update rdoff - librarian/archiver - common rec - docs!
-* Fix signed/unsigned problems.
-* Fix JMP FAR label and CALL FAR label.
-* Add new multisection support - map files - fix align bug
-* Fix sysexit, movhps/movlps reg,reg bugs in insns.dat
-* "Q" or "O" suffixes indicate octal
-* Support Prescott new instructions (PNI).
-* Cyrix XSTORE instruction.
-
-0.98.35
--------
-* Fix build failure on 16-bit DOS (Makefile.bc3 workaround for compiler bug.)
-* Fix dependencies and compiler warnings.
-* Add "const" in a number of places.
-* Add -X option to specify error reporting format (use -Xvc to
- integrate with Microsoft Visual Studio.)
-* Minor changes for code legibility.
-* Drop use of tmpnam() in rdoff (security fix.)
-
-0.98.34
--------
-* Correct additional address-size vs. operand-size confusions.
-* Generate dependencies for all Makefiles automatically.
-* Add support for unimplemented (but theoretically available)
- registers such as tr0 and cr5. Segment registers 6 and 7 are called
- segr6 and segr7 for the operations which they can be represented.
-* Correct some disassembler bugs related to redundant address-size prefixes.
- Some work still remains in this area.
-* Correctly generate an error for things like "SEG eax".
-* Add the JMPE instruction, enabled by "CPU IA64".
-* Correct compilation on newer gcc/glibc platforms.
-* Issue an error on things like "jmp far eax".
-
-
-0.98.33
--------
-
-* New __NASM_PATCHLEVEL__ and __NASM_VERSION_ID__ standard macros to
- round out the version-query macros. version.pl now understands
- X.YYplWW or X.YY.ZZplWW as a version number, equivalent to
- X.YY.ZZ.WW (or X.YY.0.WW, as appropriate).
-* New keyword "strict" to disable the optimization of specific
- operands.
-* Fix the handing of size overrides with JMP instructions
- (instructions such as "jmp dword foo".)
-* Fix the handling of "ABSOLUTE label", where "label" points into a
- relocatable segment.
-* Fix OBJ output format with lots of externs.
-* More documentation updates.
-* Add -Ov option to get verbose information about optimizations.
-* Undo a braindead change which broke %elif directives.
-* Makefile updates.
-
-
-0.98.32
--------
-
-* Fix NASM crashing when %macro directives were left unterminated.
-* Lots of documentation updates.
-* Complete rewrite of the PostScript/PDF documentation generator.
-* The MS Visual C++ Makefile was updated and corrected.
-* Recognize .rodata as a standard section name in ELF.
-* Fix some obsolete Perl4-isms in Perl scripts.
-* Fix configure.in to work with autoconf 2.5x.
-* Fix a couple of "make cleaner" misses.
-* Make the normal "./configure && make" work with Cygwin.
-
-
-0.98.31
--------
-
-* Correctly build in a separate object directory again.
-* Derive all references to the version number from the version file.
-* New standard macros __NASM_SUBMINOR__ and __NASM_VER__ macros.
-* Lots of Makefile updates and bug fixes.
-* New %ifmacro directive to test for multiline macros.
-* Documentation updates.
-* Fixes for 16-bit OBJ format output.
-* Changed the NASM environment variable to NASMENV.
-
-
-0.98.30
--------
-
-* Changed doc files a lot: completely removed old READMExx and
- Wishlist files, incorporating all information in CHANGES and TODO.
-* I waited a long time to rename zoutieee.c to (original) outieee.c
-* moved all output modules to output/ subdirectory.
-* Added 'make strip' target to strip debug info from nasm & ndisasm.
-* Added INSTALL file with installation instructions.
-* Added -v option description to nasm man.
-* Added dist makefile target to produce source distributions.
-* 16-bit support for ELF output format (GNU extension, but useful.)
-
-
-0.98.28
--------
-
-* Fastcooked this for Debian's Woody release:
-Frank applied the INCBIN bug patch to 0.98.25alt and called
-it 0.98.28 to not confuse poor little apt-get.
-
-
-0.98.26
--------
-
-* Reorganised files even better from 0.98.25alt
-
-
-0.98.25alt
-----------
-
-* Prettified the source tree. Moved files to more reasonable places.
-* Added findleak.pl script to misc/ directory.
-* Attempted to fix doc.
-
-0.98.25
--------
-
-* Line continuation character '\'
-* Docs inadvertantly reverted - "dos packaging".
-
-
-0.98.24p1
----------
-
-* FIXME: Someone, document this please.
-
-
-0.98.24
--------
-
-* Documentation - Ndisasm doc added to Nasm.doc.
-
-
-0.98.23
--------
-
-* Attempted to remove rdoff version1
-* Lino Mastrodomenico's patches to preproc.c (%$$ bug?).
-
-
-0.98.22
--------
-
-* Update rdoff2 - attempt to remove v1.
-
-
-0.98.21
--------
-
-* Optimization fixes.
-
-
-0.98.20
--------
-
-* Optimization fixes.
-
-
-0.98.19
--------
-
-* H. J. Lu's patch back out.
-
-
-0.98.18
--------
-
-* Added ".rdata" to "-f win32".
-
-
-0.98.17
--------
-
-* H. J. Lu's "bogus elf" patch. (Red Hat problem?)
-
-
-0.98.16
--------
-
-* Fix whitespace before "[section ..." bug.
-
-0.98.15
--------
-
-* Rdoff changes (?).
-* Fix fixes to memory leaks.
-
-0.98.14
--------
-
-* Fix memory leaks.
-* (there was no '.13)
-
-0.98.12
--------
-
-* Update optimization (new function of "-O1")
-* Changes to test/bintest.asm (?).
-
-0.98.11
--------
-
-* Optimization changes.
-* Ndisasm fixed.
-* (there was no '.10)
-
-0.98.09
--------
-
-* Add multiple sections support to "-f bin".
-* Changed GLOBAL_TEMP_BASE in outelf.c from 6 to 15.
-* Add "-v" as an alias to the "-r" switch.
-* Remove "#ifdef" from Tasm compatibility options.
-* Remove redundant size-overrides on "mov ds, ex", etc.
-* Fixes to SSE2, other insns.dat (?).
-* Enable uppercase "I" and "P" switches.
-* Case insinsitive "seg" and "wrt".
-* Update install.sh (?).
-* Allocate tokens in blocks.
-* Improve "invalid effective address" messages.
-
-0.98.08
--------
-
-* Add "%strlen" and "%substr" macro operators
-* Fixed broken c16.mac.
-* Unterminated string error reported.
-* Fixed bugs as per 0.98bf
-
-
-0.98.09b with John Coffman patches released 28-Oct-2001
--------------------------------------------------------
-
-Changes from 0.98.07 release to 98.09b as of 28-Oct-2001
-
-* More closely compatible with 0.98 when -O0 is implied
-or specified. Not strictly identical, since backward
-branches in range of short offsets are recognized, and signed
-byte values with no explicit size specification will be
-assembled as a single byte.
-
-* More forgiving with the PUSH instruction. 0.98 requires
-a size to be specified always. 0.98.09b will imply the size
-from the current BITS setting (16 or 32).
-
-* Changed definition of the optimization flag:
-
- -O0 strict two-pass assembly, JMP and Jcc are
- handled more like 0.98, except that back-
- ward JMPs are short, if possible.
-
- -O1 strict two-pass assembly, but forward
- branches are assembled with code guaranteed
- to reach; may produce larger code than
- -O0, but will produce successful assembly
- more often if branch offset sizes are not
- specified.
-
- -O2 multi-pass optimization, minimize branch
- offsets; also will minimize signed immed-
- iate bytes, overriding size specification.
-
- -O3 like -O2, but more passes taken, if needed
-
-
-0.98.07 released 01/28/01
--------------------------
-
-* Added Stepane Denis' SSE2 instructions to a *working*
- version of the code - some earlier versions were based on
- broken code - sorry 'bout that. version "0.98.07"
-
-
-01/28/01
---------
-
-* Cosmetic modifications to nasm.c, nasm.h,
- AUTHORS, MODIFIED
-
-
-0.98.06f released 01/18/01
---------------------------
-
-* - Add "metalbrain"s jecxz bug fix in insns.dat
- - alter nasmdoc.src to match - version "0.98.06f"
-
-
-0.98.06e released 01/09/01
---------------------------
-
-* Removed the "outforms.h" file - it appears to be
- someone's old backup of "outform.h". version "0.98.06e"
-
-
-01/09/01
---------
-
-* fbk - finally added the fix for the "multiple %includes bug",
- known since 7/27/99 - reported originally (?) and sent to
- us by Austin Lunnen - he reports that John Fine had a fix
- within the day. Here it is...
-
-* Nelson Rush resigns from the group. Big thanks to Nelson for
- his leadership and enthusiasm in getting these changes
- incorporated into Nasm!
-
-* fbk - [list +], [list -] directives - ineptly implemented, should
- be re-written or removed, perhaps.
-
-* Brian Raiter / fbk - "elfso bug" fix - applied to aoutb format
- as well - testing might be desirable...
-
-
-08/07/00
---------
-
-* James Seter - -postfix, -prefix command line switches.
-* Yuri Zaporogets - rdoff utility changes.
-
-
-0.98p1
-------
-
-* GAS-like palign (Panos Minos)
-* FIXME: Someone, fill this in with details
-
-
-0.98bf (bug-fixed)
-----------------------------------
-
-* Fixed - elf and aoutb bug - shared libraries
- - multiple "%include" bug in "-f obj"
- - jcxz, jecxz bug
- - unrecognized option bug in ndisasm
-
-0.98.03 with John Coffman's changes released 27-Jul-2000
---------------------------------------------------------
-
-* Added signed byte optimizations for the 0x81/0x83 class
-of instructions: ADC, ADD, AND, CMP, OR, SBB, SUB, XOR:
-when used as 'ADD reg16,imm' or 'ADD reg32,imm.' Also
-optimization of signed byte form of 'PUSH imm' and 'IMUL
-reg,imm'/'IMUL reg,reg,imm.' No size specification is needed.
-
-* Added multi-pass JMP and Jcc offset optimization. Offsets
-on forward references will preferentially use the short form,
-without the need to code a specific size (short or near) for
-the branch. Added instructions for 'Jcc label' to use the
-form 'Jnotcc $+3/JMP label', in cases where a short offset
-is out of bounds. If compiling for a 386 or higher CPU, then
-the 386 form of Jcc will be used instead.
-
-This feature is controlled by a new command-line switch: "O",
-(upper case letter O). "-O0" reverts the assembler to no
-extra optimization passes, "-O1" allows up to 5 extra passes,
-and "-O2"(default), allows up to 10 extra optimization passes.
-
-* Added a new directive: 'cpu XXX', where XXX is any of:
-8086, 186, 286, 386, 486, 586, pentium, 686, PPro, P2, P3 or
-Katmai. All are case insensitive. All instructions will
-be selected only if they apply to the selected cpu or lower.
-Corrected a couple of bugs in cpu-dependence in 'insns.dat'.
-
-* Added to 'standard.mac', the "use16" and "use32" forms of
-the "bits 16/32" directive. This is nothing new, just conforms
-to a lot of other assemblers. (minor)
-
-* Changed label allocation from 320/32 (10000 labels @ 200K+)
-to 32/37 (1000 labels); makes running under DOS much easier.
-Since additional label space is allocated dynamically, this
-should have no effect on large programs with lots of labels.
-The 37 is a prime, believed to be better for hashing. (minor)
-
-* Integrated patchfile 0.98-0.98.01. I call this version
-0.98.03, for historical reasons: 0.98.02 was trashed.
-
---John Coffman <johninsd@san.rr.com> 27-Jul-2000
-
-
-Kendall Bennett's SciTech MGL changes
--------------------------------------
-Note that you must define "TASM_COMPAT" at compile-time
-to get the Tasm Ideal Mode compatibility.
-
-All changes can be compiled in and out using the TASM_COMPAT macros,
-and when compiled without TASM_COMPAT defined we get the exact same
-binary as the unmodified 0.98 sources.
-
-standard.mac, macros.c:
- . Added macros to ignore TASM directives before first include
-
-nasm.h:
- . Added extern declaration for tasm_compatible_mode
-
-nasm.c:
- . Added global variable tasm_compatible_mode
- . Added command line switch for TASM compatible mode (-t)
- . Changed version command line to reflect when compiled with TASM additions
- . Added response file processing to allow all arguments on a single
- line (response file is @resp rather than -@resp for NASM format).
-
-labels.c:
- . Changes islocal() macro to support TASM style @@local labels.
- . Added islocalchar() macro to support TASM style @@local labels.
-
-parser.c:
- . Added support for TASM style memory references (ie: mov [DWORD eax],10
- rather than the NASM style mov DWORD [eax],10).
-
-preproc.c:
- . Added new directives, %arg, %local, %stacksize to directives table
- . Added support for TASM style directives without a leading % symbol.
-
-Integrated a block of changes from Andrew Zabolotny <bit@eltech.ru>:
-
-* A new keyword %xdefine and its case-insensitive counterpart %ixdefine.
- They work almost the same way as %define and %idefine but expand
- the definition immediately, not on the invocation. Something like a cross
- between %define and %assign. The "x" suffix stands for "eXpand", so
- "xdefine" can be deciphered as "expand-and-define". Thus you can do
- things like this:
-
- %assign ofs 0
-
- %macro arg 1
- %xdefine %1 dword [esp+ofs]
- %assign ofs ofs+4
- %endmacro
-
-* Changed the place where the expansion of %$name macros are expanded.
- Now they are converted into ..@ctxnum.name form when detokenizing, so
- there are no quirks as before when using %$name arguments to macros,
- in macros etc. For example:
-
- %macro abc 1
- %define %1 hello
- %endm
-
- abc %$here
- %$here
-
- Now last line will be expanded into "hello" as expected. This also allows
- for lots of goodies, a good example are extended "proc" macros included
- in this archive.
-
-* Added a check for "cstk" in smacro_defined() before calling get_ctx() -
- this allows for things like:
-
- %ifdef %$abc
- %endif
-
- to work without warnings even in no context.
-
-* Added a check for "cstk" in %if*ctx and %elif*ctx directives -
- this allows to use %ifctx without excessive warnings. If there is
- no active context, %ifctx goes through "false" branch.
-
-* Removed "user error: " prefix with %error directive: it just clobbers the
- output and has absolutely no functionality. Besides, this allows to write
- macros that does not differ from built-in functions in any way.
-
-* Added expansion of string that is output by %error directive. Now you
- can do things like:
-
- %define hello(x) Hello, x!
-
- %define %$name andy
- %error "hello(%$name)"
-
- Same happened with %include directive.
-
-* Now all directives that expect an identifier will try to expand and
- concatenate everything without whitespaces in between before usage.
- For example, with "unfixed" nasm the commands
-
- %define %$abc hello
- %define __%$abc goodbye
- __%$abc
-
- would produce "incorrect" output: last line will expand to
-
- hello goodbyehello
-
- Not quite what you expected, eh? :-) The answer is that preprocessor
- treats the %define construct as if it would be
-
- %define __ %$abc goodbye
-
- (note the white space between __ and %$abc). After my "fix" it
- will "correctly" expand into
-
- goodbye
-
- as expected. Note that I use quotes around words "correct", "incorrect"
- etc because this is rather a feature not a bug; however current behaviour
- is more logical (and allows more advanced macro usage :-).
-
- Same change was applied to:
- %push,%macro,%imacro,%define,%idefine,%xdefine,%ixdefine,
- %assign,%iassign,%undef
-
-* A new directive [WARNING {+|-}warning-id] have been added. It works only
- if the assembly phase is enabled (i.e. it doesn't work with nasm -e).
-
-* A new warning type: macro-selfref. By default this warning is disabled;
- when enabled NASM warns when a macro self-references itself; for example
- the following source:
-
- [WARNING macro-selfref]
-
- %macro push 1-*
- %rep %0
- push %1
- %rotate 1
- %endrep
- %endmacro
-
- push eax,ebx,ecx
-
- will produce a warning, but if we remove the first line we won't see it
- anymore (which is The Right Thing To Do {tm} IMHO since C preprocessor
- eats such constructs without warnings at all).
-
-* Added a "error" routine to preprocessor which always will set ERR_PASS1
- bit in severity_code. This removes annoying repeated errors on first
- and second passes from preprocessor.
-
-* Added the %+ operator in single-line macros for concatenating two
- identifiers. Usage example:
-
- %define _myfunc _otherfunc
- %define cextern(x) _ %+ x
- cextern (myfunc)
-
- After first expansion, third line will become "_myfunc". After this
- expansion is performed again so it becomes "_otherunc".
-
-* Now if preprocessor is in a non-emmitting state, no warning or error
- will be emmitted. Example:
-
- %if 1
- mov eax,ebx
- %else
- put anything you want between these two brackets,
- even macro-parameter references %1 or local labels %$zz
- or macro-local labels %%zz - no warning will be emmitted.
- %endif
-
-* Context-local variables on expansion as a last resort are looked up
- in outer contexts. For example, the following piece:
-
- %push outer
- %define %$a [esp]
-
- %push inner
- %$a
- %pop
- %pop
-
- will expand correctly the fourth line to [esp]; if we'll define another
- %$a inside the "inner" context, it will take precedence over outer
- definition. However, this modification has been applied only to
- expand_smacro and not to smacro_define: as a consequence expansion
- looks in outer contexts, but %ifdef won't look in outer contexts.
-
- This behaviour is needed because we don't want nested contexts to
- act on already defined local macros. Example:
-
- %define %$arg1 [esp+4]
- test eax,eax
- if nz
- mov eax,%$arg1
- endif
-
- In this example the "if" mmacro enters into the "if" context, so %$arg1
- is not valid anymore inside "if". Of course it could be worked around
- by using explicitely %$$arg1 but this is ugly IMHO.
-
-* Fixed memory leak in %undef. The origline wasn't freed before
- exiting on success.
-
-* Fixed trap in preprocessor when line expanded to empty set of tokens.
- This happens, for example, in the following case:
-
- #define SOMETHING
- SOMETHING
-
-
-0.98
-----
-
-All changes since NASM 0.98p3 have been produced by H. Peter Anvin <hpa@zytor.com>.
-
-* The documentation comment delimiter is \# not #.
-* Allow EQU definitions to refer to external labels; reported by
- Pedro Gimeno.
-* Re-enable support for RDOFF v1; reported by Pedro Gimeno.
-* Updated License file per OK from Simon and Julian.
-
-
-0.98p9
-------
-
-* Update documentation (although the instruction set reference will
- have to wait; I don't want to hold up the 0.98 release for it.)
-* Verified that the NASM implementation of the PEXTRW and PMOVMSKB
- instructions is correct. The encoding differs from what the Intel
- manuals document, but the Pentium III behaviour matches NASM, not
- the Intel manuals.
-* Fix handling of implicit sizes in PSHUFW and PINSRW, reported by
- Stefan Hoffmeister.
-* Resurrect the -s option, which was removed when changing the
- diagnostic output to stdout.
-
-
-0.98p8
-------
-
-* Fix for "DB" when NASM is running on a bigendian machine.
-* Invoke insns.pl once for each output script, making Makefile.in
- legal for "make -j".
-* Improve the Unix configure-based makefiles to make package
- creation easier.
-* Included an RPM .spec file for building RPM (RedHat Package Manager)
- packages on Linux or Unix systems.
-* Fix Makefile dependency problems.
-* Change src/rdsrc.pl to include sectioning information in info
- output; required for install-info to work.
-* Updated the RDOFF distribution to version 2 from Jules; minor
- massaging to make it compile in my environment.
-* Split doc files that can be built by anyone with a Perl interpreter off
- into a separate archive.
-* "Dress rehearsal" release!
-
-
-0.98p7
-------
-
-* Fixed opcodes with a third byte-sized immediate argument to not
- complain if given "byte" on the immediate.
-* Allow %undef to remove single-line macros with arguments. This
- matches the behaviour of #undef in the C preprocessor.
-* Allow -d, -u, -i and -p to be specified as -D, -U, -I and -P for
- compatibility with most C compilers and preprocessors. This allows
- Makefile options to be shared between cc and nasm, for example.
-* Minor cleanups.
-* Went through the list of Katmai instructions and hopefully fixed the
- (rather few) mistakes in it.
-* (Hopefully) fixed a number of disassembler bugs related to ambiguous
- instructions (disambiguated by -p) and SSE instructions with REP.
-* Fix for bug reported by Mark Junger: "call dword 0x12345678" should
- work and may add an OSP (affected CALL, JMP, Jcc).
-* Fix for environments when "stderr" isn't a compile-time constant.
-
-
-0.98p6
-------
-
-* Took officially over coordination of the 0.98 release; so drop
- the p3.x notation. Skipped p4 and p5 to avoid confusion with John
- Fine's J4 and J5 releases.
-* Update the documentation; however, it still doesn't include
- documentation for the various new instructions. I somehow wonder if
- it makes sense to have an instruction set reference in the assembler
- manual when Intel et al have PDF versions of their manuals online.
-* Recognize "idt" or "centaur" for the -p option to ndisasm.
-* Changed error messages back to stderr where they belong, but add an
- -E option to redirect them elsewhere (the DOS shell cannot redirect
- stderr.)
-* -M option to generate Makefile dependencies (based on code from Alex
- Verstak.)
-* %undef preprocessor directive, and -u option, that undefines a
- single-line macro.
-* OS/2 Makefile (Mkfiles/Makefile.os2) for Borland under OS/2; from
- Chuck Crayne.
-* Various minor bugfixes (reported by):
- - Dangling %s in preproc.c (Martin Junker)
-* THERE ARE KNOWN BUGS IN SSE AND THE OTHER KATMAI INSTRUCTIONS. I am
- on a trip and didn't bring the Katmai instruction reference, so I
- can't work on them right now.
-* Updated the License file per agreement with Simon and Jules to
- include a GPL distribution clause.
-
-
-0.98p3.7
---------
-
-* (Hopefully) fixed the canned Makefiles to include the outrdf2 and
- zoutieee modules.
-* Renamed changes.asm to changed.asm.
-
-
-0.98p3.6
---------
-
-* Fixed a bunch of instructions that were added in 0.98p3.5 which had
- memory operands, and the address-size prefix was missing from the
- instruction pattern.
-
-
-0.98p3.5
---------
-
-* Merged in changes from John S. Fine's 0.98-J5 release. John's based
- 0.98-J5 on my 0.98p3.3 release; this merges the changes.
-* Expanded the instructions flag field to a long so we can fit more
- flags; mark SSE (KNI) and AMD or Katmai-specific instructions as
- such.
-* Fix the "PRIV" flag on a bunch of instructions, and create new
- "PROT" flag for protected-mode-only instructions (orthogonal to if
- the instruction is privileged!) and new "SMM" flag for SMM-only
- instructions.
-* Added AMD-only SYSCALL and SYSRET instructions.
-* Make SSE actually work, and add new Katmai MMX instructions.
-* Added a -p (preferred vendor) option to ndisasm so that it can
- distinguish e.g. Cyrix opcodes also used in SSE. For example:
-
- ndisasm -p cyrix aliased.bin
- 00000000 670F514310 paddsiw mm0,[ebx+0x10]
- 00000005 670F514320 paddsiw mm0,[ebx+0x20]
- ndisasm -p intel aliased.bin
- 00000000 670F514310 sqrtps xmm0,[ebx+0x10]
- 00000005 670F514320 sqrtps xmm0,[ebx+0x20]
-* Added a bunch of Cyrix-specific instructions.
-
-
-0.98p3.4
---------
-
-* Made at least an attempt to modify all the additional Makefiles (in
- the Mkfiles directory). I can't test it, but this was the best I
- could do.
-* DOS DJGPP+"Opus Make" Makefile from John S. Fine.
-* changes.asm changes from John S. Fine.
-
-
-0.98p3.3
---------
-
-* Patch from Conan Brink to allow nesting of %rep directives.
-* If we're going to allow INT01 as an alias for INT1/ICEBP (one of
- Jules 0.98p3 changes), then we should allow INT03 as an alias for INT3
- as well.
-* Updated changes.asm to include the latest changes.
-* Tried to clean up the <CR>s that had snuck in from a DOS/Windows
- environment into my Unix environment, and try to make sure than
- DOS/Windows users get them back.
-* We would silently generate broken tools if insns.dat wasn't sorted
- properly. Change insns.pl so that the order doesn't matter.
-* Fix bug in insns.pl (introduced by me) which would cause conditional
- instructions to have an extra "cc" in disassembly, e.g. "jnz"
- disassembled as "jccnz".
-
-
-0.98p3.2
---------
-
-* Merged in John S. Fine's changes from his 0.98-J4 prerelease; see
- http://www.csoft.net/cz/johnfine/
-* Changed previous "spotless" Makefile target (appropriate for distribution)
- to "distclean", and added "cleaner" target which is same as "clean"
- except deletes files generated by Perl scripts; "spotless" is union.
-* Removed BASIC programs from distribution. Get a Perl interpreter
- instead (see below.)
-* Calling this "pre-release 3.2" rather than "p3-hpa2" because of
- John's contributions.
-* Actually link in the IEEE output format (zoutieee.c); fix a bunch of
- compiler warnings in that file. Note I don't know what IEEE output
- is supposed to look like, so these changes were made "blind".
-
-
-0.98p3-hpa
-----------
-
-* Merged nasm098p3.zip with nasm-0.97.tar.gz to create a fully
- buildable version for Unix systems (Makefile.in updates, etc.)
-* Changed insns.pl to create the instruction tables in nasm.h and
- names.c, so that a new instruction can be added by adding it *only*
- to insns.dat.
-* Added the following new instructions: SYSENTER, SYSEXIT, FXSAVE,
- FXRSTOR, UD1, UD2 (the latter two are two opcodes that Intel
- guarantee will never be used; one of them is documented as UD2 in
- Intel documentation, the other one just as "Undefined Opcode" --
- calling it UD1 seemed to make sense.)
-* MAX_SYMBOL was defined to be 9, but LOADALL286 and LOADALL386 are 10
- characters long. Now MAX_SYMBOL is derived from insns.dat.
-* A note on the BASIC programs included: forget them. insns.bas is
- already out of date. Get yourself a Perl interpreter for your
- platform of choice at:
-
- http://www.cpan.org/ports/index.html
-
-
-0.98 pre-release 3
--------------------
-
-added response file support, improved command line handling, new layout
-help screen
-
-fixed limit checking bug, 'OUT byte nn, reg' bug, and a couple of rdoff
-related bugs, updated Wishlist; 0.98 Prerelease 3.
-
-
-0.98 pre-release 2
--------------------
-
-fixed bug in outcoff.c to do with truncating section names longer
-than 8 characters, referencing beyond end of string; 0.98 pre-release 2
-
-
-0.98 pre-released May 1999
---------------------------
-
-Fixed a bug whereby STRUC didn't work at all in RDF.
-
-Fixed a problem with group specification in PUBDEFs in OBJ.
-
-Improved ease of adding new output formats. Contribution due to
-Fox Cutter.
-
-Fixed a bug in relocations in the `bin' format: was showing up when
-a relocatable reference crossed an 8192-byte boundary in any output
-section.
-
-Fixed a bug in local labels: local-label lookups were inconsistent
-between passes one and two if an EQU occurred between the definition
-of a global label and the subsequent use of a local label local to
-that global.
-
-Fixed a seg-fault in the preprocessor (again) which happened when
-you use a blank line as the first line of a multi-line macro
-definition and then defined a label on the same line as a call to
-that macro.
-
-Fixed a stale-pointer bug in the handling of the NASM environment
-variable. Thanks to Thomas McWilliams.
-
-ELF had a hard limit on the number of sections which caused
-segfaults when transgressed. Fixed.
-
-Added ability for ndisasm to read from stdin by using `-' as the
-filename.
-
-ndisasm wasn't outputting the TO keyword. Fixed.
-
-Fixed error cascade on bogus expression in %if - an error in
-evaluation was causing the entire %if to be discarded, thus creating
-trouble later when the %else or %endif was encountered.
-
-Forward reference tracking was instruction-granular not operand-
-granular, which was causing 286-specific code to be generated
-needlessly on code of the form `shr word [forwardref],1'. Thanks to
-Jim Hague for sending a patch.
-
-All messages now appear on stdout, as sending them to stderr serves
-no useful purpose other than to make redirection difficult.
-
-Fixed the problem with EQUs pointing to an external symbol - this
-now generates an error message.
-
-Allowed multiple size prefixes to an operand, of which only the first
-is taken into account.
-
-Incorporated John Fine's changes, including fixes of a large number
-of preprocessor bugs, some small problems in OBJ, and a reworking of
-label handling to define labels before their line is assembled, rather
-than after.
-
-Reformatted a lot of the source code to be more readable. Included
-'coding.txt' as a guideline for how to format code for contributors.
-
-Stopped nested %reps causing a panic - they now cause a slightly more
-friendly error message instead.
-
-Fixed floating point constant problems (patch by Pedro Gimeno)
-
-Fixed the return value of insn_size() not being checked for -1, indicating
-an error.
-
-Incorporated 3D now instructions.
-
-Fixed the 'mov eax, eax + ebx' bug.
-
-Fixed the GLOBAL EQU bug in ELF. Released developers release 3.
-
-Incorporated John Fine's command line parsing changes
-
-Incorporated David Lindauer's OMF debug support
-
-Made changes for LCC 4.0 support (__NASM_CDecl__, removed register size
-specification warning when sizes agree).
-
-Released NASM 0.98 Pre-release 1
-
-
-0.97 released December 1997
----------------------------
-
-This was entirely a bug-fix release to 0.96, which seems to have got
-cursed. Silly me.
-
-Fixed stupid mistake in OBJ which caused `MOV EAX,<constant>' to
-fail. Caused by an error in the `MOV EAX,<segment>' support.
-
-ndisasm hung at EOF when compiled with lcc on Linux because lcc on
-Linux somehow breaks feof(). ndisasm now does not rely on feof().
-
-A heading in the documentation was missing due to a markup error in
-the indexing. Fixed.
-
-Fixed failure to update all pointers on realloc() within extended-
-operand code in parser.c. Was causing wrong behaviour and seg faults
-on lines such as `dd 0.0,0.0,0.0,0.0,...'
-
-Fixed a subtle preprocessor bug whereby invoking one multi-line
-macro on the first line of the expansion of another, when the second
-had been invoked with a label defined before it, didn't expand the
-inner macro.
-
-Added internal.doc back in to the distribution archives - it was
-missing in 0.96 *blush*
-
-Fixed bug causing 0.96 to be unable to assemble its own test files,
-specifically objtest.asm. *blush again*
-
-Fixed seg-faults and bogus error messages caused by mismatching
-%rep and %endrep within multi-line macro definitions.
-
-Fixed a problem with buffer overrun in OBJ, which was causing
-corruption at ends of long PUBDEF records.
-
-Separated DOS archives into main-program and documentation to reduce
-download size.
-
-
-0.96 released November 1997
----------------------------
-
-Fixed a bug whereby, if `nasm sourcefile' would cause a filename
-collision warning and put output into `nasm.out', then `nasm
-sourcefile -o outputfile' still gave the warning even though the
-`-o' was honoured.
-
-Fixed name pollution under Digital UNIX: one of its header files
-defined R_SP, which broke the enum in nasm.h.
-
-Fixed minor instruction table problems: FUCOM and FUCOMP didn't have
-two-operand forms; NDISASM didn't recognise the longer register
-forms of PUSH and POP (eg FF F3 for PUSH BX); TEST mem,imm32 was
-flagged as undocumented; the 32-bit forms of CMOV had 16-bit operand
-size prefixes; `AAD imm' and `AAM imm' are no longer flagged as
-undocumented because the Intel Architecture reference documents
-them.
-
-Fixed a problem with the local-label mechanism, whereby strange
-types of symbol (EQUs, auto-defined OBJ segment base symbols)
-interfered with the `previous global label' value and screwed up
-local labels.
-
-Fixed a bug whereby the stub preprocessor didn't communicate with
-the listing file generator, so that the -a and -l options in
-conjunction would produce a useless listing file.
-
-Merged `os2' object file format back into `obj', after discovering
-that `obj' _also_ shouldn't have a link pass separator in a module
-containing a non-trivial MODEND. Flat segments are now declared
-using the FLAT attribute. `os2' is no longer a valid object format
-name: use `obj'.
-
-Removed the fixed-size temporary storage in the evaluator. Very very
-long expressions (like `mov ax,1+1+1+1+...' for two hundred 1s or
-so) should now no longer crash NASM.
-
-Fixed a bug involving segfaults on disassembly of MMX instructions,
-by changing the meaning of one of the operand-type flags in nasm.h.
-This may cause other apparently unrelated MMX problems; it needs to
-be tested thoroughly.
-
-Fixed some buffer overrun problems with large OBJ output files.
-Thanks to DJ Delorie for the bug report and fix.
-
-Made preprocess-only mode actually listen to the %line markers as it
-prints them, so that it can report errors more sanely.
-
-Re-designed the evaluator to keep more sensible track of expressions
-involving forward references: can now cope with previously-nightmare
-situations such as
- mov ax,foo | bar
- foo equ 1
- bar equ 2
-
-Added the ALIGN and ALIGNB standard macros.
-
-Added PIC support in ELF: use of WRT to obtain the four extra
-relocation types needed.
-
-Added the ability for output file formats to define their own
-extensions to the GLOBAL, COMMON and EXTERN directives.
-
-Implemented common-variable alignment, and global-symbol type and
-size declarations, in ELF.
-
-Implemented NEAR and FAR keywords for common variables, plus
-far-common element size specification, in OBJ.
-
-Added a feature whereby EXTERNs and COMMONs in OBJ can be given a
-default WRT specification (either a segment or a group).
-
-Transformed the Unix NASM archive into an auto-configuring package.
-
-Added a sanity-check for people applying SEG to things which are
-already segment bases: this previously went unnoticed by the SEG
-processing and caused OBJ-driver panics later.
-
-Added the ability, in OBJ format, to deal with `MOV EAX,<segment>'
-type references: OBJ doesn't directly support dword-size segment
-base fixups, but as long as the low two bytes of the constant term
-are zero, a word-size fixup can be generated instead and it will
-work.
-
-Added the ability to specify sections' alignment requirements in
-Win32 object files and pure binary files.
-
-Added preprocess-time expression evaluation: the %assign (and
-%iassign) directive and the bare %if (and %elif) conditional. Added
-relational operators to the evaluator, for use only in %if
-constructs: the standard relationals = < > <= >= <> (and C-like
-synonyms == and !=) plus low-precedence logical operators &&, ^^ and
-||.
-
-Added a preprocessor repeat construct: %rep / %exitrep / %endrep.
-
-Added the __FILE__ and __LINE__ standard macros.
-
-Added a sanity check for number constants being greater than
-0xFFFFFFFF. The warning can be disabled.
-
-Added the %0 token whereby a variadic multi-line macro can tell how
-many parameters it's been given in a specific invocation.
-
-Added %rotate, allowing multi-line macro parameters to be cycled.
-
-Added the `*' option for the maximum parameter count on multi-line
-macros, allowing them to take arbitrarily many parameters.
-
-Added the ability for the user-level forms of EXTERN, GLOBAL and
-COMMON to take more than one argument.
-
-Added the IMPORT and EXPORT directives in OBJ format, to deal with
-Windows DLLs.
-
-Added some more preprocessor %if constructs: %ifidn / %ifidni (exact
-textual identity), and %ifid / %ifnum / %ifstr (token type testing).
-
-Added the ability to distinguish SHL AX,1 (the 8086 version) from
-SHL AX,BYTE 1 (the 286-and-upwards version whose constant happens to
-be 1).
-
-Added NetBSD/FreeBSD/OpenBSD's variant of a.out format, complete
-with PIC shared library features.
-
-Changed NASM's idiosyncratic handling of FCLEX, FDISI, FENI, FINIT,
-FSAVE, FSTCW, FSTENV, and FSTSW to bring it into line with the
-otherwise accepted standard. The previous behaviour, though it was a
-deliberate feature, was a deliberate feature based on a
-misunderstanding. Apologies for the inconvenience.
-
-Improved the flexibility of ABSOLUTE: you can now give it an
-expression rather than being restricted to a constant, and it can
-take relocatable arguments as well.
-
-Added the ability for a variable to be declared as EXTERN multiple
-times, and the subsequent definitions are just ignored.
-
-We now allow instruction prefixes (CS, DS, LOCK, REPZ etc) to be
-alone on a line (without a following instruction).
-
-Improved sanity checks on whether the arguments to EXTERN, GLOBAL
-and COMMON are valid identifiers.
-
-Added misc/exebin.mac to allow direct generation of .EXE files by
-hacking up an EXE header using DB and DW; also added test/binexe.asm
-to demonstrate the use of this. Thanks to Yann Guidon for
-contributing the EXE header code.
-
-ndisasm forgot to check whether the input file had been successfully
-opened. Now it does. Doh!
-
-Added the Cyrix extensions to the MMX instruction set.
-
-Added a hinting mechanism to allow [EAX+EBX] and [EBX+EAX] to be
-assembled differently. This is important since [ESI+EBP] and
-[EBP+ESI] have different default base segment registers.
-
-Added support for the PharLap OMF extension for 4096-byte segment
-alignment.
-
-
-0.95 released July 1997
------------------------
-
-Fixed yet another ELF bug. This one manifested if the user relied on
-the default segment, and attempted to define global symbols without
-first explicitly declaring the target segment.
-
-Added makefiles (for NASM and the RDF tools) to build Win32 console
-apps under Symantec C++. Donated by Mark Junker.
-
-Added `macros.bas' and `insns.bas', QBasic versions of the Perl
-scripts that convert `standard.mac' to `macros.c' and convert
-`insns.dat' to `insnsa.c' and `insnsd.c'. Also thanks to Mark
-Junker.
-
-Changed the diassembled forms of the conditional instructions so
-that JB is now emitted as JC, and other similar changes. Suggested
-list by Ulrich Doewich.
-
-Added `@' to the list of valid characters to begin an identifier
-with.
-
-Documentary changes, notably the addition of the `Common Problems'
-section in nasm.doc.
-
-Fixed a bug relating to 32-bit PC-relative fixups in OBJ.
-
-Fixed a bug in perm_copy() in labels.c which was causing exceptions
-in cleanup_labels() on some systems.
-
-Positivity sanity check in TIMES argument changed from a warning to
-an error following a further complaint.
-
-Changed the acceptable limits on byte and word operands to allow
-things like `~10111001b' to work.
-
-Fixed a major problem in the preprocessor which caused seg-faults if
-macro definitions contained blank lines or comment-only lines.
-
-Fixed inadequate error checking on the commas separating the
-arguments to `db', `dw' etc.
-
-Fixed a crippling bug in the handling of macros with operand counts
-defined with a `+' modifier.
-
-Fixed a bug whereby object file formats which stored the input file
-name in the output file (such as OBJ and COFF) weren't doing so
-correctly when the output file name was specified on the command
-line.
-
-Removed [INC] and [INCLUDE] support for good, since they were
-obsolete anyway.
-
-Fixed a bug in OBJ which caused all fixups to be output in 16-bit
-(old-format) FIXUPP records, rather than putting the 32-bit ones in
-FIXUPP32 (new-format) records.
-
-Added, tentatively, OS/2 object file support (as a minor variant on
-OBJ).
-
-Updates to Fox Cutter's Borland C makefile, Makefile.bc2.
-
-Removed a spurious second fclose() on the output file.
-
-Added the `-s' command line option to redirect all messages which
-would go to stderr (errors, help text) to stdout instead.
-
-Added the `-w' command line option to selectively suppress some
-classes of assembly warning messages.
-
-Added the `-p' pre-include and `-d' pre-define command-line options.
-
-Added an include file search path: the `-i' command line option.
-
-Fixed a silly little preprocessor bug whereby starting a line with a
-`%!' environment-variable reference caused an `unknown directive'
-error.
-
-Added the long-awaited listing file support: the `-l' command line
-option.
-
-Fixed a problem with OBJ format whereby, in the absence of any
-explicit segment definition, non-global symbols declared in the
-implicit default segment generated spurious EXTDEF records in the
-output.
-
-Added the NASM environment variable.
-
-From this version forward, Win32 console-mode binaries will be
-included in the DOS distribution in addition to the 16-bit binaries.
-Added Makefile.vc for this purpose.
-
-Added `return 0;' to test/objlink.c to prevent compiler warnings.
-
-Added the __NASM_MAJOR__ and __NASM_MINOR__ standard defines.
-
-Added an alternative memory-reference syntax in which prefixing an
-operand with `&' is equivalent to enclosing it in square brackets,
-at the request of Fox Cutter.
-
-Errors in pass two now cause the program to return a non-zero error
-code, which they didn't before.
-
-Fixed the single-line macro cycle detection, which didn't work at
-all on macros with no parameters (caused an infinite loop). Also
-changed the behaviour of single-line macro cycle detection to work
-like cpp, so that macros like `extrn' as given in the documentation
-can be implemented.
-
-Fixed the implementation of WRT, which was too restrictive in that
-you couldn't do `mov ax,[di+abc wrt dgroup]' because (di+abc) wasn't
-a relocatable reference.
-
-
-0.94 released April 1997
-------------------------
-
-Major item: added the macro processor.
-
-Added undocumented instructions SMI, IBTS, XBTS and LOADALL286. Also
-reorganised CMPXCHG instruction into early-486 and Pentium forms.
-Thanks to Thobias Jones for the information.
-
-Fixed two more stupid bugs in ELF, which were causing `ld' to
-continue to seg-fault in a lot of non-trivial cases.
-
-Fixed a seg-fault in the label manager.
-
-Stopped FBLD and FBSTP from _requiring_ the TWORD keyword, which is
-the only option for BCD loads/stores in any case.
-
-Ensured FLDCW, FSTCW and FSTSW can cope with the WORD keyword, if
-anyone bothers to provide it. Previously they complained unless no
-keyword at all was present.
-
-Some forms of FDIV/FDIVR and FSUB/FSUBR were still inverted: a
-vestige of a bug that I thought had been fixed in 0.92. This was
-fixed, hopefully for good this time...
-
-Another minor phase error (insofar as a phase error can _ever_ be
-minor) fixed, this one occurring in code of the form
- rol ax,forward_reference
- forward_reference equ 1
-
-The number supplied to TIMES is now sanity-checked for positivity,
-and also may be greater than 64K (which previously didn't work on
-16-bit systems).
-
-Added Watcom C makefiles, and misc/pmw.bat, donated by Dominik Behr.
-
-Added the INCBIN pseudo-opcode.
-
-Due to the advent of the preprocessor, the [INCLUDE] and [INC]
-directives have become obsolete. They are still supported in this
-version, with a warning, but won't be in the next.
-
-Fixed a bug in OBJ format, which caused incorrect object records to
-be output when absolute labels were made global.
-
-Updates to RDOFF subdirectory, and changes to outrdf.c.
-
-
-0.93 released January 1997
---------------------------
-
-This release went out in a great hurry after semi-crippling bugs
-were found in 0.92.
-
-Really _did_ fix the stack overflows this time. *blush*
-
-Had problems with EA instruction sizes changing between passes, when
-an offset contained a forward reference and so 4 bytes were
-allocated for the offset in pass one; by pass two the symbol had
-been defined and happened to be a small absolute value, so only 1
-byte got allocated, causing instruction size mismatch between passes
-and hence incorrect address calculations. Fixed.
-
-Stupid bug in the revised ELF section generation fixed (associated
-string-table section for .symtab was hard-coded as 7, even when this
-didn't fit with the real section table). Was causing `ld' to
-seg-fault under Linux.
-
-Included a new Borland C makefile, Makefile.bc2, donated by Fox
-Cutter <lmb@comtch.iea.com>.
-
-
-0.92 released January 1997
---------------------------
-
-The FDIVP/FDIVRP and FSUBP/FSUBRP pairs had been inverted: this was
-fixed. This also affected the LCC driver.
-
-Fixed a bug regarding 32-bit effective addresses of the form
-[other_register+ESP].
-
-Documentary changes, notably documentation of the fact that Borland
-Win32 compilers use `obj' rather than `win32' object format.
-
-Fixed the COMENT record in OBJ files, which was formatted
-incorrectly.
-
-Fixed a bug causing segfaults in large RDF files.
-
-OBJ format now strips initial periods from segment and group
-definitions, in order to avoid complications with the local label
-syntax.
-
-Fixed a bug in disassembling far calls and jumps in NDISASM.
-
-Added support for user-defined sections in COFF and ELF files.
-
-Compiled the DOS binaries with a sensible amount of stack, to
-prevent stack overflows on any arithmetic expression containing
-parentheses.
-
-Fixed a bug in handling of files that do not terminate in a newline.
-
-
-0.91 released November 1996
----------------------------
-
-Loads of bug fixes.
-Support for RDF added.
-Support for DBG debugging format added.
-Support for 32-bit extensions to Microsoft OBJ format added.
-Revised for Borland C: some variable names changed, makefile added.
-LCC support revised to actually work.
-JMP/CALL NEAR/FAR notation added.
-`a16', `o16', `a32' and `o32' prefixes added.
-Range checking on short jumps implemented.
-MMX instruction support added.
-Negative floating point constant support added.
-Memory handling improved to bypass 64K barrier under DOS.
-$ prefix to force treatment of reserved words as identifiers added.
-Default-size mechanism for object formats added.
-Compile-time configurability added.
-`#', `@', `~' and `?' are now valid characters in labels.
-`-e' and `-k' options in NDISASM added.
-
-
-0.90 released October 1996
---------------------------
-
-First release version. First support for object file output. Other
-changes from previous version (0.3x) too numerous to document.
+The revision history has moved to the file doc/changes.src, and
+is now included in the documentation as Appendix C.