NASM 0.98p7
[nasm/avx512.git] / MODIFIED
blob247aced77af1d6fd4c5eb0c941e5986a2a3e701e
1 This is a modified version of NASM, modified and released by H. Peter
2 Anvin <hpa@zytor.com>; it is not the original form released by the
3 NASM authors.  However, as of 0.98p6 I have agreed to release the
4 official 0.98 version, so this is now an "official pre-release".
6 For release 0.98p7:
8 * Fixed opcodes with a third byte-sized immediate argument to not
9   complain if given "byte" on the immediate.
10 * Allow %undef to remove single-line macros with arguments.  This
11   matches the behaviour of #undef in the C preprocessor.
12 * Allow -d, -u, -i and -p to be specified as -D, -U, -I and -P for
13   compatibility with most C compilers and preprocessors.  This allows
14   Makefile options to be shared between cc and nasm, for example.
15 * Minor cleanups.
16 * Went through the list of Katmai instructions and hopefully fixed the
17   (rather few) mistakes in it.
18 * (Hopefully) fixed a number of disassembler bugs related to ambiguous
19   instructions (disambiguated by -p) and SSE instructions with REP.
20 * Fix for bug reported by Mark Junger: "call dword 0x12345678" should
21   work and may add an OSP (affected CALL, JMP, Jcc).
22 * Fix for environments when "stderr" isn't a compile-time constant.
24 For release 0.98p6:
26 * Took officially over coordination of the 0.98 release; so drop
27   the p3.x notation. Skipped p4 and p5 to avoid confusion with John
28   Fine's J4 and J5 releases.
29 * Update the documentation; however, it still doesn't include
30   documentation for the various new instructions.  I somehow wonder if
31   it makes sense to have an instruction set reference in the assembler
32   manual when Intel et al have PDF versions of their manuals online.
33 * Recognize "idt" or "centaur" for the -p option to ndisasm.
34 * Changed error messages back to stderr where they belong, but add an
35   -E option to redirect them elsewhere (the DOS shell cannot redirect
36   stderr.)
37 * -M option to generate Makefile dependencies (based on code from Alex
38   Verstak.)
39 * %undef preprocessor directive, and -u option, that undefines a
40   single-line macro.
41 * OS/2 Makefile (Mkfiles/Makefile.os2) for Borland under OS/2; from
42   Chuck Crayne.
43 * Various minor bugfixes (reported by):
44   - Dangling %s in preproc.c (Martin Junker)
45 * THERE ARE KNOWN BUGS IN SSE AND THE OTHER KATMAI INSTRUCTIONS.  I am
46   on a trip and didn't bring the Katmai instruction reference, so I
47   can't work on them right now.
48 * Updated the License file per agreement with Simon and Jules to
49   include a GPL distribution clause.
51 For release 0.98p3.7:
53 * (Hopefully) fixed the canned Makefiles to include the outrdf2 and
54   zoutieee modules.
55 * Renamed changes.asm to changed.asm.
57 For release 0.98p3.6:
59 * Fixed a bunch of instructions that were added in 0.98p3.5 which had
60   memory operands, and the address-size prefix was missing from the
61   instruction pattern.
63 For release 0.98p3.5:
65 * Merged in changes from John S. Fine's 0.98-J5 release.  John's based
66   0.98-J5 on my 0.98p3.3 release; this merges the changes.
67 * Expanded the instructions flag field to a long so we can fit more
68   flags; mark SSE (KNI) and AMD or Katmai-specific instructions as
69   such.
70 * Fix the "PRIV" flag on a bunch of instructions, and create new
71   "PROT" flag for protected-mode-only instructions (orthogonal to if
72   the instruction is privileged!) and new "SMM" flag for SMM-only
73   instructions.
74 * Added AMD-only SYSCALL and SYSRET instructions.
75 * Make SSE actually work, and add new Katmai MMX instructions.
76 * Added a -p (preferred vendor) option to ndisasm so that it can
77   distinguish e.g. Cyrix opcodes also used in SSE.  For example:
79         ndisasm -p cyrix aliased.bin
80         00000000  670F514310        paddsiw mm0,[ebx+0x10]
81         00000005  670F514320        paddsiw mm0,[ebx+0x20]
82         ndisasm -p intel aliased.bin
83         00000000  670F514310        sqrtps xmm0,[ebx+0x10]
84         00000005  670F514320        sqrtps xmm0,[ebx+0x20]
85 * Added a bunch of Cyrix-specific instructions.
87 For release 0.98p3.4:
89 * Made at least an attempt to modify all the additional Makefiles (in
90   the Mkfiles directory).  I can't test it, but this was the best I
91   could do.
92 * DOS DJGPP+"Opus Make" Makefile from John S. Fine.
93 * changes.asm changes from John S. Fine.
96 For release 0.98p3.3:
98 * Patch from Conan Brink to allow nesting of %rep directives.
99 * If we're going to allow INT01 as an alias for INT1/ICEBP (one of
100   Jules 0.98p3 changes), then we should allow INT03 as an alias for INT3
101   as well.
102 * Updated changes.asm to include the latest changes.
103 * Tried to clean up the <CR>s that had snuck in from a DOS/Windows
104   environment into my Unix environment, and try to make sure than
105   DOS/Windows users get them back.
106 * We would silently generate broken tools if insns.dat wasn't sorted
107   properly.  Change insns.pl so that the order doesn't matter.
108 * Fix bug in insns.pl (introduced by me) which would cause conditional
109   instructions to have an extra "cc" in disassembly, e.g. "jnz"
110   disassembled as "jccnz".
113 For release 0.98p3.2:
115 * Merged in John S. Fine's changes from his 0.98-J4 prerelease; see
116   http://www.csoft.net/cz/johnfine/
117 * Changed previous "spotless" Makefile target (appropriate for distribution)
118   to "distclean", and added "cleaner" target which is same as "clean"
119   except deletes files generated by Perl scripts; "spotless" is union.
120 * Removed BASIC programs from distribution.  Get a Perl interpreter
121   instead (see below.)
122 * Calling this "pre-release 3.2" rather than "p3-hpa2" because of
123   John's contributions.
124 * Actually link in the IEEE output format (zoutieee.c); fix a bunch of
125   compiler warnings in that file.  Note I don't know what IEEE output
126   is supposed to look like, so these changes were made "blind".
129 For release 0.98p3-hpa:
131 * Merged nasm098p3.zip with nasm-0.97.tar.gz to create a fully
132   buildable version for Unix systems (Makefile.in updates, etc.)
133 * Changed insns.pl to create the instruction tables in nasm.h and
134   names.c, so that a new instruction can be added by adding it *only*
135   to insns.dat.
136 * Added the following new instructions: SYSENTER, SYSEXIT, FXSAVE,
137   FXRSTOR, UD1, UD2 (the latter two are two opcodes that Intel
138   guarantee will never be used; one of them is documented as UD2 in
139   Intel documentation, the other one just as "Undefined Opcode" --
140   calling it UD1 seemed to make sense.)
141 * MAX_SYMBOL was defined to be 9, but LOADALL286 and LOADALL386 are 10
142   characters long.  Now MAX_SYMBOL is derived from insns.dat.
143 * A note on the BASIC programs included: forget them.  insns.bas is
144   already out of date.  Get yourself a Perl interpreter for your
145   platform of choice at:
147         http://www.cpan.org/ports/index.html