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