📄 changes.src
字号:
\b Lots of Makefile updates and bug fixes.
\b New \c{%ifmacro} directive to test for multiline macros.
\b Documentation updates.
\b Fixes for 16-bit OBJ format output.
\b Changed the NASM environment variable to NASMENV.
\S{cl-0.98.30} Version 0.98.30
\b Changed doc files a lot: completely removed old READMExx and
Wishlist files, incorporating all information in CHANGES and TODO.
\b I waited a long time to rename zoutieee.c to (original) outieee.c
\b moved all output modules to output/ subdirectory.
\b Added 'make strip' target to strip debug info from nasm & ndisasm.
\b Added INSTALL file with installation instructions.
\b Added -v option description to nasm man.
\b Added dist makefile target to produce source distributions.
\b 16-bit support for ELF output format (GNU extension, but useful.)
\S{cl-0.98.28} Version 0.98.28
\b Fastcooked this for Debian's Woody release:
Frank applied the INCBIN bug patch to 0.98.25alt and called
it 0.98.28 to not confuse poor little apt-get.
\S{cl-0.98.26} Version 0.98.26
\b Reorganised files even better from 0.98.25alt
\S{cl-0.98.25alt} Version 0.98.25alt
\b Prettified the source tree. Moved files to more reasonable places.
\b Added findleak.pl script to misc/ directory.
\b Attempted to fix doc.
\S{cl-0.98.25} Version 0.98.25
\b Line continuation character \c{\\}.
\b Docs inadvertantly reverted - "dos packaging".
\S{cl-0.98.24p1} Version 0.98.24p1
\b FIXME: Someone, document this please.
\S{cl-0.98.24} Version 0.98.24
\b Documentation - Ndisasm doc added to Nasm.doc.
\S{cl-0.98.23} Version 0.98.23
\b Attempted to remove rdoff version1
\b Lino Mastrodomenico's patches to preproc.c (%$$ bug?).
\S{cl-0.98.22} Version 0.98.22
\b Update rdoff2 - attempt to remove v1.
\S{cl-0.98.21} Version 0.98.21
\b Optimization fixes.
\S{cl-0.98.20} Version 0.98.20
\b Optimization fixes.
\S{cl-0.98.19} Version 0.98.19
\b H. J. Lu's patch back out.
\S{cl-0.98.18} Version 0.98.18
\b Added ".rdata" to "-f win32".
\S{cl-0.98.17} Version 0.98.17
\b H. J. Lu's "bogus elf" patch. (Red Hat problem?)
\S{cl-0.98.16} Version 0.98.16
\b Fix whitespace before "[section ..." bug.
\S{cl-0.98.15} Version 0.98.15
\b Rdoff changes (?).
\b Fix fixes to memory leaks.
\S{cl-0.98.14} Version 0.98.14
\b Fix memory leaks.
\S{cl-0.98.13} Version 0.98.13
\b There was no 0.98.13
\S{cl-0.98.12} Version 0.98.12
\b Update optimization (new function of "-O1")
\b Changes to test/bintest.asm (?).
\S{cl-0.98.11} Version 0.98.11
\b Optimization changes.
\b Ndisasm fixed.
\S{cl-0.98.10} Version 0.98.10
\b There was no 0.98.10
\S{cl-0.98.09} Version 0.98.09
\b Add multiple sections support to "-f bin".
\b Changed GLOBAL_TEMP_BASE in outelf.c from 6 to 15.
\b Add "-v" as an alias to the "-r" switch.
\b Remove "#ifdef" from Tasm compatibility options.
\b Remove redundant size-overrides on "mov ds, ex", etc.
\b Fixes to SSE2, other insns.dat (?).
\b Enable uppercase "I" and "P" switches.
\b Case insinsitive "seg" and "wrt".
\b Update install.sh (?).
\b Allocate tokens in blocks.
\b Improve "invalid effective address" messages.
\S{cl-0.98.08} Version 0.98.08
\b Add "\c{%strlen}" and "\c{%substr}" macro operators
\b Fixed broken c16.mac.
\b Unterminated string error reported.
\b Fixed bugs as per 0.98bf
\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
Changes from 0.98.07 release to 98.09b as of 28-Oct-2001
\b More closely compatible with 0.98 when -O0 is implied
or specified. Not strictly identical, since backward
branches in range of short offsets are recognized, and signed
byte values with no explicit size specification will be
assembled as a single byte.
\b More forgiving with the PUSH instruction. 0.98 requires
a size to be specified always. 0.98.09b will imply the size
from the current BITS setting (16 or 32).
\b Changed definition of the optimization flag:
-O0 strict two-pass assembly, JMP and Jcc are
handled more like 0.98, except that back-
ward JMPs are short, if possible.
-O1 strict two-pass assembly, but forward
branches are assembled with code guaranteed
to reach; may produce larger code than
-O0, but will produce successful assembly
more often if branch offset sizes are not
specified.
-O2 multi-pass optimization, minimize branch
offsets; also will minimize signed immed-
iate bytes, overriding size specification.
-O3 like -O2, but more passes taken, if needed
\S{cl-0.98.07 released 01/28/01} Version 0.98.07 released 01/28/01
\b Added Stepane Denis' SSE2 instructions to a *working*
version of the code - some earlier versions were based on
broken code - sorry 'bout that. version "0.98.07"
01/28/01
\b Cosmetic modifications to nasm.c, nasm.h,
AUTHORS, MODIFIED
\S{cl-0.98.06f released 01/18/01} Version 0.98.06f released 01/18/01
\b - Add "metalbrain"s jecxz bug fix in insns.dat
- alter nasmdoc.src to match - version "0.98.06f"
\S{cl-0.98.06e released 01/09/01} Version 0.98.06e released 01/09/01
\b Removed the "outforms.h" file - it appears to be
someone's old backup of "outform.h". version "0.98.06e"
01/09/01
\b fbk - finally added the fix for the "multiple %includes bug",
known since 7/27/99 - reported originally (?) and sent to
us by Austin Lunnen - he reports that John Fine had a fix
within the day. Here it is...
\b Nelson Rush resigns from the group. Big thanks to Nelson for
his leadership and enthusiasm in getting these changes
incorporated into Nasm!
\b fbk - [list +], [list -] directives - ineptly implemented, should
be re-written or removed, perhaps.
\b Brian Raiter / fbk - "elfso bug" fix - applied to aoutb format
as well - testing might be desirable...
08/07/00
\b James Seter - -postfix, -prefix command line switches.
\b Yuri Zaporogets - rdoff utility changes.
\S{cl-0.98p1} Version 0.98p1
\b GAS-like palign (Panos Minos)
\b FIXME: Someone, fill this in with details
\S{cl-0.98bf (bug-fixed)} Version 0.98bf (bug-fixed)
\b Fixed - elf and aoutb bug - shared libraries
- multiple "%include" bug in "-f obj"
- jcxz, jecxz bug
- unrecognized option bug in ndisasm
\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
\b Added signed byte optimizations for the 0x81/0x83 class
of instructions: ADC, ADD, AND, CMP, OR, SBB, SUB, XOR:
when used as 'ADD reg16,imm' or 'ADD reg32,imm.' Also
optimization of signed byte form of 'PUSH imm' and 'IMUL
reg,imm'/'IMUL reg,reg,imm.' No size specification is needed.
\b Added multi-pass JMP and Jcc offset optimization. Offsets
on forward references will preferentially use the short form,
without the need to code a specific size (short or near) for
the branch. Added instructions for 'Jcc label' to use the
form 'Jnotcc $+3/JMP label', in cases where a short offset
is out of bounds. If compiling for a 386 or higher CPU, then
the 386 form of Jcc will be used instead.
This feature is controlled by a new command-line switch: "O",
(upper case letter O). "-O0" reverts the assembler to no
extra optimization passes, "-O1" allows up to 5 extra passes,
and "-O2"(default), allows up to 10 extra optimization passes.
\b Added a new directive: 'cpu XXX', where XXX is any of:
8086, 186, 286, 386, 486, 586, pentium, 686, PPro, P2, P3 or
Katmai. All are case insensitive. All instructions will
be selected only if they apply to the selected cpu or lower.
Corrected a couple of bugs in cpu-dependence in 'insns.dat'.
\b Added to 'standard.mac', the "use16" and "use32" forms of
the "bits 16/32" directive. This is nothing new, just conforms
to a lot of other assemblers. (minor)
\b Changed label allocation from 320/32 (10000 labels @ 200K+)
to 32/37 (1000 labels); makes running under DOS much easier.
Since additional label space is allocated dynamically, this
should have no effect on large programs with lots of labels.
The 37 is a prime, believed to be better for hashing. (minor)
\S{cl-0.98.03} Version 0.98.03
"Integrated patchfile 0.98-0.98.01. I call this version 0.98.03 for
historical reasons: 0.98.02 was trashed." --John Coffman
<johninsd@san.rr.com>, 27-Jul-2000
\b Kendall Bennett's SciTech MGL changes
\b Note that you must define "TASM_COMPAT" at compile-time
to get the Tasm Ideal Mode compatibility.
\b All changes can be compiled in and out using the TASM_COMPAT macros,
and when compiled without TASM_COMPAT defined we get the exact same
binary as the unmodified 0.98 sources.
\b standard.mac, macros.c: Added macros to ignore TASM directives before
first include
\b nasm.h: Added extern declaration for tasm_compatible_mode
\b nasm.c: Added global variable tasm_compatible_mode
\b Added command line switch for TASM compatible mode (-t)
\b Changed version command line to reflect when compiled with TASM additions
\b Added response file processing to allow all arguments on a single
line (response file is @resp rather than -@resp for NASM format).
\b labels.c: Changes islocal() macro to support TASM style @@local labels.
\b Added islocalchar() macro to support TASM style @@local labels.
\b parser.c: Added support for TASM style memory references (ie: mov
[DWORD eax],10 rather than the NASM style mov DWORD [eax],10).
\b preproc.c: Added new directives, \c{%arg}, \c{%local}, \c{%stacksize} to directives
table
\b Added support for TASM style directives without a leading % symbol.
\b Integrated a block of changes from Andrew Zabolotny <bit@eltech.ru>:
\b A new keyword \c{%xdefine} and its case-insensitive counterpart \c{%ixdefine}.
They work almost the same way as \c{%define} and \c{%idefine} but expand
the definition immediately, not on the invocation. Something like a cross
between \c{%define} and \c{%assign}. The "x" suffix stands for "eXpand", so
"xdefine" can be deciphered as "expand-and-define". Thus you can do
things like this:
\c %assign ofs 0
\c
\c %macro arg 1
\c %xdefine %1 dword [esp+ofs]
\c %assign ofs ofs+4
\c %endmacro
\b Changed the place where the expansion of %$name macros are expanded.
Now they are converted into ..@ctxnum.name form when detokenizing, so
there are no quirks as before when using %$name arguments to macros,
in macros etc. For example:
\c %macro abc 1
\c %define %1 hello
\c %endm
\c
\c abc %$here
\c %$here
Now last line will be expanded into "hello" as expected. This also allows
for lots of goodies, a good example are extended "proc" macros included
in this archive.
\b Added a check for "cstk" in smacro_defined() before calling get_ctx() -
this allows for things like:
\c %ifdef %$abc
\c %endif
to work without warnings even in no context.
\b Added a check for "cstk" in %if*ctx and %elif*ctx directives -
this allows to use \c{%ifctx} without excessive warnings. If there is
no active context, \c{%ifctx} goes through "false" branch.
\b Removed "user error: " prefix with \c{%error} directive: it just clobbers the
output and has absolutely no functionality. Besides, this allows to write
macros that does not differ from built-in functions in any way.
\b Added expansion of string that is output by \c{%error} directive. Now you
can do things like:
\c %define hello(x) Hello, x!
\c
\c %define %$name andy
\c %error "hello(%$name)"
Same happened with \c{%include} directive.
\b Now all directives that expect an identifier will try to expand and
concatenate everything without whitespaces in between before usage.
For example, with "unfixed" nasm the commands
\c %define %$abc hello
\c %define __%$abc goodbye
\c __%$abc
would produce "incorrect" output: last line will expand to
\c hello goodbyehello
Not quite what you expected, eh? :-) The answer is that preprocessor
treats the \c{%define} construct as if it would be
\c %define __ %$abc goodbye
(note the white space between __ and %$abc). After my "fix" it
will "correctly" expand into
\c goodbye
as expected. Note that I use quotes around words "correct", "incorrect"
etc because this is rather a feature not a bug; however current behaviour
is more logical (and allows more advanced macro usage :-).
Same change was applied to:
\c{%push},\c{%macro},\c{%imacro},\c{%define},\c{%idefine},\c{%xdefine},\c{%ixdefine},
\c{%assign},\c{%iassign},\c{%undef}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -