⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 changes.src

📁 汇编编译器的最新版本的源码.买了自己动手写操作系统这本书的人一定要下
💻 SRC
📖 第 1 页 / 共 4 页
字号:

\b A new directive [WARNING {+|-}warning-id] have been added. It works only
    if the assembly phase is enabled (i.e. it doesn't work with nasm -e).

\b A new warning type: macro-selfref. By default this warning is disabled;
    when enabled NASM warns when a macro self-references itself; for example
    the following source:

\c        [WARNING macro-selfref]
\c
\c        %macro          push    1-*
\c                %rep    %0
\c                        push    %1
\c                        %rotate 1
\c                %endrep
\c        %endmacro
\c
\c                        push    eax,ebx,ecx

    will produce a warning, but if we remove the first line we won't see it
    anymore (which is The Right Thing To Do {tm} IMHO since C preprocessor
    eats such constructs without warnings at all).

\b Added a "error" routine to preprocessor which always will set ERR_PASS1
    bit in severity_code. This removes annoying repeated errors on first
    and second passes from preprocessor.

\b Added the %+ operator in single-line macros for concatenating two
    identifiers. Usage example:

\c        %define _myfunc _otherfunc
\c        %define cextern(x) _ %+ x
\c        cextern (myfunc)

    After first expansion, third line will become "_myfunc". After this
    expansion is performed again so it becomes "_otherunc".

\b Now if preprocessor is in a non-emitting state, no warning or error
    will be emitted. Example:

\c        %if 1
\c                mov     eax,ebx
\c        %else
\c                put anything you want between these two brackets,
\c                even macro-parameter references %1 or local
\c                labels %$zz or macro-local labels %%zz - no
\c                warning will be emitted.
\c        %endif

\b Context-local variables on expansion as a last resort are looked up
    in outer contexts. For example, the following piece:

\c        %push   outer
\c        %define %$a [esp]
\c
\c                %push   inner
\c                %$a
\c                %pop
\c        %pop

    will expand correctly the fourth line to [esp]; if we'll define another
    %$a inside the "inner" context, it will take precedence over outer
    definition. However, this modification has been applied only to
    expand_smacro and not to smacro_define: as a consequence expansion
    looks in outer contexts, but \c{%ifdef} won't look in outer contexts.

    This behaviour is needed because we don't want nested contexts to
    act on already defined local macros. Example:

\c        %define %$arg1  [esp+4]
\c        test    eax,eax
\c        if      nz
\c                mov     eax,%$arg1
\c        endif

    In this example the "if" mmacro enters into the "if" context, so %$arg1
    is not valid anymore inside "if". Of course it could be worked around
    by using explicitely %$$arg1 but this is ugly IMHO.

\b Fixed memory leak in \c{%undef}. The origline wasn't freed before
    exiting on success.

\b Fixed trap in preprocessor when line expanded to empty set of tokens.
    This happens, for example, in the following case:

\c        #define SOMETHING
\c        SOMETHING


\S{cl-0.98} Version 0.98

All changes since NASM 0.98p3 have been produced by H. Peter Anvin <hpa@zytor.com>.

\b The documentation comment delimiter is \# not #.

\b Allow EQU definitions to refer to external labels; reported by
  Pedro Gimeno.

\b Re-enable support for RDOFF v1; reported by Pedro Gimeno.

\b Updated License file per OK from Simon and Julian.


\S{cl-0.98p9} Version 0.98p9

\b Update documentation (although the instruction set reference will
  have to wait; I don't want to hold up the 0.98 release for it.)

\b Verified that the NASM implementation of the PEXTRW and PMOVMSKB
  instructions is correct.  The encoding differs from what the Intel
  manuals document, but the Pentium III behaviour matches NASM, not
  the Intel manuals.

\b Fix handling of implicit sizes in PSHUFW and PINSRW, reported by
  Stefan Hoffmeister.

\b Resurrect the -s option, which was removed when changing the
  diagnostic output to stdout.


\S{cl-0.98p8} Version 0.98p8

\b Fix for "DB" when NASM is running on a bigendian machine.

\b Invoke insns.pl once for each output script, making Makefile.in
  legal for "make -j".

\b Improve the Unix configure-based makefiles to make package
  creation easier.

\b Included an RPM .spec file for building RPM (RedHat Package Manager)
  packages on Linux or Unix systems.

\b Fix Makefile dependency problems.

\b Change src/rdsrc.pl to include sectioning information in info
  output; required for install-info to work.

\b Updated the RDOFF distribution to version 2 from Jules; minor
  massaging to make it compile in my environment.

\b Split doc files that can be built by anyone with a Perl interpreter off
  into a separate archive.

\b "Dress rehearsal" release!


\S{cl-0.98p7} Version 0.98p7

\b Fixed opcodes with a third byte-sized immediate argument to not
  complain if given "byte" on the immediate.

\b Allow \c{%undef} to remove single-line macros with arguments.  This
  matches the behaviour of #undef in the C preprocessor.

\b Allow -d, -u, -i and -p to be specified as -D, -U, -I and -P for
  compatibility with most C compilers and preprocessors.  This allows
  Makefile options to be shared between cc and nasm, for example.

\b Minor cleanups.

\b Went through the list of Katmai instructions and hopefully fixed the
  (rather few) mistakes in it.

\b (Hopefully) fixed a number of disassembler bugs related to ambiguous
  instructions (disambiguated by -p) and SSE instructions with REP.

\b Fix for bug reported by Mark Junger: "call dword 0x12345678" should
  work and may add an OSP (affected CALL, JMP, Jcc).

\b Fix for environments when "stderr" isn't a compile-time constant.


\S{cl-0.98p6} Version 0.98p6


\b Took officially over coordination of the 0.98 release; so drop
  the p3.x notation. Skipped p4 and p5 to avoid confusion with John
  Fine's J4 and J5 releases.

\b Update the documentation; however, it still doesn't include
  documentation for the various new instructions.  I somehow wonder if
  it makes sense to have an instruction set reference in the assembler
  manual when Intel et al have PDF versions of their manuals online.

\b Recognize "idt" or "centaur" for the -p option to ndisasm.

\b Changed error messages back to stderr where they belong, but add an
  -E option to redirect them elsewhere (the DOS shell cannot redirect
  stderr.)

\b -M option to generate Makefile dependencies (based on code from Alex
  Verstak.)

\b \c{%undef} preprocessor directive, and -u option, that undefines a
  single-line macro.

\b OS/2 Makefile (Mkfiles/Makefile.os2) for Borland under OS/2; from
  Chuck Crayne.

\b Various minor bugfixes (reported by):
  - Dangling \c{%s} in preproc.c (Martin Junker)

\b THERE ARE KNOWN BUGS IN SSE AND THE OTHER KATMAI INSTRUCTIONS.  I am
  on a trip and didn't bring the Katmai instruction reference, so I
  can't work on them right now.

\b Updated the License file per agreement with Simon and Jules to
  include a GPL distribution clause.


\S{cl-0.98p3.7} Version 0.98p3.7

\b (Hopefully) fixed the canned Makefiles to include the outrdf2 and
  zoutieee modules.

\b Renamed changes.asm to changed.asm.


\S{cl-0.98p3.6} Version 0.98p3.6

\b Fixed a bunch of instructions that were added in 0.98p3.5 which had
  memory operands, and the address-size prefix was missing from the
  instruction pattern.


\S{cl-0.98p3.5} Version 0.98p3.5

\b Merged in changes from John S. Fine's 0.98-J5 release.  John's based
  0.98-J5 on my 0.98p3.3 release; this merges the changes.

\b Expanded the instructions flag field to a long so we can fit more
  flags; mark SSE (KNI) and AMD or Katmai-specific instructions as
  such.

\b Fix the "PRIV" flag on a bunch of instructions, and create new
  "PROT" flag for protected-mode-only instructions (orthogonal to if
  the instruction is privileged!) and new "SMM" flag for SMM-only
  instructions.

\b Added AMD-only SYSCALL and SYSRET instructions.

\b Make SSE actually work, and add new Katmai MMX instructions.

\b Added a -p (preferred vendor) option to ndisasm so that it can
  distinguish e.g. Cyrix opcodes also used in SSE.  For example:

\c      ndisasm -p cyrix aliased.bin
\c      00000000  670F514310        paddsiw mm0,[ebx+0x10]
\c      00000005  670F514320        paddsiw mm0,[ebx+0x20]
\c      ndisasm -p intel aliased.bin
\c      00000000  670F514310        sqrtps xmm0,[ebx+0x10]
\c      00000005  670F514320        sqrtps xmm0,[ebx+0x20]

\b Added a bunch of Cyrix-specific instructions.


\S{cl-0.98p3.4} Version 0.98p3.4

\b Made at least an attempt to modify all the additional Makefiles (in
  the Mkfiles directory).  I can't test it, but this was the best I
  could do.

\b DOS DJGPP+"Opus Make" Makefile from John S. Fine.

\b changes.asm changes from John S. Fine.


\S{cl-0.98p3.3} Version 0.98p3.3

\b Patch from Conan Brink to allow nesting of \c{%rep} directives.

\b If we're going to allow INT01 as an alias for INT1/ICEBP (one of
  Jules 0.98p3 changes), then we should allow INT03 as an alias for INT3
  as well.

\b Updated changes.asm to include the latest changes.

\b Tried to clean up the <CR>s that had snuck in from a DOS/Windows
  environment into my Unix environment, and try to make sure than
  DOS/Windows users get them back.

\b We would silently generate broken tools if insns.dat wasn't sorted
  properly.  Change insns.pl so that the order doesn't matter.

\b Fix bug in insns.pl (introduced by me) which would cause conditional
  instructions to have an extra "cc" in disassembly, e.g. "jnz"
  disassembled as "jccnz".


\S{cl-0.98p3.2} Version 0.98p3.2

\b Merged in John S. Fine's changes from his 0.98-J4 prerelease; see
  http://www.csoft.net/cz/johnfine/

\b Changed previous "spotless" Makefile target (appropriate for distribution)
  to "distclean", and added "cleaner" target which is same as "clean"
  except deletes files generated by Perl scripts; "spotless" is union.

\b Removed BASIC programs from distribution.  Get a Perl interpreter
  instead (see below.)

\b Calling this "pre-release 3.2" rather than "p3-hpa2" because of
  John's contributions.

\b Actually link in the IEEE output format (zoutieee.c); fix a bunch of
  compiler warnings in that file.  Note I don't know what IEEE output
  is supposed to look like, so these changes were made "blind".


\S{cl-0.98p3-hpa} Version 0.98p3-hpa

\b Merged nasm098p3.zip with nasm-0.97.tar.gz to create a fully
  buildable version for Unix systems (Makefile.in updates, etc.)

\b Changed insns.pl to create the instruction tables in nasm.h and
  names.c, so that a new instruction can be added by adding it *only*
  to insns.dat.

\b Added the following new instructions: SYSENTER, SYSEXIT, FXSAVE,
  FXRSTOR, UD1, UD2 (the latter two are two opcodes that Intel
  guarantee will never be used; one of them is documented as UD2 in
  Intel documentation, the other one just as "Undefined Opcode" --
  calling it UD1 seemed to make sense.)

\b MAX_SYMBOL was defined to be 9, but LOADALL286 and LOADALL386 are 10
  characters long.  Now MAX_SYMBOL is derived from insns.dat.

\b A note on the BASIC programs included: forget them.  insns.bas is
  already out of date.  Get yourself a Perl interpreter for your
  platform of choice at
  \W{http://www.cpan.org/ports/index.html}{http://www.cpan.org/ports/index.html}.


\S{cl-0.98p3} Version 0.98 pre-release 3

\b added response file support, improved command line handling, new layout
help screen

\b fixed limit checking bug, 'OUT byte nn, reg' bug, and a couple of rdoff
related bugs, updated Wishlist; 0.98 Prerelease 3.


\S{cl-0.98p2} Version 0.98 pre-release 2

\b fixed bug in outcoff.c to do with truncating section names longer
than 8 characters, referencing beyond end of string; 0.98 pre-release 2


\S{cl-0.98p1} Version 0.98 pre-release 1

\b Fixed a bug whereby STRUC didn't work at all in RDF.

\b Fixed a problem with group specification in PUBDEFs in OBJ.

\b Improved ease of adding new output formats. Contribution due to
Fox Cutter.

\b Fixed a bug in relocations in the `bin' format: was showing up when
a relocatable reference crossed an 8192-byte boundary in any output
section.

\b Fixed a bug in local labels: local-label lookups were inconsistent
between passes one and two if an EQU occurred between the definition
of a global label and the subsequent use of a local label local to
that global.

\b Fixed a seg-fault in the preprocessor (again) which happened when
you use a blank line as the first line of a multi-line macro
definition and then defined a label on the same line as a call to
that macro.

\b Fixed a stale-pointer bug in the handling of the NASM environment
variable. Thanks to Thomas McWilliams.

\b ELF had a hard limit on the number of sections which caused
segfaults when transgressed. Fixed.

\b Added ability for ndisasm to read from stdin by using `-' as the
filename.

\b ndisasm wasn't outputting the TO keyword. Fixed.

\b Fixed error cascade on bogus expression in \c{%if} - an error in
evaluation was causing the entire \c{%if} to be discarded, thus creating
trouble later when the \c{%else} or \c{%endif} was encountered.

\b Forward reference tracking was instruction-granular not operand-
granular, which was causing 286-specific code to be generated
needlessly on code of the form `shr word [forwardref],1'. Thanks to
Jim Hague for sending a patch.

\b All messages now appear on stdout, as sending them to stderr serves
no useful purpose other than to make redirection difficult.

\b Fixed the problem with EQUs pointing to an external symbol - this
now generates an error message.

\b Allowed multiple size prefixes to an operand, of which only the first
is taken into account.

\b Incorporated John Fine's changes, including fixes of a large number
of preprocessor bugs, some small problems in OBJ, and a reworking of
label handling to define labels before their line is assembled, rather
than after.

\b Reformatted a lot of the source code to be more readable. Included
'coding.txt' as a guideline for how to format code for contributors.

\b Stopped nested \c{%reps} causing a panic - they now cause a slightly more
friendly error message instead.

\b Fixed floating point constant problems (patch by Pedro Gimeno)

\b Fixed the return value of insn_size() not being checked for -1, indicating
an error.

\b Incorporated 3Dnow! instructions.

\b Fixed the 'mov eax, eax + ebx' bug.

\b Fixed the GLOBAL EQU bug in ELF. Released developers release 3.

\b Incorporated John Fine's command line parsing changes

\b Incorporated David Lindauer's OMF debug support

\b Made changes for LCC 4.0 support (\c{__NASM_CDecl__}, removed register size
specification warning when sizes agree).


\H{cl-0.9x} NASM 0.9 Series

Revisions before 0.98.


\S{cl-0.97} Version 0.97 released December 1997

\b This was entirely a bug-fix release to 0.96, which seems to have got
cursed. Silly me.

\b Fixed stupid mistake in OBJ which caused `MOV EAX,<constant>' to
fail. Caused by an error in the `MOV EAX,<segment>' support.

\b ndisasm hung at EOF when compiled with lcc on Linux because lcc on
Linux somehow breaks feof(). ndisasm now does not rely on feof().

\b A heading in the documentation was missing due to a markup error in
the indexing. Fixed.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -