nasm/MODIFIED
H. Peter Anvin ef7468f4ec NASM 0.98p7
2002-04-30 20:57:59 +00:00

147 lines
6.4 KiB
Text

This is a modified version of NASM, modified and released by H. Peter
Anvin <hpa@zytor.com>; it is not the original form released by the
NASM authors. However, as of 0.98p6 I have agreed to release the
official 0.98 version, so this is now an "official pre-release".
For 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.
For release 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.
For release 0.98p3.7:
* (Hopefully) fixed the canned Makefiles to include the outrdf2 and
zoutieee modules.
* Renamed changes.asm to changed.asm.
For release 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.
For release 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.
For release 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.
For release 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".
For release 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".
For release 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