📄 changes
字号:
0.98p6------* 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.* 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.* Recognize "idt" or "centaur" for the -p option to ndisasm.* Changed error messages back to stderr where they belong, but add an -E option to redirect them elsewhere (the DOS shell cannot redirect stderr.)* -M option to generate Makefile dependencies (based on code from Alex Verstak.)* %undef preprocessor directive, and -u option, that undefines a single-line macro.* OS/2 Makefile (Mkfiles/Makefile.os2) for Borland under OS/2; from Chuck Crayne.* Various minor bugfixes (reported by): - Dangling %s in preproc.c (Martin Junker)* 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.* Updated the License file per agreement with Simon and Jules to include a GPL distribution clause.0.98p3.7--------* (Hopefully) fixed the canned Makefiles to include the outrdf2 and zoutieee modules.* Renamed changes.asm to changed.asm.0.98p3.6--------* 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.0.98p3.5--------* 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.* 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.* 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.* Added AMD-only SYSCALL and SYSRET instructions.* Make SSE actually work, and add new Katmai MMX instructions.* Added a -p (preferred vendor) option to ndisasm so that it can distinguish e.g. Cyrix opcodes also used in SSE. For example: ndisasm -p cyrix aliased.bin 00000000 670F514310 paddsiw mm0,[ebx+0x10] 00000005 670F514320 paddsiw mm0,[ebx+0x20] ndisasm -p intel aliased.bin 00000000 670F514310 sqrtps xmm0,[ebx+0x10] 00000005 670F514320 sqrtps xmm0,[ebx+0x20]* Added a bunch of Cyrix-specific instructions.0.98p3.4--------* 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.* DOS DJGPP+"Opus Make" Makefile from John S. Fine.* changes.asm changes from John S. Fine.0.98p3.3--------* Patch from Conan Brink to allow nesting of %rep directives.* 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.* Updated changes.asm to include the latest changes.* 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.* We would silently generate broken tools if insns.dat wasn't sorted properly. Change insns.pl so that the order doesn't matter.* 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".0.98p3.2--------* Merged in John S. Fine's changes from his 0.98-J4 prerelease; see http://www.csoft.net/cz/johnfine/* 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.* Removed BASIC programs from distribution. Get a Perl interpreter instead (see below.)* Calling this "pre-release 3.2" rather than "p3-hpa2" because of John's contributions.* 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".0.98p3-hpa----------* Merged nasm098p3.zip with nasm-0.97.tar.gz to create a fully buildable version for Unix systems (Makefile.in updates, etc.)* 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.* 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.)* MAX_SYMBOL was defined to be 9, but LOADALL286 and LOADALL386 are 10 characters long. Now MAX_SYMBOL is derived from insns.dat.* 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: http://www.cpan.org/ports/index.html0.98 pre-release 3-------------------added response file support, improved command line handling, new layouthelp screenfixed limit checking bug, 'OUT byte nn, reg' bug, and a couple of rdoffrelated bugs, updated Wishlist; 0.98 Prerelease 3.0.98 pre-release 2-------------------fixed bug in outcoff.c to do with truncating section names longerthan 8 characters, referencing beyond end of string; 0.98 pre-release 20.98 pre-released May 1999--------------------------Fixed a bug whereby STRUC didn't work at all in RDF.Fixed a problem with group specification in PUBDEFs in OBJ.Improved ease of adding new output formats. Contribution due toFox Cutter.Fixed a bug in relocations in the `bin' format: was showing up whena relocatable reference crossed an 8192-byte boundary in any outputsection.Fixed a bug in local labels: local-label lookups were inconsistentbetween passes one and two if an EQU occurred between the definitionof a global label and the subsequent use of a local label local tothat global.Fixed a seg-fault in the preprocessor (again) which happened whenyou use a blank line as the first line of a multi-line macrodefinition and then defined a label on the same line as a call tothat macro.Fixed a stale-pointer bug in the handling of the NASM environmentvariable. Thanks to Thomas McWilliams.ELF had a hard limit on the number of sections which causedsegfaults when transgressed. Fixed.Added ability for ndisasm to read from stdin by using `-' as thefilename.ndisasm wasn't outputting the TO keyword. Fixed.Fixed error cascade on bogus expression in %if - an error inevaluation was causing the entire %if to be discarded, thus creatingtrouble later when the %else or %endif was encountered.Forward reference tracking was instruction-granular not operand-granular, which was causing 286-specific code to be generatedneedlessly on code of the form `shr word [forwardref],1'. Thanks toJim Hague for sending a patch.All messages now appear on stdout, as sending them to stderr servesno useful purpose other than to make redirection difficult.Fixed the problem with EQUs pointing to an external symbol - thisnow generates an error message.Allowed multiple size prefixes to an operand, of which only the firstis taken into account.Incorporated John Fine's changes, including fixes of a large numberof preprocessor bugs, some small problems in OBJ, and a reworking oflabel handling to define labels before their line is assembled, ratherthan after.Reformatted a lot of the source code to be more readable. Included'coding.txt' as a guideline for how to format code for contributors.Stopped nested %reps causing a panic - they now cause a slightly morefriendly error message instead.Fixed floating point constant problems (patch by Pedro Gimeno)Fixed the return value of insn_size() not being checked for -1, indicatingan error.Incorporated 3D now instructions.Fixed the 'mov eax, eax + ebx' bug.Fixed the GLOBAL EQU bug in ELF. Released developers release 3.Incorporated John Fine's command line parsing changesIncorporated David Lindauer's OMF debug supportMade changes for LCC 4.0 support (__NASM_CDecl__, removed register sizespecification warning when sizes agree).Released NASM 0.98 Pre-release 10.97 released December 1997---------------------------This was entirely a bug-fix release to 0.96, which seems to have gotcursed. Silly me.Fixed stupid mistake in OBJ which caused `MOV EAX,<constant>' tofail. Caused by an error in the `MOV EAX,<segment>' support.ndisasm hung at EOF when compiled with lcc on Linux because lcc onLinux somehow breaks feof(). ndisasm now does not rely on feof().A heading in the documentation was missing due to a markup error inthe indexing. Fixed.Fixed failure to update all pointers on realloc() within extended-operand code in parser.c. Was causing wrong behaviour and seg faultson lines such as `dd 0.0,0.0,0.0,0.0,...'Fixed a subtle preprocessor bug whereby invoking one multi-linemacro on the first line of the expansion of another, when the secondhad been invoked with a label defined before it, didn't expand theinner macro. Added internal.doc back in to the distribution archives - it wasmissing in 0.96 *blush*Fixed bug causing 0.96 to be unable to assemble its own test files,specifically objtest.asm. *blush again*Fixed seg-faults and bogus error messages caused by mismatching%rep and %endrep within multi-line macro definitions.Fixed a problem with buffer overrun in OBJ, which was causingcorruption at ends of long PUBDEF records.Separated DOS archives into main-program and documentation to reducedownload size.0.96 released November 1997---------------------------Fixed a bug whereby, if `nasm sourcefile' would cause a filenamecollision warning and put output into `nasm.out', then `nasmsourcefile -o outputfile' still gave the warning even though the`-o' was honoured.Fixed name pollution under Digital UNIX: one of its header filesdefined R_SP, which broke the enum in nasm.h.Fixed minor instruction table problems: FUCOM and FUCOMP didn't havetwo-operand forms; NDISASM didn't recognise the longer registerforms of PUSH and POP (eg FF F3 for PUSH BX); TEST mem,imm32 wasflagged as undocumented; the 32-bit forms of CMOV had 16-bit operandsize prefixes; `AAD imm' and `AAM imm' are no longer flagged asundocumented because the Intel Architecture reference documentsthem.Fixed a problem with the local-label mechanism, whereby strangetypes of symbol (EQUs, auto-defined OBJ segment base symbols)interfered with the `previous global label' value and screwed uplocal labels.Fixed a bug whereby the stub preprocessor didn't communicate withthe listing file generator, so that the -a and -l options inconjunction would produce a useless listing file.Merged `os2' object file format back into `obj', after discoveringthat `obj' _also_ shouldn't have a link pass separator in a modulecontaining a non-trivial MODEND. Flat segments are now declaredusing the FLAT attribute. `os2' is no longer a valid object formatname: use `obj'.Removed the fixed-size temporary storage in the evaluator. Very verylong expressions (like `mov ax,1+1+1+1+...' for two hundred 1s orso) should now no longer crash NASM.Fixed a bug involving segfaults on disassembly of MMX instructions,by changing the meaning of one of the operand-type flags in nasm.h.This may cause other apparently unrelated MMX problems; it needs tobe tested thoroughly.Fixed some buffer overrun problems with large OBJ output files.Thanks to DJ Delorie for the bug report and fix.Made preprocess-only mode actually listen to the %line markers as itprints them, so that it can report errors more sanely.Re-designed the evaluator to keep more sensible track of expressionsinvolving forward references: can now cope with previously-nightmaresituations such as mov ax,foo | bar foo equ 1 bar equ 2Added the ALIGN and ALIGNB standard macros.Added PIC support in ELF: use of WRT to obtain the four extrarelocation types needed.Added the ability for output file formats to define their ownextensions to the GLOBAL, COMMON and EXTERN directives.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -