blob: dcf7c089573f05c7fa8f41515eb6c3576bfb5b3e [file] [log] [blame]
H. Peter Anvin04156cd2008-07-14 02:45:57 -04001\#
2\# NASM revision history in nasmdoc format
3\#
4
5\H{cl-2.xx} NASM 2 Series
6
7The NASM 2 series support x86-64, and is the production version of NASM
8since 2007.
9
Cyrill Gorcunovb9771902009-11-06 11:24:54 +030010
H. Peter Anvin57924832009-11-09 14:58:45 -080011\S{cl-2.08} Version 2.08
Cyrill Gorcunov66ba8cd2009-10-18 01:09:40 +040012
13\b A number of enhancements/fixes in macros area.
14
Keith Kanios4ea84662009-10-25 14:06:24 -050015\b Support for arbitrarily terminating macro expansions \c{%exitmacro}.
16 See \k{exitmacro}.
17
18\b Support for recursive macro expansion \c{%rmacro/irmacro}.
19 See \k{mlrmacro}.
20
21\b Support for converting strings to tokens. See \k{deftok}.
22
Cyrill Gorcunov66ba8cd2009-10-18 01:09:40 +040023\b Fuzzy operand size logic introduced.
24
Keith Kanios4ea84662009-10-25 14:06:24 -050025\b Fix Macho-O alignment bug.
26
Cyrill Gorcunov66ba8cd2009-10-18 01:09:40 +040027\b Fix crashes with -fwin32 on file with many exports.
28
29\b Fix stack overrun for too long [DEBUG id].
30
Cyrill Gorcunovb9771902009-11-06 11:24:54 +030031\b Fix incorrect sbyte usage in IMUL (hit only if optimization
32 flag passed).
33
Cyrill Gorcunov66ba8cd2009-10-18 01:09:40 +040034\b Append ending token for \c{.stabs} records in the ELF output format.
35
36\b New NSIS script which uses ModernUI and MultiUser approach.
37
38\b Visual Studio 2008 NASM integration (rules file).
39
40\b Warn a user if a constant too long (and as a result will be stripped).
H. Peter Anvin04156cd2008-07-14 02:45:57 -040041
H. Peter Anvin57924832009-11-09 14:58:45 -080042\b The obsoleted pre-XOP AMD SSE5 instruction set which was never actualized
43 was removed.
44
Keith Kanios4ea84662009-10-25 14:06:24 -050045
H. Peter Anvinfba06d22009-07-06 11:28:12 -070046\S{cl-2.07} Version 2.07
47
48\b NASM is now under the 2-clause BSD license. See \k{legal}.
49
50\b Fix the section type for the \c{.strtab} section in the \c{elf64}
51 output format.
52
53\b Fix the handling of \c{COMMON} directives in the \c{obj} output format.
54
55\b New \c{ith} and \c{srec} output formats; these are variants of the
56 \c{bin} output format which output Intel hex and Motorola S-records,
57 respectively. See \k{ithfmt} and \k{srecfmt}.
58
59\b \c{rdf2ihx} replaced with an enhanced \c{rdf2bin}, which can output
60 binary, COM, Intel hex or Motorola S-records.
61
62\b The Windows installer now puts the NASM directory first in the
63 \c{PATH} of the "NASM Shell".
64
H. Peter Anvin83b942d2009-07-06 19:00:08 -070065\b Revert the early expansion behavior of \c{%+} to pre-2.06 behavior:
66 \c{%+} is only expanded late.
67
H. Peter Anvine227fe62009-07-06 19:27:33 -070068\b Yet another Mach-O alignment fix.
69
H. Peter Anvina7a14b22009-07-07 16:08:56 -070070\b Don't delete the list file on errors. Also, include error and
71 warning information in the list file.
72
H. Peter Anvina6e25b52009-07-08 21:32:28 -070073\b Support for 64-bit Mach-O output, see \k{machofmt}.
74
H. Peter Anvina99c9842009-07-15 17:43:32 -040075\b Fix assert failure on certain operations that involve strings with
76 high-bit bytes.
H. Peter Anvincc6ee1a2009-07-15 16:31:55 -040077
H. Peter Anvinfba06d22009-07-06 11:28:12 -070078
H. Peter Anvinb34fce72008-10-24 16:05:19 -070079\S{cl-2.06} Version 2.06
80
H. Peter Anvinc940afc2009-06-28 17:12:37 -070081\b This release is dedicated to the memory of Charles A. Crayne, long
82 time NASM developer as well as moderator of \c{comp.lang.asm.x86} and
83 author of the book \e{Serious Assembler}. We miss you, Chuck.
84
H. Peter Anvinb34fce72008-10-24 16:05:19 -070085\b Support for indirect macro expansion (\c{%[...]}). See \k{indmacro}.
86
H. Peter Anvin0b7d9032008-10-24 16:27:11 -070087\b \c{%pop} can now take an argument, see \k{pushpop}.
88
H. Peter Anvin264b7b92008-10-24 16:38:17 -070089\b The argument to \c{%use} is no longer macro-expanded. Use
90 \c{%[...]} if macro expansion is desired.
91
H. Peter Anvine263d042008-11-02 20:41:29 -080092\b Support for thread-local storage in ELF32 and ELF64. See \k{elftls}.
93
H. Peter Anvin67a405e2008-11-04 14:26:32 -080094\b Fix crash on \c{%ifmacro} without an argument.
95
H. Peter Anvin67478812008-11-06 09:42:11 -080096\b Correct the arguments to the \c{POPCNT} instruction.
97
H. Peter Anvinfd925d92008-12-22 16:37:59 -080098\b Fix section alignment in the Mach-O format.
99
H. Peter Anvine8a3e622009-02-18 14:13:25 -0800100\b Update AVX support to version 5 of the Intel specification.
101
H. Peter Anvin87513882009-02-21 18:26:20 -0800102\b Fix the handling of accesses to context-local macros from higher
103 levels in the context stack.
104
105\b Treat \c{WAIT} as a prefix rather than as an instruction, thereby
106 allowing constructs like \c{O16 FSAVE} to work correctly.
107
Victor van den Elzenb32536c2009-03-29 03:09:13 +0200108\b Support for structures with a non-zero base offset. See \k{struc}.
109
H. Peter Anvin9c7f3f52009-04-07 22:09:05 -0700110\b Correctly handle preprocessor token concatenation (see \k{concat})
111 involving floating-point numbers.
112
H. Peter Anvin883735f2009-06-25 11:23:37 -0700113\b The \c{PINSR} series of instructions have been corrected and
114 rationalized.
115
116\b Removed AMD SSE5, replaced with the new XOP/FMA4/CVT16 (rev 3.03)
117 spec.
118
H. Peter Anvind219a3e2009-06-25 12:30:50 -0700119\b The ELF backends no longer automatically generate a \c{.comment} section.
120
H. Peter Anvinc4471462009-06-25 14:54:44 -0700121\b Add additional "well-known" ELF sections with default attributes. See
122 \k{elfsect}.
123
H. Peter Anvinb34fce72008-10-24 16:05:19 -0700124
H. Peter Anvin7714ced2008-10-29 10:51:51 -0700125\S{cl-2.05.01} Version 2.05.01
126
127\b Fix the \c{-w}/\c{-W} option parsing, which was broken in NASM 2.05.
128
129
H. Peter Anvindc0bf472008-09-30 16:24:47 -0700130\S{cl-2.05} Version 2.05
131
H. Peter Anvin1abb9e52008-09-30 17:14:54 -0700132\b Fix redundant REX.W prefix on \c{JMP reg64}.
133
H. Peter Anvindc0bf472008-09-30 16:24:47 -0700134\b Make the behaviour of \c{-O0} match NASM 0.98 legacy behavior.
135 See \k{opt-O}.
136
H. Peter Anvin2f160432008-09-30 16:39:17 -0700137\b \c{-w-user} can be used to suppress the output of \c{%warning} directives.
138 See \k{opt-w}.
139
H. Peter Anvina3a60e92008-10-01 10:02:44 -0700140\b Fix bug where \c{ALIGN} would issue a full alignment datum instead of
141 zero bytes.
142
143\b Fix offsets in list files.
144
145\b Fix \c{%include} inside multi-line macros or loops.
146
H. Peter Anvin6c80ab62008-10-04 18:50:47 -0700147\b Fix error where NASM would generate a spurious warning on valid
148 optimizations of immediate values.
149
H. Peter Anvin04c60522008-10-06 18:00:13 -0700150\b Fix arguments to a number of the \c{CVT} SSE instructions.
151
H. Peter Anvin68b41d32008-10-06 19:15:42 -0700152\b Fix RIP-relative offsets when the instruction carries an immediate.
153
H. Peter Anvin3ffd0fc2008-10-17 23:36:45 -0700154\b Massive overhaul of the ELF64 backend for spec compliance.
H. Peter Anvin8cd1df82008-10-12 21:17:04 -0700155
H. Peter Anvin7766ab02008-10-23 19:29:28 -0700156\b Fix the Geode \c{PFRCPV} and \c{PFRSQRTV} instruction.
157
158\b Fix the SSE 4.2 \c{CRC32} instruction.
159
H. Peter Anvindc0bf472008-09-30 16:24:47 -0700160
H. Peter Anvin04156cd2008-07-14 02:45:57 -0400161\S{cl-2.04} Version 2.04
162
H. Peter Anvin6477f3d2008-07-14 02:49:52 -0400163\b Sanitize macro handing in the \c{%error} directive.
H. Peter Anvin04156cd2008-07-14 02:45:57 -0400164
H. Peter Anvin6477f3d2008-07-14 02:49:52 -0400165\b New \c{%warning} directive to issue user-controlled warnings.
H. Peter Anvin04156cd2008-07-14 02:45:57 -0400166
H. Peter Anvin8e3f75e2008-09-24 00:21:58 -0700167\b \c{%error} directives are now deferred to the final assembly phase.
168
169\b New \c{%fatal} directive to immediately terminate assembly.
170
H. Peter Anvindf73e0b2008-09-03 15:16:44 -0700171\b New \c{%strcat} directive to join quoted strings together.
H. Peter Anvin04156cd2008-07-14 02:45:57 -0400172
H. Peter Anvindf73e0b2008-09-03 15:16:44 -0700173\b New \c{%use} macro directive to support standard macro directives. See
174 \k{use}.
175
176\b Excess default parameters to \c{%macro} now issues a warning by default.
177 See \k{mlmacro}.
178
H. Peter Anvin13f1f3e2008-09-24 08:59:29 -0700179\b Fix \c{%ifn} and \c{%elifn}.
180
181\b Fix nested \c{%else} clauses.
182
183\b Correct the handling of nested \c{%rep}s.
184
185\b New \c{%unmacro} directive to undeclare a multi-line macro.
186 See \k{unmacro}.
187
H. Peter Anvin010aee22008-09-24 17:34:37 -0700188\b Builtin macro \c{__PASS__} which expands to the current assembly pass.
189 See \k{pass_macro}.
190
H. Peter Anvin13f1f3e2008-09-24 08:59:29 -0700191\b \c{__utf16__} and \c{__utf32__} operators to generate UTF-16 and UTF-32
192 strings. See \k{unicode}.
193
194\b Fix bug in case-insensitive matching when compiled on platforms that
195 don't use the \c{configure} script. Of the official release binaries,
196 that only affected the OS/2 binary.
197
198\b Support for x87 packed BCD constants. See \k{bcdconst}.
199
200\b Correct the \c{LTR} and \c{SLDT} instructions in 64-bit mode.
201
202\b Fix unnecessary REX.W prefix on indirect jumps in 64-bit mode.
203
204\b Add AVX versions of the AES instructions (\c{VAES}...).
205
206\b Fix the 256-bit FMA instructions.
207
208\b Add 256-bit AVX stores per the latest AVX spec.
209
210\b VIA XCRYPT instructions can now be written either with or without
211 \c{REP}, apparently different versions of the VIA spec wrote them
212 differently.
213
214\b Add missing 64-bit \c{MOVNTI} instruction.
215
216\b Fix the operand size of \c{VMREAD} and \c{VMWRITE}.
217
H. Peter Anvindf73e0b2008-09-03 15:16:44 -0700218\b Numerous bug fixes, especially to the AES, AVX and VTX instructions.
219
H. Peter Anvina2d542c2008-09-10 23:04:56 -0700220\b The optimizer now always runs until it converges. It also runs even
221 when disabled, but doesn't optimize. This allows most forward references
222 to be resolved properly.
223
H. Peter Anvinc83f9de2008-10-24 16:53:53 -0700224\b \c{%push} no longer needs a context identifier; omitting the context
225 identifier results in an anonymous context.
226
H. Peter Anvin04156cd2008-07-14 02:45:57 -0400227
228\S{cl-2.03.01} Version 2.03.01
229
230\b Fix buffer overflow in the listing module.
231
232\b Fix the handling of hexadecimal escape codes in `...` strings.
233
234\b The Postscript/PDF documentation has been reformatted.
235
236\b The \c{-F} option now implies \c{-g}.
237
238
239\S{cl-2.03} Version 2.03
240
241\b Add support for Intel AVX, CLMUL and FMA instructions,
242including YMM registers.
243
244\b \c{dy}, \c{resy} and \c{yword} for 32-byte operands.
245
246\b Fix some SSE5 instructions.
247
248\b Intel \c{INVEPT}, \c{INVVPID} and \c{MOVBE} instructions.
249
250\b Fix checking for critical expressions when the optimizer is enabled.
251
252\b Support the DWARF debugging format for ELF targets.
253
254\b Fix optimizations of signed bytes.
255
256\b Fix operation on bigendian machines.
257
258\b Fix buffer overflow in the preprocessor.
259
260\b \c{SAFESEH} support for Win32, \c{IMAGEREL} for Win64 (SEH).
261
262\b \c{%?} and \c{%??} to refer to the name of a macro itself. In particular,
263\c{%idefine keyword $%?} can be used to make a keyword "disappear".
264
265\b New options for dependency generation: \c{-MD}, \c{-MF},
266\c{-MP}, \c{-MT}, \c{-MQ}.
267
268\b New preprocessor directives \c{%pathsearch} and \c{%depend}; INCBIN
269reimplemented as a macro.
270
271\b \c{%include} now resolves macros in a sane manner.
272
273\b \c{%substr} can now be used to get other than one-character substrings.
274
275\b New type of character/string constants, using backquotes (\c{`...`}),
276which support C-style escape sequences.
277
278\b \c{%defstr} and \c{%idefstr} to stringize macro definitions before
279creation.
280
281\b Fix forward references used in \c{EQU} statements.
282
H. Peter Anvin04156cd2008-07-14 02:45:57 -0400283
H. Peter Anvina5e02792009-06-24 16:50:54 -0700284\S{cl-2.02} Version 2.02
H. Peter Anvin04156cd2008-07-14 02:45:57 -0400285
286\b Additional fixes for MMX operands with explicit \c{qword}, as well as
287 (hopefully) SSE operands with \c{oword}.
288
289\b Fix handling of truncated strings with \c{DO}.
290
291\b Fix segfaults due to memory overwrites when floating-point constants
292 were used.
293
294\b Fix segfaults due to missing include files.
295
296\b Fix OpenWatcom Makefiles for DOS and OS/2.
297
298\b Add autogenerated instruction list back into the documentation.
299
300\b ELF: Fix segfault when generating stabs, and no symbols have been
301 defined.
302
303\b ELF: Experimental support for DWARF debugging information.
304
305\b New compile date and time standard macros.
306
H. Peter Anvin5506e1f2008-07-14 02:54:00 -0400307\b \c{%ifnum} now returns true for negative numbers.
H. Peter Anvin04156cd2008-07-14 02:45:57 -0400308
H. Peter Anvin5506e1f2008-07-14 02:54:00 -0400309\b New \c{%iftoken} test for a single token.
H. Peter Anvin04156cd2008-07-14 02:45:57 -0400310
H. Peter Anvin5506e1f2008-07-14 02:54:00 -0400311\b New \c{%ifempty} test for empty expansion.
H. Peter Anvin04156cd2008-07-14 02:45:57 -0400312
313\b Add support for the \c{XSAVE} instruction group.
314
315\b Makefile for Netware/gcc.
316
317\b Fix issue with some warnings getting emitted way too many times.
318
319\b Autogenerated instruction list added to the documentation.
320
H. Peter Anvin04156cd2008-07-14 02:45:57 -0400321
H. Peter Anvina5e02792009-06-24 16:50:54 -0700322\S{cl-2.01} Version 2.01
H. Peter Anvin04156cd2008-07-14 02:45:57 -0400323
324\b Fix the handling of MMX registers with explicit \c{qword} tags on
325 memory (broken in 2.00 due to 64-bit changes.)
326
327\b Fix the PREFETCH instructions.
328
329\b Fix the documentation.
330
331\b Fix debugging info when using \c{-f elf}
332(backwards compatibility alias for \c{-f elf32}).
333
334\b Man pages for rdoff tools (from the Debian project.)
335
336\b ELF: handle large numbers of sections.
337
338\b Fix corrupt output when the optimizer runs out of passes.
339
340
341\S{cl-2.00} Version 2.00
342
343\b Added c99 data-type compliance.
344
345\b Added general x86-64 support.
346
347\b Added win64 (x86-64 COFF) output format.
348
349\b Added \c{__BITS__} standard macro.
350
351\b Renamed the \c{elf} output format to \c{elf32} for clarity.
352
353\b Added \c{elf64} and \c{macho} (MacOS X) output formats.
354
355\b Added Numeric constants in \c{dq} directive.
356
357\b Added \c{oword}, \c{do} and \c{reso} pseudo operands.
358
359\b Allow underscores in numbers.
360
361\b Added 8-, 16- and 128-bit floating-point formats.
362
363\b Added binary, octal and hexadecimal floating-point.
364
365\b Correct the generation of floating-point constants.
366
367\b Added floating-point option control.
368
369\b Added Infinity and NaN floating point support.
370
371\b Added ELF Symbol Visibility support.
372
373\b Added setting OSABI value in ELF header directive.
374
375\b Added Generate Makefile Dependencies option.
376
377\b Added Unlimited Optimization Passes option.
378
379\b Added \c{%IFN} and \c{%ELIFN} support.
380
381\b Added Logical Negation Operator.
382
383\b Enhanced Stack Relative Preprocessor Directives.
384
385\b Enhanced ELF Debug Formats.
386
387\b Enhanced Send Errors to a File option.
388
389\b Added SSSE3, SSE4.1, SSE4.2, SSE5 support.
390
391\b Added a large number of additional instructions.
392
393\b Significant performance improvements.
394
H. Peter Anvin8a2f1452008-10-29 18:14:03 -0700395\b \c{-w+warning} and \c{-w-warning} can now be written as -Wwarning and
396 -Wno-warning, respectively. See \k{opt-w}.
397
398\b Add \c{-w+error} to treat warnings as errors. See \k{opt-w}.
399
400\b Add \c{-w+all} and \c{-w-all} to enable or disable all suppressible
401 warnings. See \k{opt-w}.
402
H. Peter Anvin04156cd2008-07-14 02:45:57 -0400403
404\H{cl-0.98.xx} NASM 0.98 Series
405
406The 0.98 series was the production versions of NASM from 1999 to 2007.
407
408
409\S{cl-0.98.39} Version 0.98.39
410
411\b fix buffer overflow
412
413\b fix outas86's \c{.bss} handling
414
415\b "make spotless" no longer deletes config.h.in.
416
417\b \c{%(el)if(n)idn} insensitivity to string quotes difference (#809300).
418
419\b (nasm.c)\c{__OUTPUT_FORMAT__} changed to string value instead of symbol.
420
421\S{cl-0.98.38} Version 0.98.38
422
423
424\b Add Makefile for 16-bit DOS binaries under OpenWatcom, and modify
425 \c{mkdep.pl} to be able to generate completely pathless dependencies, as
426 required by OpenWatcom wmake (it supports path searches, but not
427 explicit paths.)
428
429\b Fix the \c{STR} instruction.
430
431\b Fix the ELF output format, which was broken under certain
432 circumstances due to the addition of stabs support.
433
434\b Quick-fix Borland format debug-info for \c{-f obj}
435
436\b Fix for \c{%rep} with no arguments (#560568)
437
438\b Fix concatenation of preprocessor function call (#794686)
439
440\b Fix long label causes coredump (#677841)
441
442\b Use autoheader as well as autoconf to keep configure from generating
443 ridiculously long command lines.
444
445\b Make sure that all of the formats which support debugging output
446 actually will suppress debugging output when \c{-g} not specified.
447
448\S{cl-0.98.37} Version 0.98.37
449
450
451\b Paths given in \c{-I} switch searched for \c{incbin}-ed as
452 well as \c{%include}-ed files.
453
454\b Added stabs debugging for the ELF output format, patch from
455 Martin Wawro.
456
457\b Fix \c{output/outbin.c} to allow origin > 80000000h.
458
459\b Make \c{-U} switch work.
460
461\b Fix the use of relative offsets with explicit prefixes, e.g.
462\c{a32 loop foo}.
463
464\b Remove \c{backslash()}.
465
466\b Fix the \c{SMSW} and \c{SLDT} instructions.
467
468\b \c{-O2} and \c{-O3} are no longer aliases for \c{-O10} and \c{-O15}.
469If you mean the latter, please say so! :)
470
471\S{cl-0.98.36} Version 0.98.36
472
473
474\b Update rdoff - librarian/archiver - common rec - docs!
475
476\b Fix signed/unsigned problems.
477
478\b Fix \c{JMP FAR label} and \c{CALL FAR label}.
479
480\b Add new multisection support - map files - fix align bug
481
482\b Fix sysexit, movhps/movlps reg,reg bugs in insns.dat
483
484\b \c{Q} or \c{O} suffixes indicate octal
485
486\b Support Prescott new instructions (PNI).
487
488\b Cyrix \c{XSTORE} instruction.
489
490
491\S{cl-0.98.35} Version 0.98.35
492
493\b Fix build failure on 16-bit DOS (Makefile.bc3 workaround for compiler bug.)
494
495\b Fix dependencies and compiler warnings.
496
497\b Add "const" in a number of places.
498
499\b Add -X option to specify error reporting format (use -Xvc to
500 integrate with Microsoft Visual Studio.)
501
502\b Minor changes for code legibility.
503
504\b Drop use of tmpnam() in rdoff (security fix.)
505
506
507\S{cl-0.98.34} Version 0.98.34
508
509\b Correct additional address-size vs. operand-size confusions.
510
511\b Generate dependencies for all Makefiles automatically.
512
513\b Add support for unimplemented (but theoretically available)
514 registers such as tr0 and cr5. Segment registers 6 and 7 are called
515 segr6 and segr7 for the operations which they can be represented.
516
517\b Correct some disassembler bugs related to redundant address-size prefixes.
518 Some work still remains in this area.
519
520\b Correctly generate an error for things like "SEG eax".
521
522\b Add the JMPE instruction, enabled by "CPU IA64".
523
524\b Correct compilation on newer gcc/glibc platforms.
525
526\b Issue an error on things like "jmp far eax".
527
528
529\S{cl-0.98.33} Version 0.98.33
530
531\b New __NASM_PATCHLEVEL__ and __NASM_VERSION_ID__ standard macros to
532 round out the version-query macros. version.pl now understands
533 X.YYplWW or X.YY.ZZplWW as a version number, equivalent to
534 X.YY.ZZ.WW (or X.YY.0.WW, as appropriate).
535
536\b New keyword "strict" to disable the optimization of specific
537 operands.
538
539\b Fix the handing of size overrides with JMP instructions
540 (instructions such as "jmp dword foo".)
541
542\b Fix the handling of "ABSOLUTE label", where "label" points into a
543 relocatable segment.
544
545\b Fix OBJ output format with lots of externs.
546
547\b More documentation updates.
548
549\b Add -Ov option to get verbose information about optimizations.
550
H. Peter Anvin5506e1f2008-07-14 02:54:00 -0400551\b Undo a braindead change which broke \c{%elif} directives.
H. Peter Anvin04156cd2008-07-14 02:45:57 -0400552
553\b Makefile updates.
554
555
556\S{cl-0.98.32} Version 0.98.32
557
H. Peter Anvin5506e1f2008-07-14 02:54:00 -0400558\b Fix NASM crashing when \c{%macro} directives were left unterminated.
H. Peter Anvin04156cd2008-07-14 02:45:57 -0400559
560\b Lots of documentation updates.
561
562\b Complete rewrite of the PostScript/PDF documentation generator.
563
564\b The MS Visual C++ Makefile was updated and corrected.
565
566\b Recognize .rodata as a standard section name in ELF.
567
568\b Fix some obsolete Perl4-isms in Perl scripts.
569
570\b Fix configure.in to work with autoconf 2.5x.
571
572\b Fix a couple of "make cleaner" misses.
573
574\b Make the normal "./configure && make" work with Cygwin.
575
576
577\S{cl-0.98.31} Version 0.98.31
578
579\b Correctly build in a separate object directory again.
580
581\b Derive all references to the version number from the version file.
582
583\b New standard macros __NASM_SUBMINOR__ and __NASM_VER__ macros.
584
585\b Lots of Makefile updates and bug fixes.
586
H. Peter Anvin5506e1f2008-07-14 02:54:00 -0400587\b New \c{%ifmacro} directive to test for multiline macros.
H. Peter Anvin04156cd2008-07-14 02:45:57 -0400588
589\b Documentation updates.
590
591\b Fixes for 16-bit OBJ format output.
592
593\b Changed the NASM environment variable to NASMENV.
594
595
596\S{cl-0.98.30} Version 0.98.30
597
598\b Changed doc files a lot: completely removed old READMExx and
599 Wishlist files, incorporating all information in CHANGES and TODO.
600
601\b I waited a long time to rename zoutieee.c to (original) outieee.c
602
603\b moved all output modules to output/ subdirectory.
604
605\b Added 'make strip' target to strip debug info from nasm & ndisasm.
606
607\b Added INSTALL file with installation instructions.
608
609\b Added -v option description to nasm man.
610
611\b Added dist makefile target to produce source distributions.
612
613\b 16-bit support for ELF output format (GNU extension, but useful.)
614
615
616\S{cl-0.98.28} Version 0.98.28
617
618\b Fastcooked this for Debian's Woody release:
619Frank applied the INCBIN bug patch to 0.98.25alt and called
620it 0.98.28 to not confuse poor little apt-get.
621
622
623\S{cl-0.98.26} Version 0.98.26
624
625\b Reorganised files even better from 0.98.25alt
626
627
628\S{cl-0.98.25alt} Version 0.98.25alt
629
630\b Prettified the source tree. Moved files to more reasonable places.
631
632\b Added findleak.pl script to misc/ directory.
633
634\b Attempted to fix doc.
635
636
637\S{cl-0.98.25} Version 0.98.25
638
639\b Line continuation character \c{\\}.
640
641\b Docs inadvertantly reverted - "dos packaging".
642
643
644\S{cl-0.98.24p1} Version 0.98.24p1
645
646\b FIXME: Someone, document this please.
647
648
649\S{cl-0.98.24} Version 0.98.24
650
651\b Documentation - Ndisasm doc added to Nasm.doc.
652
653
654\S{cl-0.98.23} Version 0.98.23
655
656\b Attempted to remove rdoff version1
657
658\b Lino Mastrodomenico's patches to preproc.c (%$$ bug?).
659
660
661\S{cl-0.98.22} Version 0.98.22
662
663\b Update rdoff2 - attempt to remove v1.
664
665
666\S{cl-0.98.21} Version 0.98.21
667
668\b Optimization fixes.
669
670
671\S{cl-0.98.20} Version 0.98.20
672
673\b Optimization fixes.
674
675
676\S{cl-0.98.19} Version 0.98.19
677
678\b H. J. Lu's patch back out.
679
680
681\S{cl-0.98.18} Version 0.98.18
682
683\b Added ".rdata" to "-f win32".
684
685
686\S{cl-0.98.17} Version 0.98.17
687
688\b H. J. Lu's "bogus elf" patch. (Red Hat problem?)
689
690
691\S{cl-0.98.16} Version 0.98.16
692
693\b Fix whitespace before "[section ..." bug.
694
695
696\S{cl-0.98.15} Version 0.98.15
697
698\b Rdoff changes (?).
699
700\b Fix fixes to memory leaks.
701
702
703\S{cl-0.98.14} Version 0.98.14
704
705\b Fix memory leaks.
706
707
708\S{cl-0.98.13} Version 0.98.13
709
710\b There was no 0.98.13
711
712
713\S{cl-0.98.12} Version 0.98.12
714
715\b Update optimization (new function of "-O1")
716
717\b Changes to test/bintest.asm (?).
718
719
720\S{cl-0.98.11} Version 0.98.11
721
722\b Optimization changes.
723
724\b Ndisasm fixed.
725
726
727\S{cl-0.98.10} Version 0.98.10
728
729\b There was no 0.98.10
730
731
732\S{cl-0.98.09} Version 0.98.09
733
734\b Add multiple sections support to "-f bin".
735
736\b Changed GLOBAL_TEMP_BASE in outelf.c from 6 to 15.
737
738\b Add "-v" as an alias to the "-r" switch.
739
740\b Remove "#ifdef" from Tasm compatibility options.
741
742\b Remove redundant size-overrides on "mov ds, ex", etc.
743
744\b Fixes to SSE2, other insns.dat (?).
745
746\b Enable uppercase "I" and "P" switches.
747
748\b Case insinsitive "seg" and "wrt".
749
750\b Update install.sh (?).
751
752\b Allocate tokens in blocks.
753
754\b Improve "invalid effective address" messages.
755
756
757\S{cl-0.98.08} Version 0.98.08
758
H. Peter Anvin5506e1f2008-07-14 02:54:00 -0400759\b Add "\c{%strlen}" and "\c{%substr}" macro operators
H. Peter Anvin04156cd2008-07-14 02:45:57 -0400760
761\b Fixed broken c16.mac.
762
763\b Unterminated string error reported.
764
765\b Fixed bugs as per 0.98bf
766
767
768\S{cl-0.98.09b with John Coffman patches released 28-Oct-2001} Version 0.98.09b with John Coffman patches released 28-Oct-2001
769
770Changes from 0.98.07 release to 98.09b as of 28-Oct-2001
771
772\b More closely compatible with 0.98 when -O0 is implied
773or specified. Not strictly identical, since backward
774branches in range of short offsets are recognized, and signed
775byte values with no explicit size specification will be
776assembled as a single byte.
777
778\b More forgiving with the PUSH instruction. 0.98 requires
779a size to be specified always. 0.98.09b will imply the size
780from the current BITS setting (16 or 32).
781
782\b Changed definition of the optimization flag:
783
784 -O0 strict two-pass assembly, JMP and Jcc are
785 handled more like 0.98, except that back-
786 ward JMPs are short, if possible.
787
788 -O1 strict two-pass assembly, but forward
789 branches are assembled with code guaranteed
790 to reach; may produce larger code than
791 -O0, but will produce successful assembly
792 more often if branch offset sizes are not
793 specified.
794
795 -O2 multi-pass optimization, minimize branch
796 offsets; also will minimize signed immed-
797 iate bytes, overriding size specification.
798
799 -O3 like -O2, but more passes taken, if needed
800
801
802\S{cl-0.98.07 released 01/28/01} Version 0.98.07 released 01/28/01
803
804\b Added Stepane Denis' SSE2 instructions to a *working*
805 version of the code - some earlier versions were based on
806 broken code - sorry 'bout that. version "0.98.07"
807
808
80901/28/01
810
811
812\b Cosmetic modifications to nasm.c, nasm.h,
813 AUTHORS, MODIFIED
814
815
816\S{cl-0.98.06f released 01/18/01} Version 0.98.06f released 01/18/01
817
818
819\b - Add "metalbrain"s jecxz bug fix in insns.dat
820 - alter nasmdoc.src to match - version "0.98.06f"
821
822
823\S{cl-0.98.06e released 01/09/01} Version 0.98.06e released 01/09/01
824
825
826\b Removed the "outforms.h" file - it appears to be
827 someone's old backup of "outform.h". version "0.98.06e"
828
82901/09/01
830
831\b fbk - finally added the fix for the "multiple %includes bug",
832 known since 7/27/99 - reported originally (?) and sent to
833 us by Austin Lunnen - he reports that John Fine had a fix
834 within the day. Here it is...
835
836\b Nelson Rush resigns from the group. Big thanks to Nelson for
837 his leadership and enthusiasm in getting these changes
838 incorporated into Nasm!
839
840\b fbk - [list +], [list -] directives - ineptly implemented, should
841 be re-written or removed, perhaps.
842
843\b Brian Raiter / fbk - "elfso bug" fix - applied to aoutb format
844 as well - testing might be desirable...
845
84608/07/00
847
848\b James Seter - -postfix, -prefix command line switches.
849
850\b Yuri Zaporogets - rdoff utility changes.
851
852
853\S{cl-0.98p1} Version 0.98p1
854
855\b GAS-like palign (Panos Minos)
856
857\b FIXME: Someone, fill this in with details
858
859
860\S{cl-0.98bf (bug-fixed)} Version 0.98bf (bug-fixed)
861
862\b Fixed - elf and aoutb bug - shared libraries
863 - multiple "%include" bug in "-f obj"
864 - jcxz, jecxz bug
865 - unrecognized option bug in ndisasm
866
867\S{cl-0.98.03 with John Coffman's changes released 27-Jul-2000} Version 0.98.03 with John Coffman's changes released 27-Jul-2000
868
869\b Added signed byte optimizations for the 0x81/0x83 class
870of instructions: ADC, ADD, AND, CMP, OR, SBB, SUB, XOR:
871when used as 'ADD reg16,imm' or 'ADD reg32,imm.' Also
872optimization of signed byte form of 'PUSH imm' and 'IMUL
873reg,imm'/'IMUL reg,reg,imm.' No size specification is needed.
874
875\b Added multi-pass JMP and Jcc offset optimization. Offsets
876on forward references will preferentially use the short form,
877without the need to code a specific size (short or near) for
878the branch. Added instructions for 'Jcc label' to use the
879form 'Jnotcc $+3/JMP label', in cases where a short offset
880is out of bounds. If compiling for a 386 or higher CPU, then
881the 386 form of Jcc will be used instead.
882
883This feature is controlled by a new command-line switch: "O",
884(upper case letter O). "-O0" reverts the assembler to no
885extra optimization passes, "-O1" allows up to 5 extra passes,
886and "-O2"(default), allows up to 10 extra optimization passes.
887
888\b Added a new directive: 'cpu XXX', where XXX is any of:
8898086, 186, 286, 386, 486, 586, pentium, 686, PPro, P2, P3 or
890Katmai. All are case insensitive. All instructions will
891be selected only if they apply to the selected cpu or lower.
892Corrected a couple of bugs in cpu-dependence in 'insns.dat'.
893
894\b Added to 'standard.mac', the "use16" and "use32" forms of
895the "bits 16/32" directive. This is nothing new, just conforms
896to a lot of other assemblers. (minor)
897
898\b Changed label allocation from 320/32 (10000 labels @ 200K+)
899to 32/37 (1000 labels); makes running under DOS much easier.
900Since additional label space is allocated dynamically, this
901should have no effect on large programs with lots of labels.
902The 37 is a prime, believed to be better for hashing. (minor)
903
904
905\S{cl-0.98.03} Version 0.98.03
906
907"Integrated patchfile 0.98-0.98.01. I call this version 0.98.03 for
908historical reasons: 0.98.02 was trashed." --John Coffman
909<johninsd@san.rr.com>, 27-Jul-2000
910
911\b Kendall Bennett's SciTech MGL changes
912
913\b Note that you must define "TASM_COMPAT" at compile-time
914to get the Tasm Ideal Mode compatibility.
915
916\b All changes can be compiled in and out using the TASM_COMPAT macros,
917and when compiled without TASM_COMPAT defined we get the exact same
918binary as the unmodified 0.98 sources.
919
920\b standard.mac, macros.c: Added macros to ignore TASM directives before
921first include
922
923\b nasm.h: Added extern declaration for tasm_compatible_mode
924
925\b nasm.c: Added global variable tasm_compatible_mode
926
927\b Added command line switch for TASM compatible mode (-t)
928
929\b Changed version command line to reflect when compiled with TASM additions
930
931\b Added response file processing to allow all arguments on a single
932line (response file is @resp rather than -@resp for NASM format).
933
934\b labels.c: Changes islocal() macro to support TASM style @@local labels.
935
936\b Added islocalchar() macro to support TASM style @@local labels.
937
938\b parser.c: Added support for TASM style memory references (ie: mov
939[DWORD eax],10 rather than the NASM style mov DWORD [eax],10).
940
H. Peter Anvin5506e1f2008-07-14 02:54:00 -0400941\b preproc.c: Added new directives, \c{%arg}, \c{%local}, \c{%stacksize} to directives
H. Peter Anvin04156cd2008-07-14 02:45:57 -0400942table
943
944\b Added support for TASM style directives without a leading % symbol.
945
946\b Integrated a block of changes from Andrew Zabolotny <bit@eltech.ru>:
947
H. Peter Anvin5506e1f2008-07-14 02:54:00 -0400948\b A new keyword \c{%xdefine} and its case-insensitive counterpart \c{%ixdefine}.
949They work almost the same way as \c{%define} and \c{%idefine} but expand
H. Peter Anvin04156cd2008-07-14 02:45:57 -0400950the definition immediately, not on the invocation. Something like a cross
H. Peter Anvin5506e1f2008-07-14 02:54:00 -0400951between \c{%define} and \c{%assign}. The "x" suffix stands for "eXpand", so
H. Peter Anvin04156cd2008-07-14 02:45:57 -0400952"xdefine" can be deciphered as "expand-and-define". Thus you can do
953things like this:
954
955\c %assign ofs 0
956\c
957\c %macro arg 1
958\c %xdefine %1 dword [esp+ofs]
959\c %assign ofs ofs+4
960\c %endmacro
961
962\b Changed the place where the expansion of %$name macros are expanded.
963Now they are converted into ..@ctxnum.name form when detokenizing, so
964there are no quirks as before when using %$name arguments to macros,
965in macros etc. For example:
966
967\c %macro abc 1
968\c %define %1 hello
969\c %endm
970\c
971\c abc %$here
972\c %$here
973
974 Now last line will be expanded into "hello" as expected. This also allows
975 for lots of goodies, a good example are extended "proc" macros included
976 in this archive.
977
978\b Added a check for "cstk" in smacro_defined() before calling get_ctx() -
979 this allows for things like:
980
981\c %ifdef %$abc
982\c %endif
983
984 to work without warnings even in no context.
985
986\b Added a check for "cstk" in %if*ctx and %elif*ctx directives -
H. Peter Anvin5506e1f2008-07-14 02:54:00 -0400987 this allows to use \c{%ifctx} without excessive warnings. If there is
988 no active context, \c{%ifctx} goes through "false" branch.
H. Peter Anvin04156cd2008-07-14 02:45:57 -0400989
H. Peter Anvin5506e1f2008-07-14 02:54:00 -0400990\b Removed "user error: " prefix with \c{%error} directive: it just clobbers the
H. Peter Anvin04156cd2008-07-14 02:45:57 -0400991 output and has absolutely no functionality. Besides, this allows to write
992 macros that does not differ from built-in functions in any way.
993
H. Peter Anvin5506e1f2008-07-14 02:54:00 -0400994\b Added expansion of string that is output by \c{%error} directive. Now you
H. Peter Anvin04156cd2008-07-14 02:45:57 -0400995 can do things like:
996
997\c %define hello(x) Hello, x!
998\c
999\c %define %$name andy
1000\c %error "hello(%$name)"
1001
H. Peter Anvin5506e1f2008-07-14 02:54:00 -04001002 Same happened with \c{%include} directive.
H. Peter Anvin04156cd2008-07-14 02:45:57 -04001003
1004\b Now all directives that expect an identifier will try to expand and
1005 concatenate everything without whitespaces in between before usage.
1006 For example, with "unfixed" nasm the commands
1007
1008\c %define %$abc hello
1009\c %define __%$abc goodbye
1010\c __%$abc
1011
1012 would produce "incorrect" output: last line will expand to
1013
1014\c hello goodbyehello
1015
1016 Not quite what you expected, eh? :-) The answer is that preprocessor
H. Peter Anvin5506e1f2008-07-14 02:54:00 -04001017 treats the \c{%define} construct as if it would be
H. Peter Anvin04156cd2008-07-14 02:45:57 -04001018
1019\c %define __ %$abc goodbye
1020
1021 (note the white space between __ and %$abc). After my "fix" it
1022 will "correctly" expand into
1023
1024\c goodbye
1025
1026 as expected. Note that I use quotes around words "correct", "incorrect"
1027 etc because this is rather a feature not a bug; however current behaviour
1028 is more logical (and allows more advanced macro usage :-).
1029
1030 Same change was applied to:
H. Peter Anvin5506e1f2008-07-14 02:54:00 -04001031 \c{%push},\c{%macro},\c{%imacro},\c{%define},\c{%idefine},\c{%xdefine},\c{%ixdefine},
1032 \c{%assign},\c{%iassign},\c{%undef}
H. Peter Anvin04156cd2008-07-14 02:45:57 -04001033
1034\b A new directive [WARNING {+|-}warning-id] have been added. It works only
1035 if the assembly phase is enabled (i.e. it doesn't work with nasm -e).
1036
1037\b A new warning type: macro-selfref. By default this warning is disabled;
1038 when enabled NASM warns when a macro self-references itself; for example
1039 the following source:
1040
1041\c [WARNING macro-selfref]
1042\c
1043\c %macro push 1-*
1044\c %rep %0
1045\c push %1
1046\c %rotate 1
1047\c %endrep
1048\c %endmacro
1049\c
1050\c push eax,ebx,ecx
1051
1052 will produce a warning, but if we remove the first line we won't see it
1053 anymore (which is The Right Thing To Do {tm} IMHO since C preprocessor
1054 eats such constructs without warnings at all).
1055
1056\b Added a "error" routine to preprocessor which always will set ERR_PASS1
1057 bit in severity_code. This removes annoying repeated errors on first
1058 and second passes from preprocessor.
1059
1060\b Added the %+ operator in single-line macros for concatenating two
1061 identifiers. Usage example:
1062
1063\c %define _myfunc _otherfunc
1064\c %define cextern(x) _ %+ x
1065\c cextern (myfunc)
1066
1067 After first expansion, third line will become "_myfunc". After this
1068 expansion is performed again so it becomes "_otherunc".
1069
1070\b Now if preprocessor is in a non-emitting state, no warning or error
1071 will be emitted. Example:
1072
1073\c %if 1
1074\c mov eax,ebx
1075\c %else
1076\c put anything you want between these two brackets,
1077\c even macro-parameter references %1 or local
1078\c labels %$zz or macro-local labels %%zz - no
1079\c warning will be emitted.
1080\c %endif
1081
1082\b Context-local variables on expansion as a last resort are looked up
1083 in outer contexts. For example, the following piece:
1084
1085\c %push outer
1086\c %define %$a [esp]
1087\c
1088\c %push inner
1089\c %$a
1090\c %pop
1091\c %pop
1092
1093 will expand correctly the fourth line to [esp]; if we'll define another
1094 %$a inside the "inner" context, it will take precedence over outer
1095 definition. However, this modification has been applied only to
1096 expand_smacro and not to smacro_define: as a consequence expansion
H. Peter Anvin5506e1f2008-07-14 02:54:00 -04001097 looks in outer contexts, but \c{%ifdef} won't look in outer contexts.
H. Peter Anvin04156cd2008-07-14 02:45:57 -04001098
1099 This behaviour is needed because we don't want nested contexts to
1100 act on already defined local macros. Example:
1101
1102\c %define %$arg1 [esp+4]
1103\c test eax,eax
1104\c if nz
1105\c mov eax,%$arg1
1106\c endif
1107
1108 In this example the "if" mmacro enters into the "if" context, so %$arg1
1109 is not valid anymore inside "if". Of course it could be worked around
1110 by using explicitely %$$arg1 but this is ugly IMHO.
1111
H. Peter Anvin5506e1f2008-07-14 02:54:00 -04001112\b Fixed memory leak in \c{%undef}. The origline wasn't freed before
H. Peter Anvin04156cd2008-07-14 02:45:57 -04001113 exiting on success.
1114
1115\b Fixed trap in preprocessor when line expanded to empty set of tokens.
1116 This happens, for example, in the following case:
1117
1118\c #define SOMETHING
1119\c SOMETHING
1120
1121
1122\S{cl-0.98} Version 0.98
1123
1124All changes since NASM 0.98p3 have been produced by H. Peter Anvin <hpa@zytor.com>.
1125
1126\b The documentation comment delimiter is \# not #.
1127
1128\b Allow EQU definitions to refer to external labels; reported by
1129 Pedro Gimeno.
1130
1131\b Re-enable support for RDOFF v1; reported by Pedro Gimeno.
1132
1133\b Updated License file per OK from Simon and Julian.
1134
1135
1136\S{cl-0.98p9} Version 0.98p9
1137
1138\b Update documentation (although the instruction set reference will
1139 have to wait; I don't want to hold up the 0.98 release for it.)
1140
1141\b Verified that the NASM implementation of the PEXTRW and PMOVMSKB
1142 instructions is correct. The encoding differs from what the Intel
1143 manuals document, but the Pentium III behaviour matches NASM, not
1144 the Intel manuals.
1145
1146\b Fix handling of implicit sizes in PSHUFW and PINSRW, reported by
1147 Stefan Hoffmeister.
1148
1149\b Resurrect the -s option, which was removed when changing the
1150 diagnostic output to stdout.
1151
1152
1153\S{cl-0.98p8} Version 0.98p8
1154
1155\b Fix for "DB" when NASM is running on a bigendian machine.
1156
1157\b Invoke insns.pl once for each output script, making Makefile.in
1158 legal for "make -j".
1159
1160\b Improve the Unix configure-based makefiles to make package
1161 creation easier.
1162
1163\b Included an RPM .spec file for building RPM (RedHat Package Manager)
1164 packages on Linux or Unix systems.
1165
1166\b Fix Makefile dependency problems.
1167
1168\b Change src/rdsrc.pl to include sectioning information in info
1169 output; required for install-info to work.
1170
1171\b Updated the RDOFF distribution to version 2 from Jules; minor
1172 massaging to make it compile in my environment.
1173
1174\b Split doc files that can be built by anyone with a Perl interpreter off
1175 into a separate archive.
1176
1177\b "Dress rehearsal" release!
1178
1179
1180\S{cl-0.98p7} Version 0.98p7
1181
1182\b Fixed opcodes with a third byte-sized immediate argument to not
1183 complain if given "byte" on the immediate.
1184
H. Peter Anvin5506e1f2008-07-14 02:54:00 -04001185\b Allow \c{%undef} to remove single-line macros with arguments. This
H. Peter Anvin04156cd2008-07-14 02:45:57 -04001186 matches the behaviour of #undef in the C preprocessor.
1187
1188\b Allow -d, -u, -i and -p to be specified as -D, -U, -I and -P for
1189 compatibility with most C compilers and preprocessors. This allows
1190 Makefile options to be shared between cc and nasm, for example.
1191
1192\b Minor cleanups.
1193
1194\b Went through the list of Katmai instructions and hopefully fixed the
1195 (rather few) mistakes in it.
1196
1197\b (Hopefully) fixed a number of disassembler bugs related to ambiguous
1198 instructions (disambiguated by -p) and SSE instructions with REP.
1199
1200\b Fix for bug reported by Mark Junger: "call dword 0x12345678" should
1201 work and may add an OSP (affected CALL, JMP, Jcc).
1202
1203\b Fix for environments when "stderr" isn't a compile-time constant.
1204
1205
1206\S{cl-0.98p6} Version 0.98p6
1207
1208
1209\b Took officially over coordination of the 0.98 release; so drop
1210 the p3.x notation. Skipped p4 and p5 to avoid confusion with John
1211 Fine's J4 and J5 releases.
1212
1213\b Update the documentation; however, it still doesn't include
1214 documentation for the various new instructions. I somehow wonder if
1215 it makes sense to have an instruction set reference in the assembler
1216 manual when Intel et al have PDF versions of their manuals online.
1217
1218\b Recognize "idt" or "centaur" for the -p option to ndisasm.
1219
1220\b Changed error messages back to stderr where they belong, but add an
1221 -E option to redirect them elsewhere (the DOS shell cannot redirect
1222 stderr.)
1223
1224\b -M option to generate Makefile dependencies (based on code from Alex
1225 Verstak.)
1226
H. Peter Anvin5506e1f2008-07-14 02:54:00 -04001227\b \c{%undef} preprocessor directive, and -u option, that undefines a
H. Peter Anvin04156cd2008-07-14 02:45:57 -04001228 single-line macro.
1229
1230\b OS/2 Makefile (Mkfiles/Makefile.os2) for Borland under OS/2; from
1231 Chuck Crayne.
1232
1233\b Various minor bugfixes (reported by):
H. Peter Anvin5506e1f2008-07-14 02:54:00 -04001234 - Dangling \c{%s} in preproc.c (Martin Junker)
H. Peter Anvin04156cd2008-07-14 02:45:57 -04001235
1236\b THERE ARE KNOWN BUGS IN SSE AND THE OTHER KATMAI INSTRUCTIONS. I am
1237 on a trip and didn't bring the Katmai instruction reference, so I
1238 can't work on them right now.
1239
1240\b Updated the License file per agreement with Simon and Jules to
1241 include a GPL distribution clause.
1242
1243
1244\S{cl-0.98p3.7} Version 0.98p3.7
1245
1246\b (Hopefully) fixed the canned Makefiles to include the outrdf2 and
1247 zoutieee modules.
1248
1249\b Renamed changes.asm to changed.asm.
1250
1251
1252\S{cl-0.98p3.6} Version 0.98p3.6
1253
1254\b Fixed a bunch of instructions that were added in 0.98p3.5 which had
1255 memory operands, and the address-size prefix was missing from the
1256 instruction pattern.
1257
1258
1259\S{cl-0.98p3.5} Version 0.98p3.5
1260
1261\b Merged in changes from John S. Fine's 0.98-J5 release. John's based
1262 0.98-J5 on my 0.98p3.3 release; this merges the changes.
1263
1264\b Expanded the instructions flag field to a long so we can fit more
1265 flags; mark SSE (KNI) and AMD or Katmai-specific instructions as
1266 such.
1267
1268\b Fix the "PRIV" flag on a bunch of instructions, and create new
1269 "PROT" flag for protected-mode-only instructions (orthogonal to if
1270 the instruction is privileged!) and new "SMM" flag for SMM-only
1271 instructions.
1272
1273\b Added AMD-only SYSCALL and SYSRET instructions.
1274
1275\b Make SSE actually work, and add new Katmai MMX instructions.
1276
1277\b Added a -p (preferred vendor) option to ndisasm so that it can
1278 distinguish e.g. Cyrix opcodes also used in SSE. For example:
1279
1280\c ndisasm -p cyrix aliased.bin
1281\c 00000000 670F514310 paddsiw mm0,[ebx+0x10]
1282\c 00000005 670F514320 paddsiw mm0,[ebx+0x20]
1283\c ndisasm -p intel aliased.bin
1284\c 00000000 670F514310 sqrtps xmm0,[ebx+0x10]
1285\c 00000005 670F514320 sqrtps xmm0,[ebx+0x20]
1286
1287\b Added a bunch of Cyrix-specific instructions.
1288
1289
1290\S{cl-0.98p3.4} Version 0.98p3.4
1291
1292\b Made at least an attempt to modify all the additional Makefiles (in
1293 the Mkfiles directory). I can't test it, but this was the best I
1294 could do.
1295
1296\b DOS DJGPP+"Opus Make" Makefile from John S. Fine.
1297
1298\b changes.asm changes from John S. Fine.
1299
1300
1301\S{cl-0.98p3.3} Version 0.98p3.3
1302
H. Peter Anvin5506e1f2008-07-14 02:54:00 -04001303\b Patch from Conan Brink to allow nesting of \c{%rep} directives.
H. Peter Anvin04156cd2008-07-14 02:45:57 -04001304
1305\b If we're going to allow INT01 as an alias for INT1/ICEBP (one of
1306 Jules 0.98p3 changes), then we should allow INT03 as an alias for INT3
1307 as well.
1308
1309\b Updated changes.asm to include the latest changes.
1310
1311\b Tried to clean up the <CR>s that had snuck in from a DOS/Windows
1312 environment into my Unix environment, and try to make sure than
1313 DOS/Windows users get them back.
1314
1315\b We would silently generate broken tools if insns.dat wasn't sorted
1316 properly. Change insns.pl so that the order doesn't matter.
1317
1318\b Fix bug in insns.pl (introduced by me) which would cause conditional
1319 instructions to have an extra "cc" in disassembly, e.g. "jnz"
1320 disassembled as "jccnz".
1321
1322
1323\S{cl-0.98p3.2} Version 0.98p3.2
1324
1325\b Merged in John S. Fine's changes from his 0.98-J4 prerelease; see
1326 http://www.csoft.net/cz/johnfine/
1327
1328\b Changed previous "spotless" Makefile target (appropriate for distribution)
1329 to "distclean", and added "cleaner" target which is same as "clean"
1330 except deletes files generated by Perl scripts; "spotless" is union.
1331
1332\b Removed BASIC programs from distribution. Get a Perl interpreter
1333 instead (see below.)
1334
1335\b Calling this "pre-release 3.2" rather than "p3-hpa2" because of
1336 John's contributions.
1337
1338\b Actually link in the IEEE output format (zoutieee.c); fix a bunch of
1339 compiler warnings in that file. Note I don't know what IEEE output
1340 is supposed to look like, so these changes were made "blind".
1341
1342
1343\S{cl-0.98p3-hpa} Version 0.98p3-hpa
1344
1345\b Merged nasm098p3.zip with nasm-0.97.tar.gz to create a fully
1346 buildable version for Unix systems (Makefile.in updates, etc.)
1347
1348\b Changed insns.pl to create the instruction tables in nasm.h and
1349 names.c, so that a new instruction can be added by adding it *only*
1350 to insns.dat.
1351
1352\b Added the following new instructions: SYSENTER, SYSEXIT, FXSAVE,
1353 FXRSTOR, UD1, UD2 (the latter two are two opcodes that Intel
1354 guarantee will never be used; one of them is documented as UD2 in
1355 Intel documentation, the other one just as "Undefined Opcode" --
1356 calling it UD1 seemed to make sense.)
1357
1358\b MAX_SYMBOL was defined to be 9, but LOADALL286 and LOADALL386 are 10
1359 characters long. Now MAX_SYMBOL is derived from insns.dat.
1360
1361\b A note on the BASIC programs included: forget them. insns.bas is
1362 already out of date. Get yourself a Perl interpreter for your
1363 platform of choice at
1364 \W{http://www.cpan.org/ports/index.html}{http://www.cpan.org/ports/index.html}.
1365
1366
1367\S{cl-0.98p3} Version 0.98 pre-release 3
1368
1369\b added response file support, improved command line handling, new layout
1370help screen
1371
1372\b fixed limit checking bug, 'OUT byte nn, reg' bug, and a couple of rdoff
1373related bugs, updated Wishlist; 0.98 Prerelease 3.
1374
1375
1376\S{cl-0.98p2} Version 0.98 pre-release 2
1377
1378\b fixed bug in outcoff.c to do with truncating section names longer
1379than 8 characters, referencing beyond end of string; 0.98 pre-release 2
1380
1381
1382\S{cl-0.98p1} Version 0.98 pre-release 1
1383
1384\b Fixed a bug whereby STRUC didn't work at all in RDF.
1385
1386\b Fixed a problem with group specification in PUBDEFs in OBJ.
1387
1388\b Improved ease of adding new output formats. Contribution due to
1389Fox Cutter.
1390
1391\b Fixed a bug in relocations in the `bin' format: was showing up when
1392a relocatable reference crossed an 8192-byte boundary in any output
1393section.
1394
1395\b Fixed a bug in local labels: local-label lookups were inconsistent
1396between passes one and two if an EQU occurred between the definition
1397of a global label and the subsequent use of a local label local to
1398that global.
1399
1400\b Fixed a seg-fault in the preprocessor (again) which happened when
1401you use a blank line as the first line of a multi-line macro
1402definition and then defined a label on the same line as a call to
1403that macro.
1404
1405\b Fixed a stale-pointer bug in the handling of the NASM environment
1406variable. Thanks to Thomas McWilliams.
1407
1408\b ELF had a hard limit on the number of sections which caused
1409segfaults when transgressed. Fixed.
1410
1411\b Added ability for ndisasm to read from stdin by using `-' as the
1412filename.
1413
1414\b ndisasm wasn't outputting the TO keyword. Fixed.
1415
H. Peter Anvin5506e1f2008-07-14 02:54:00 -04001416\b Fixed error cascade on bogus expression in \c{%if} - an error in
1417evaluation was causing the entire \c{%if} to be discarded, thus creating
1418trouble later when the \c{%else} or \c{%endif} was encountered.
H. Peter Anvin04156cd2008-07-14 02:45:57 -04001419
1420\b Forward reference tracking was instruction-granular not operand-
1421granular, which was causing 286-specific code to be generated
1422needlessly on code of the form `shr word [forwardref],1'. Thanks to
1423Jim Hague for sending a patch.
1424
1425\b All messages now appear on stdout, as sending them to stderr serves
1426no useful purpose other than to make redirection difficult.
1427
1428\b Fixed the problem with EQUs pointing to an external symbol - this
1429now generates an error message.
1430
1431\b Allowed multiple size prefixes to an operand, of which only the first
1432is taken into account.
1433
1434\b Incorporated John Fine's changes, including fixes of a large number
1435of preprocessor bugs, some small problems in OBJ, and a reworking of
1436label handling to define labels before their line is assembled, rather
1437than after.
1438
1439\b Reformatted a lot of the source code to be more readable. Included
1440'coding.txt' as a guideline for how to format code for contributors.
1441
H. Peter Anvin5506e1f2008-07-14 02:54:00 -04001442\b Stopped nested \c{%reps} causing a panic - they now cause a slightly more
H. Peter Anvin04156cd2008-07-14 02:45:57 -04001443friendly error message instead.
1444
1445\b Fixed floating point constant problems (patch by Pedro Gimeno)
1446
1447\b Fixed the return value of insn_size() not being checked for -1, indicating
1448an error.
1449
1450\b Incorporated 3Dnow! instructions.
1451
1452\b Fixed the 'mov eax, eax + ebx' bug.
1453
1454\b Fixed the GLOBAL EQU bug in ELF. Released developers release 3.
1455
1456\b Incorporated John Fine's command line parsing changes
1457
1458\b Incorporated David Lindauer's OMF debug support
1459
1460\b Made changes for LCC 4.0 support (\c{__NASM_CDecl__}, removed register size
1461specification warning when sizes agree).
1462
1463
1464\H{cl-0.9x} NASM 0.9 Series
1465
1466Revisions before 0.98.
1467
1468
1469\S{cl-0.97} Version 0.97 released December 1997
1470
1471\b This was entirely a bug-fix release to 0.96, which seems to have got
1472cursed. Silly me.
1473
1474\b Fixed stupid mistake in OBJ which caused `MOV EAX,<constant>' to
1475fail. Caused by an error in the `MOV EAX,<segment>' support.
1476
1477\b ndisasm hung at EOF when compiled with lcc on Linux because lcc on
1478Linux somehow breaks feof(). ndisasm now does not rely on feof().
1479
1480\b A heading in the documentation was missing due to a markup error in
1481the indexing. Fixed.
1482
1483\b Fixed failure to update all pointers on realloc() within extended-
1484operand code in parser.c. Was causing wrong behaviour and seg faults
1485on lines such as `dd 0.0,0.0,0.0,0.0,...'
1486
1487\b Fixed a subtle preprocessor bug whereby invoking one multi-line
1488macro on the first line of the expansion of another, when the second
1489had been invoked with a label defined before it, didn't expand the
1490inner macro.
1491
1492\b Added internal.doc back in to the distribution archives - it was
1493missing in 0.96 *blush*
1494
1495\b Fixed bug causing 0.96 to be unable to assemble its own test files,
1496specifically objtest.asm. *blush again*
1497
1498\b Fixed seg-faults and bogus error messages caused by mismatching
H. Peter Anvin5506e1f2008-07-14 02:54:00 -04001499\c{%rep} and \c{%endrep} within multi-line macro definitions.
H. Peter Anvin04156cd2008-07-14 02:45:57 -04001500
1501\b Fixed a problem with buffer overrun in OBJ, which was causing
1502corruption at ends of long PUBDEF records.
1503
1504\b Separated DOS archives into main-program and documentation to reduce
1505download size.
1506
1507
1508\S{cl-0.96} Version 0.96 released November 1997
1509
1510\b Fixed a bug whereby, if `nasm sourcefile' would cause a filename
1511collision warning and put output into `nasm.out', then `nasm
1512sourcefile -o outputfile' still gave the warning even though the
1513`-o' was honoured.
1514Fixed name pollution under Digital UNIX: one of its header files
1515defined R_SP, which broke the enum in nasm.h.
1516
1517\b Fixed minor instruction table problems: FUCOM and FUCOMP didn't have
1518two-operand forms; NDISASM didn't recognise the longer register
1519forms of PUSH and POP (eg FF F3 for PUSH BX); TEST mem,imm32 was
1520flagged as undocumented; the 32-bit forms of CMOV had 16-bit operand
1521size prefixes; `AAD imm' and `AAM imm' are no longer flagged as
1522undocumented because the Intel Architecture reference documents
1523them.
1524
1525\b Fixed a problem with the local-label mechanism, whereby strange
1526types of symbol (EQUs, auto-defined OBJ segment base symbols)
1527interfered with the `previous global label' value and screwed up
1528local labels.
1529
1530\b Fixed a bug whereby the stub preprocessor didn't communicate with
1531the listing file generator, so that the -a and -l options in
1532conjunction would produce a useless listing file.
1533
1534\b Merged `os2' object file format back into `obj', after discovering
1535that `obj' _also_ shouldn't have a link pass separator in a module
1536containing a non-trivial MODEND. Flat segments are now declared
1537using the FLAT attribute. `os2' is no longer a valid object format
1538name: use `obj'.
1539
1540\b Removed the fixed-size temporary storage in the evaluator. Very very
1541long expressions (like `mov ax,1+1+1+1+...' for two hundred 1s or
1542so) should now no longer crash NASM.
1543
1544\b Fixed a bug involving segfaults on disassembly of MMX instructions,
1545by changing the meaning of one of the operand-type flags in nasm.h.
1546This may cause other apparently unrelated MMX problems; it needs to
1547be tested thoroughly.
1548
1549\b Fixed some buffer overrun problems with large OBJ output files.
1550Thanks to DJ Delorie for the bug report and fix.
1551
H. Peter Anvin5506e1f2008-07-14 02:54:00 -04001552\b Made preprocess-only mode actually listen to the \c{%line} markers as it
H. Peter Anvin04156cd2008-07-14 02:45:57 -04001553prints them, so that it can report errors more sanely.
1554
1555\b Re-designed the evaluator to keep more sensible track of expressions
1556involving forward references: can now cope with previously-nightmare
1557situations such as:
1558
1559\c mov ax,foo | bar
1560\c foo equ 1
1561\c bar equ 2
1562
1563\b Added the ALIGN and ALIGNB standard macros.
1564
1565\b Added PIC support in ELF: use of WRT to obtain the four extra
1566relocation types needed.
1567
1568\b Added the ability for output file formats to define their own
1569extensions to the GLOBAL, COMMON and EXTERN directives.
1570
1571\b Implemented common-variable alignment, and global-symbol type and
1572size declarations, in ELF.
1573
1574\b Implemented NEAR and FAR keywords for common variables, plus
1575far-common element size specification, in OBJ.
1576
1577\b Added a feature whereby EXTERNs and COMMONs in OBJ can be given a
1578default WRT specification (either a segment or a group).
1579
1580\b Transformed the Unix NASM archive into an auto-configuring package.
1581
1582\b Added a sanity-check for people applying SEG to things which are
1583already segment bases: this previously went unnoticed by the SEG
1584processing and caused OBJ-driver panics later.
1585
1586\b Added the ability, in OBJ format, to deal with `MOV EAX,<segment>'
1587type references: OBJ doesn't directly support dword-size segment
1588base fixups, but as long as the low two bytes of the constant term
1589are zero, a word-size fixup can be generated instead and it will
1590work.
1591
1592\b Added the ability to specify sections' alignment requirements in
1593Win32 object files and pure binary files.
1594
H. Peter Anvin5506e1f2008-07-14 02:54:00 -04001595\b Added preprocess-time expression evaluation: the \c{%assign} (and
1596\c{%iassign}) directive and the bare \c{%if} (and \c{%elif}) conditional. Added
1597relational operators to the evaluator, for use only in \c{%if}
H. Peter Anvin04156cd2008-07-14 02:45:57 -04001598constructs: the standard relationals = < > <= >= <> (and C-like
1599synonyms == and !=) plus low-precedence logical operators &&, ^^ and
1600||.
1601
H. Peter Anvin5506e1f2008-07-14 02:54:00 -04001602\b Added a preprocessor repeat construct: \c{%rep} / \c{%exitrep} / \c{%endrep}.
H. Peter Anvin04156cd2008-07-14 02:45:57 -04001603
1604\b Added the __FILE__ and __LINE__ standard macros.
1605
1606\b Added a sanity check for number constants being greater than
16070xFFFFFFFF. The warning can be disabled.
1608
1609\b Added the %0 token whereby a variadic multi-line macro can tell how
1610many parameters it's been given in a specific invocation.
1611
1612\b Added \c{%rotate}, allowing multi-line macro parameters to be cycled.
1613
1614\b Added the `*' option for the maximum parameter count on multi-line
1615macros, allowing them to take arbitrarily many parameters.
1616
1617\b Added the ability for the user-level forms of EXTERN, GLOBAL and
1618COMMON to take more than one argument.
1619
1620\b Added the IMPORT and EXPORT directives in OBJ format, to deal with
1621Windows DLLs.
1622
H. Peter Anvin5506e1f2008-07-14 02:54:00 -04001623\b Added some more preprocessor \c{%if} constructs: \c{%ifidn} / \c{%ifidni} (exact
1624textual identity), and \c{%ifid} / \c{%ifnum} / \c{%ifstr} (token type testing).
H. Peter Anvin04156cd2008-07-14 02:45:57 -04001625
1626\b Added the ability to distinguish SHL AX,1 (the 8086 version) from
1627SHL AX,BYTE 1 (the 286-and-upwards version whose constant happens to
1628be 1).
1629
1630\b Added NetBSD/FreeBSD/OpenBSD's variant of a.out format, complete
1631with PIC shared library features.
1632
1633\b Changed NASM's idiosyncratic handling of FCLEX, FDISI, FENI, FINIT,
1634FSAVE, FSTCW, FSTENV, and FSTSW to bring it into line with the
1635otherwise accepted standard. The previous behaviour, though it was a
1636deliberate feature, was a deliberate feature based on a
1637misunderstanding. Apologies for the inconvenience.
1638
1639\b Improved the flexibility of ABSOLUTE: you can now give it an
1640expression rather than being restricted to a constant, and it can
1641take relocatable arguments as well.
1642
1643\b Added the ability for a variable to be declared as EXTERN multiple
1644times, and the subsequent definitions are just ignored.
1645
1646\b We now allow instruction prefixes (CS, DS, LOCK, REPZ etc) to be
1647alone on a line (without a following instruction).
1648
1649\b Improved sanity checks on whether the arguments to EXTERN, GLOBAL
1650and COMMON are valid identifiers.
1651
1652\b Added misc/exebin.mac to allow direct generation of .EXE files by
1653hacking up an EXE header using DB and DW; also added test/binexe.asm
1654to demonstrate the use of this. Thanks to Yann Guidon for
1655contributing the EXE header code.
1656
1657\b ndisasm forgot to check whether the input file had been successfully
1658opened. Now it does. Doh!
1659
1660\b Added the Cyrix extensions to the MMX instruction set.
1661
1662\b Added a hinting mechanism to allow [EAX+EBX] and [EBX+EAX] to be
1663assembled differently. This is important since [ESI+EBP] and
1664[EBP+ESI] have different default base segment registers.
1665
1666\b Added support for the PharLap OMF extension for 4096-byte segment
1667alignment.
1668
1669
1670\S{cl-0.95 released July 1997} Version 0.95 released July 1997
1671
1672\b Fixed yet another ELF bug. This one manifested if the user relied on
1673the default segment, and attempted to define global symbols without
1674first explicitly declaring the target segment.
1675
1676\b Added makefiles (for NASM and the RDF tools) to build Win32 console
1677apps under Symantec C++. Donated by Mark Junker.
1678
1679\b Added `macros.bas' and `insns.bas', QBasic versions of the Perl
1680scripts that convert `standard.mac' to `macros.c' and convert
1681`insns.dat' to `insnsa.c' and `insnsd.c'. Also thanks to Mark
1682Junker.
1683
1684\b Changed the diassembled forms of the conditional instructions so
1685that JB is now emitted as JC, and other similar changes. Suggested
1686list by Ulrich Doewich.
1687
1688\b Added `@' to the list of valid characters to begin an identifier
1689with.
1690
1691\b Documentary changes, notably the addition of the `Common Problems'
1692section in nasm.doc.
1693
1694\b Fixed a bug relating to 32-bit PC-relative fixups in OBJ.
1695
1696\b Fixed a bug in perm_copy() in labels.c which was causing exceptions
1697in cleanup_labels() on some systems.
1698
1699\b Positivity sanity check in TIMES argument changed from a warning to
1700an error following a further complaint.
1701
1702\b Changed the acceptable limits on byte and word operands to allow
1703things like `~10111001b' to work.
1704
1705\b Fixed a major problem in the preprocessor which caused seg-faults if
1706macro definitions contained blank lines or comment-only lines.
1707
1708\b Fixed inadequate error checking on the commas separating the
1709arguments to `db', `dw' etc.
1710
1711\b Fixed a crippling bug in the handling of macros with operand counts
1712defined with a `+' modifier.
1713
1714\b Fixed a bug whereby object file formats which stored the input file
1715name in the output file (such as OBJ and COFF) weren't doing so
1716correctly when the output file name was specified on the command
1717line.
1718
1719\b Removed [INC] and [INCLUDE] support for good, since they were
1720obsolete anyway.
1721
1722\b Fixed a bug in OBJ which caused all fixups to be output in 16-bit
1723(old-format) FIXUPP records, rather than putting the 32-bit ones in
1724FIXUPP32 (new-format) records.
1725
1726\b Added, tentatively, OS/2 object file support (as a minor variant on
1727OBJ).
1728
1729\b Updates to Fox Cutter's Borland C makefile, Makefile.bc2.
1730
1731\b Removed a spurious second fclose() on the output file.
1732
1733\b Added the `-s' command line option to redirect all messages which
1734would go to stderr (errors, help text) to stdout instead.
1735
1736\b Added the `-w' command line option to selectively suppress some
1737classes of assembly warning messages.
1738
1739\b Added the `-p' pre-include and `-d' pre-define command-line options.
1740
1741\b Added an include file search path: the `-i' command line option.
1742
1743\b Fixed a silly little preprocessor bug whereby starting a line with a
1744`%!' environment-variable reference caused an `unknown directive'
1745error.
1746
1747\b Added the long-awaited listing file support: the `-l' command line
1748option.
1749
1750\b Fixed a problem with OBJ format whereby, in the absence of any
1751explicit segment definition, non-global symbols declared in the
1752implicit default segment generated spurious EXTDEF records in the
1753output.
1754
1755\b Added the NASM environment variable.
1756
1757\b From this version forward, Win32 console-mode binaries will be
1758included in the DOS distribution in addition to the 16-bit binaries.
1759Added Makefile.vc for this purpose.
1760
1761\b Added `return 0;' to test/objlink.c to prevent compiler warnings.
1762
1763\b Added the __NASM_MAJOR__ and __NASM_MINOR__ standard defines.
1764
1765\b Added an alternative memory-reference syntax in which prefixing an
1766operand with `&' is equivalent to enclosing it in square brackets,
1767at the request of Fox Cutter.
1768
1769\b Errors in pass two now cause the program to return a non-zero error
1770code, which they didn't before.
1771
1772\b Fixed the single-line macro cycle detection, which didn't work at
1773all on macros with no parameters (caused an infinite loop). Also
1774changed the behaviour of single-line macro cycle detection to work
1775like cpp, so that macros like `extrn' as given in the documentation
1776can be implemented.
1777
1778\b Fixed the implementation of WRT, which was too restrictive in that
1779you couldn't do `mov ax,[di+abc wrt dgroup]' because (di+abc) wasn't
1780a relocatable reference.
1781
1782
1783\S{cl-0.94 released April 1997} Version 0.94 released April 1997
1784
1785
1786\b Major item: added the macro processor.
1787
1788\b Added undocumented instructions SMI, IBTS, XBTS and LOADALL286. Also
1789reorganised CMPXCHG instruction into early-486 and Pentium forms.
1790Thanks to Thobias Jones for the information.
1791
1792\b Fixed two more stupid bugs in ELF, which were causing `ld' to
1793continue to seg-fault in a lot of non-trivial cases.
1794
1795\b Fixed a seg-fault in the label manager.
1796
1797\b Stopped FBLD and FBSTP from _requiring_ the TWORD keyword, which is
1798the only option for BCD loads/stores in any case.
1799
1800\b Ensured FLDCW, FSTCW and FSTSW can cope with the WORD keyword, if
1801anyone bothers to provide it. Previously they complained unless no
1802keyword at all was present.
1803
1804\b Some forms of FDIV/FDIVR and FSUB/FSUBR were still inverted: a
1805vestige of a bug that I thought had been fixed in 0.92. This was
1806fixed, hopefully for good this time...
1807
1808\b Another minor phase error (insofar as a phase error can _ever_ be
1809minor) fixed, this one occurring in code of the form
1810
1811\c rol ax,forward_reference
1812\c forward_reference equ 1
1813
1814\b The number supplied to TIMES is now sanity-checked for positivity,
1815and also may be greater than 64K (which previously didn't work on
181616-bit systems).
1817
1818\b Added Watcom C makefiles, and misc/pmw.bat, donated by Dominik Behr.
1819
1820\b Added the INCBIN pseudo-opcode.
1821
1822\b Due to the advent of the preprocessor, the [INCLUDE] and [INC]
1823directives have become obsolete. They are still supported in this
1824version, with a warning, but won't be in the next.
1825
1826\b Fixed a bug in OBJ format, which caused incorrect object records to
1827be output when absolute labels were made global.
1828
1829\b Updates to RDOFF subdirectory, and changes to outrdf.c.
1830
1831
1832\S{cl-0.93 released January 1997} Version 0.93 released January 1997
1833
1834This release went out in a great hurry after semi-crippling bugs
1835were found in 0.92.
1836
1837\b Really \e{did} fix the stack overflows this time. *blush*
1838
1839\b Had problems with EA instruction sizes changing between passes, when
1840an offset contained a forward reference and so 4 bytes were
1841allocated for the offset in pass one; by pass two the symbol had
1842been defined and happened to be a small absolute value, so only 1
1843byte got allocated, causing instruction size mismatch between passes
1844and hence incorrect address calculations. Fixed.
1845
1846\b Stupid bug in the revised ELF section generation fixed (associated
1847string-table section for .symtab was hard-coded as 7, even when this
1848didn't fit with the real section table). Was causing `ld' to
1849seg-fault under Linux.
1850
1851\b Included a new Borland C makefile, Makefile.bc2, donated by Fox
1852Cutter <lmb@comtch.iea.com>.
1853
1854
1855\S{cl-0.92 released January 1997} Version 0.92 released January 1997
1856
1857\b The FDIVP/FDIVRP and FSUBP/FSUBRP pairs had been inverted: this was
1858fixed. This also affected the LCC driver.
1859
1860\b Fixed a bug regarding 32-bit effective addresses of the form
1861\c{[other_register+ESP]}.
1862
1863\b Documentary changes, notably documentation of the fact that Borland
1864Win32 compilers use `obj' rather than `win32' object format.
1865
1866\b Fixed the COMENT record in OBJ files, which was formatted
1867incorrectly.
1868
1869\b Fixed a bug causing segfaults in large RDF files.
1870
1871\b OBJ format now strips initial periods from segment and group
1872definitions, in order to avoid complications with the local label
1873syntax.
1874
1875\b Fixed a bug in disassembling far calls and jumps in NDISASM.
1876
1877\b Added support for user-defined sections in COFF and ELF files.
1878
1879\b Compiled the DOS binaries with a sensible amount of stack, to
1880prevent stack overflows on any arithmetic expression containing
1881parentheses.
1882
1883\b Fixed a bug in handling of files that do not terminate in a newline.
1884
1885
1886\S{cl-0.91 released November 1996} Version 0.91 released November 1996
1887
1888\b Loads of bug fixes.
1889
1890\b Support for RDF added.
1891
1892\b Support for DBG debugging format added.
1893
1894\b Support for 32-bit extensions to Microsoft OBJ format added.
1895
1896\b Revised for Borland C: some variable names changed, makefile added.
1897
1898\b LCC support revised to actually work.
1899
1900\b JMP/CALL NEAR/FAR notation added.
1901
1902\b `a16', `o16', `a32' and `o32' prefixes added.
1903
1904\b Range checking on short jumps implemented.
1905
1906\b MMX instruction support added.
1907
1908\b Negative floating point constant support added.
1909
1910\b Memory handling improved to bypass 64K barrier under DOS.
1911
1912\b \c{$} prefix to force treatment of reserved words as identifiers added.
1913
1914\b Default-size mechanism for object formats added.
1915
1916\b Compile-time configurability added.
1917
1918\b \c{#}, \c{@}, \c{~} and c\{?} are now valid characters in labels.
1919
1920\b \c{-e} and \c{-k} options in NDISASM added.
1921
1922
1923\S{cl-0.90 released October 1996} Version 0.90 released October 1996
1924
1925First release version. First support for object file output. Other
1926changes from previous version (0.3x) too numerous to document.