1 01/28/01 - fbk - added Stepane Denis' SSE2 instructions to a *working*
2 version of the code - some earlier versions were based on
3 broken code - sorry 'bout that. version "0.98.07"
5 01/28/01 - fbk - cosmetic modifications to nasm.c, nasm.h,
8 01/18/01 - fbk - "metalbrain"s jecxz bug fix in insns.dat
9 - alter nasmdoc.src to match - version "0.98.06f"
11 01/09/01 - fbk - removed the "outforms.h" file - it appears to be
12 someone's old backup of "outform.h". version "0.98.06e"
14 01/09/01 - fbk - finally added the fix for the "multiple %includes bug",
15 known since 7/27/99 - reported originally (?) and sent to
16 us by Austin Lunnen - he reports that John Fine had a fix
17 within the day. Here it is...
19 ---- Nelson Rush resigns from the group. Big thanks to Nelson for
20 his leadership and enthusiasm in getting these changes
21 incorporated into Nasm!
23 ---- fbk - [list +], [list -] directives - ineptly implemented, should
24 be re-written or removed, perhaps.
26 ---- Brian Raiter / fbk - "elfso bug" fix - applied to aoutb format
27 as well - testing might be desirable...
29 08/07/00 - James Seter - -postfix, -prefix command line switches.
31 ---- Yuri Zaporogets - rdoff utility changes.
33 John Coffman's changes:
34 For the JMP and other optimizations see the file README03.txt.
36 Kendall Bennett's changes:
37 For changes since the 0.98 release see the file scitech.txt. Note
38 that you must define "TASM_COMPAT" at compile-time
39 to get the Tasm Ideal Mode compatibility.
41 ----------------------------------------------
42 ... this is the 0.98 "modified" file ...
43 --------------------------------------------------
44 This file details changes since NASM 0.98p3. All the releases in this
45 file have been produced by H. Peter Anvin <hpa@zytor.com>.
48 * The documentation comment delimiter is \# not #.
49 * Allow EQU definitions to refer to external labels; reported by
51 * Re-enable support for RDOFF v1; reported by Pedro Gimeno.
52 * Updated License file per OK from Simon and Julian.
55 * Update documentation (although the instruction set reference will
56 have to wait; I don't want to hold up the 0.98 release for it.)
57 * Verified that the NASM implementation of the PEXTRW and PMOVMSKB
58 instructions is correct. The encoding differs from what the Intel
59 manuals document, but the Pentium III behaviour matches NASM, not
61 * Fix handling of implicit sizes in PSHUFW and PINSRW, reported by
63 * Resurrect the -s option, which was removed when changing the
64 diagnostic output to stdout.
67 * Fix for "DB" when NASM is running on a bigendian machine.
68 * Invoke insns.pl once for each output script, making Makefile.in
70 * Improve the Unix configure-based makefiles to make package
72 * Included an RPM .spec file for building RPM (RedHat Package Manager)
73 packages on Linux or Unix systems.
74 * Fix Makefile dependency problems.
75 * Change src/rdsrc.pl to include sectioning information in info
76 output; required for install-info to work.
77 * Updated the RDOFF distribution to version 2 from Jules; minor
78 massaging to make it compile in my environment.
79 * Split doc files that can be built by anyone with a Perl interpreter off
80 into a separate archive.
81 * "Dress rehearsal" release!
85 * Fixed opcodes with a third byte-sized immediate argument to not
86 complain if given "byte" on the immediate.
87 * Allow %undef to remove single-line macros with arguments. This
88 matches the behaviour of #undef in the C preprocessor.
89 * Allow -d, -u, -i and -p to be specified as -D, -U, -I and -P for
90 compatibility with most C compilers and preprocessors. This allows
91 Makefile options to be shared between cc and nasm, for example.
93 * Went through the list of Katmai instructions and hopefully fixed the
94 (rather few) mistakes in it.
95 * (Hopefully) fixed a number of disassembler bugs related to ambiguous
96 instructions (disambiguated by -p) and SSE instructions with REP.
97 * Fix for bug reported by Mark Junger: "call dword 0x12345678" should
98 work and may add an OSP (affected CALL, JMP, Jcc).
99 * Fix for environments when "stderr" isn't a compile-time constant.
103 * Took officially over coordination of the 0.98 release; so drop
104 the p3.x notation. Skipped p4 and p5 to avoid confusion with John
105 Fine's J4 and J5 releases.
106 * Update the documentation; however, it still doesn't include
107 documentation for the various new instructions. I somehow wonder if
108 it makes sense to have an instruction set reference in the assembler
109 manual when Intel et al have PDF versions of their manuals online.
110 * Recognize "idt" or "centaur" for the -p option to ndisasm.
111 * Changed error messages back to stderr where they belong, but add an
112 -E option to redirect them elsewhere (the DOS shell cannot redirect
114 * -M option to generate Makefile dependencies (based on code from Alex
116 * %undef preprocessor directive, and -u option, that undefines a
118 * OS/2 Makefile (Mkfiles/Makefile.os2) for Borland under OS/2; from
120 * Various minor bugfixes (reported by):
121 - Dangling %s in preproc.c (Martin Junker)
122 * THERE ARE KNOWN BUGS IN SSE AND THE OTHER KATMAI INSTRUCTIONS. I am
123 on a trip and didn't bring the Katmai instruction reference, so I
124 can't work on them right now.
125 * Updated the License file per agreement with Simon and Jules to
126 include a GPL distribution clause.
128 For release 0.98p3.7:
130 * (Hopefully) fixed the canned Makefiles to include the outrdf2 and
132 * Renamed changes.asm to changed.asm.
134 For release 0.98p3.6:
136 * Fixed a bunch of instructions that were added in 0.98p3.5 which had
137 memory operands, and the address-size prefix was missing from the
140 For release 0.98p3.5:
142 * Merged in changes from John S. Fine's 0.98-J5 release. John's based
143 0.98-J5 on my 0.98p3.3 release; this merges the changes.
144 * Expanded the instructions flag field to a long so we can fit more
145 flags; mark SSE (KNI) and AMD or Katmai-specific instructions as
147 * Fix the "PRIV" flag on a bunch of instructions, and create new
148 "PROT" flag for protected-mode-only instructions (orthogonal to if
149 the instruction is privileged!) and new "SMM" flag for SMM-only
151 * Added AMD-only SYSCALL and SYSRET instructions.
152 * Make SSE actually work, and add new Katmai MMX instructions.
153 * Added a -p (preferred vendor) option to ndisasm so that it can
154 distinguish e.g. Cyrix opcodes also used in SSE. For example:
156 ndisasm -p cyrix aliased.bin
157 00000000 670F514310 paddsiw mm0,[ebx+0x10]
158 00000005 670F514320 paddsiw mm0,[ebx+0x20]
159 ndisasm -p intel aliased.bin
160 00000000 670F514310 sqrtps xmm0,[ebx+0x10]
161 00000005 670F514320 sqrtps xmm0,[ebx+0x20]
162 * Added a bunch of Cyrix-specific instructions.
164 For release 0.98p3.4:
166 * Made at least an attempt to modify all the additional Makefiles (in
167 the Mkfiles directory). I can't test it, but this was the best I
169 * DOS DJGPP+"Opus Make" Makefile from John S. Fine.
170 * changes.asm changes from John S. Fine.
173 For release 0.98p3.3:
175 * Patch from Conan Brink to allow nesting of %rep directives.
176 * If we're going to allow INT01 as an alias for INT1/ICEBP (one of
177 Jules 0.98p3 changes), then we should allow INT03 as an alias for INT3
179 * Updated changes.asm to include the latest changes.
180 * Tried to clean up the <CR>s that had snuck in from a DOS/Windows
181 environment into my Unix environment, and try to make sure than
182 DOS/Windows users get them back.
183 * We would silently generate broken tools if insns.dat wasn't sorted
184 properly. Change insns.pl so that the order doesn't matter.
185 * Fix bug in insns.pl (introduced by me) which would cause conditional
186 instructions to have an extra "cc" in disassembly, e.g. "jnz"
187 disassembled as "jccnz".
190 For release 0.98p3.2:
192 * Merged in John S. Fine's changes from his 0.98-J4 prerelease; see
193 http://www.csoft.net/cz/johnfine/
194 * Changed previous "spotless" Makefile target (appropriate for distribution)
195 to "distclean", and added "cleaner" target which is same as "clean"
196 except deletes files generated by Perl scripts; "spotless" is union.
197 * Removed BASIC programs from distribution. Get a Perl interpreter
199 * Calling this "pre-release 3.2" rather than "p3-hpa2" because of
200 John's contributions.
201 * Actually link in the IEEE output format (zoutieee.c); fix a bunch of
202 compiler warnings in that file. Note I don't know what IEEE output
203 is supposed to look like, so these changes were made "blind".
206 For release 0.98p3-hpa:
208 * Merged nasm098p3.zip with nasm-0.97.tar.gz to create a fully
209 buildable version for Unix systems (Makefile.in updates, etc.)
210 * Changed insns.pl to create the instruction tables in nasm.h and
211 names.c, so that a new instruction can be added by adding it *only*
213 * Added the following new instructions: SYSENTER, SYSEXIT, FXSAVE,
214 FXRSTOR, UD1, UD2 (the latter two are two opcodes that Intel
215 guarantee will never be used; one of them is documented as UD2 in
216 Intel documentation, the other one just as "Undefined Opcode" --
217 calling it UD1 seemed to make sense.)
218 * MAX_SYMBOL was defined to be 9, but LOADALL286 and LOADALL386 are 10
219 characters long. Now MAX_SYMBOL is derived from insns.dat.
220 * A note on the BASIC programs included: forget them. insns.bas is
221 already out of date. Get yourself a Perl interpreter for your
222 platform of choice at:
224 http://www.cpan.org/ports/index.html