laag-nasm 2.13.03.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +57 -0
- data/LICENSE.txt +29 -0
- data/README.org +34 -0
- data/ext/laag/nasm/extconf.rb +16 -0
- data/laag-nasm.gemspec +20 -0
- data/lib/laag/nasm.rb +29 -0
- data/patches/Makefile.in.patch +13 -0
- data/vendor/repo.or.cz/nasm/.gitignore +102 -0
- data/vendor/repo.or.cz/nasm/AUTHORS +137 -0
- data/vendor/repo.or.cz/nasm/CHANGES +2 -0
- data/vendor/repo.or.cz/nasm/ChangeLog +2905 -0
- data/vendor/repo.or.cz/nasm/INSTALL +102 -0
- data/vendor/repo.or.cz/nasm/LICENSE +29 -0
- data/vendor/repo.or.cz/nasm/Makefile.in +855 -0
- data/vendor/repo.or.cz/nasm/Mkfiles/README +46 -0
- data/vendor/repo.or.cz/nasm/Mkfiles/msvc.mak +732 -0
- data/vendor/repo.or.cz/nasm/Mkfiles/openwcom.mak +706 -0
- data/vendor/repo.or.cz/nasm/README +23 -0
- data/vendor/repo.or.cz/nasm/SubmittingPatches +116 -0
- data/vendor/repo.or.cz/nasm/TODO +376 -0
- data/vendor/repo.or.cz/nasm/aclocal.m4 +139 -0
- data/vendor/repo.or.cz/nasm/asm/assemble.c +2957 -0
- data/vendor/repo.or.cz/nasm/asm/assemble.h +54 -0
- data/vendor/repo.or.cz/nasm/asm/directiv.c +566 -0
- data/vendor/repo.or.cz/nasm/asm/directiv.dat +92 -0
- data/vendor/repo.or.cz/nasm/asm/error.c +202 -0
- data/vendor/repo.or.cz/nasm/asm/eval.c +1014 -0
- data/vendor/repo.or.cz/nasm/asm/eval.h +49 -0
- data/vendor/repo.or.cz/nasm/asm/exprdump.c +79 -0
- data/vendor/repo.or.cz/nasm/asm/exprlib.c +200 -0
- data/vendor/repo.or.cz/nasm/asm/float.c +952 -0
- data/vendor/repo.or.cz/nasm/asm/float.h +54 -0
- data/vendor/repo.or.cz/nasm/asm/labels.c +540 -0
- data/vendor/repo.or.cz/nasm/asm/listing.c +346 -0
- data/vendor/repo.or.cz/nasm/asm/listing.h +113 -0
- data/vendor/repo.or.cz/nasm/asm/nasm.c +1855 -0
- data/vendor/repo.or.cz/nasm/asm/parser.c +1167 -0
- data/vendor/repo.or.cz/nasm/asm/parser.h +45 -0
- data/vendor/repo.or.cz/nasm/asm/phash.pl +109 -0
- data/vendor/repo.or.cz/nasm/asm/pptok.dat +96 -0
- data/vendor/repo.or.cz/nasm/asm/pptok.pl +271 -0
- data/vendor/repo.or.cz/nasm/asm/pragma.c +218 -0
- data/vendor/repo.or.cz/nasm/asm/preproc-nop.c +188 -0
- data/vendor/repo.or.cz/nasm/asm/preproc.c +5459 -0
- data/vendor/repo.or.cz/nasm/asm/preproc.h +55 -0
- data/vendor/repo.or.cz/nasm/asm/quote.c +479 -0
- data/vendor/repo.or.cz/nasm/asm/quote.h +44 -0
- data/vendor/repo.or.cz/nasm/asm/rdstrnum.c +68 -0
- data/vendor/repo.or.cz/nasm/asm/segalloc.c +51 -0
- data/vendor/repo.or.cz/nasm/asm/stdscan.c +345 -0
- data/vendor/repo.or.cz/nasm/asm/stdscan.h +49 -0
- data/vendor/repo.or.cz/nasm/asm/strfunc.c +359 -0
- data/vendor/repo.or.cz/nasm/asm/tokens.dat +135 -0
- data/vendor/repo.or.cz/nasm/asm/tokhash.pl +284 -0
- data/vendor/repo.or.cz/nasm/autogen.sh +9 -0
- data/vendor/repo.or.cz/nasm/common/common.c +122 -0
- data/vendor/repo.or.cz/nasm/config/msvc.h +192 -0
- data/vendor/repo.or.cz/nasm/config/unknown.h +51 -0
- data/vendor/repo.or.cz/nasm/config/watcom.h +74 -0
- data/vendor/repo.or.cz/nasm/configure.ac +253 -0
- data/vendor/repo.or.cz/nasm/contrib/MSVC6.txt +25 -0
- data/vendor/repo.or.cz/nasm/contrib/VSrules/nasm.README +16 -0
- data/vendor/repo.or.cz/nasm/contrib/VSrules/nasm.rules +79 -0
- data/vendor/repo.or.cz/nasm/disasm/disasm.c +1735 -0
- data/vendor/repo.or.cz/nasm/disasm/disasm.h +49 -0
- data/vendor/repo.or.cz/nasm/disasm/ndisasm.c +397 -0
- data/vendor/repo.or.cz/nasm/disasm/sync.c +132 -0
- data/vendor/repo.or.cz/nasm/disasm/sync.h +45 -0
- data/vendor/repo.or.cz/nasm/doc/Makefile.in +86 -0
- data/vendor/repo.or.cz/nasm/doc/README +20 -0
- data/vendor/repo.or.cz/nasm/doc/afmmetrics.ph +102 -0
- data/vendor/repo.or.cz/nasm/doc/changes.src +2588 -0
- data/vendor/repo.or.cz/nasm/doc/findfont.ph +180 -0
- data/vendor/repo.or.cz/nasm/doc/genps.pl +1294 -0
- data/vendor/repo.or.cz/nasm/doc/inslist.pl +108 -0
- data/vendor/repo.or.cz/nasm/doc/internal.doc +290 -0
- data/vendor/repo.or.cz/nasm/doc/local.css +1 -0
- data/vendor/repo.or.cz/nasm/doc/nasmdoc.css +150 -0
- data/vendor/repo.or.cz/nasm/doc/nasmdoc.src +8309 -0
- data/vendor/repo.or.cz/nasm/doc/nasmlogo.eps +212 -0
- data/vendor/repo.or.cz/nasm/doc/nasmlogw.png +0 -0
- data/vendor/repo.or.cz/nasm/doc/psfonts.ph +53 -0
- data/vendor/repo.or.cz/nasm/doc/pspdf.pl +98 -0
- data/vendor/repo.or.cz/nasm/doc/pswidth.ph +25 -0
- data/vendor/repo.or.cz/nasm/doc/rdsrc.pl +1111 -0
- data/vendor/repo.or.cz/nasm/doc/ttfmetrics.ph +63 -0
- data/vendor/repo.or.cz/nasm/headers/c +33 -0
- data/vendor/repo.or.cz/nasm/headers/doc +33 -0
- data/vendor/repo.or.cz/nasm/headers/mac +33 -0
- data/vendor/repo.or.cz/nasm/headers/perl +33 -0
- data/vendor/repo.or.cz/nasm/include/compiler.h +277 -0
- data/vendor/repo.or.cz/nasm/include/disp8.h +45 -0
- data/vendor/repo.or.cz/nasm/include/error.h +135 -0
- data/vendor/repo.or.cz/nasm/include/hashtbl.h +85 -0
- data/vendor/repo.or.cz/nasm/include/iflag.h +173 -0
- data/vendor/repo.or.cz/nasm/include/insns.h +76 -0
- data/vendor/repo.or.cz/nasm/include/labels.h +60 -0
- data/vendor/repo.or.cz/nasm/include/md5.h +21 -0
- data/vendor/repo.or.cz/nasm/include/nasm.h +1246 -0
- data/vendor/repo.or.cz/nasm/include/nasmint.h +219 -0
- data/vendor/repo.or.cz/nasm/include/nasmlib.h +524 -0
- data/vendor/repo.or.cz/nasm/include/opflags.h +271 -0
- data/vendor/repo.or.cz/nasm/include/perfhash.h +52 -0
- data/vendor/repo.or.cz/nasm/include/raa.h +46 -0
- data/vendor/repo.or.cz/nasm/include/rbtree.h +51 -0
- data/vendor/repo.or.cz/nasm/include/rdoff.h +169 -0
- data/vendor/repo.or.cz/nasm/include/saa.h +94 -0
- data/vendor/repo.or.cz/nasm/include/strlist.h +55 -0
- data/vendor/repo.or.cz/nasm/include/tables.h +70 -0
- data/vendor/repo.or.cz/nasm/include/ver.h +47 -0
- data/vendor/repo.or.cz/nasm/install-sh +250 -0
- data/vendor/repo.or.cz/nasm/macros/altreg.mac +107 -0
- data/vendor/repo.or.cz/nasm/macros/fp.mac +54 -0
- data/vendor/repo.or.cz/nasm/macros/ifunc.mac +48 -0
- data/vendor/repo.or.cz/nasm/macros/macros.pl +294 -0
- data/vendor/repo.or.cz/nasm/macros/smartalign.mac +189 -0
- data/vendor/repo.or.cz/nasm/macros/standard.mac +226 -0
- data/vendor/repo.or.cz/nasm/misc/Doxyfile +752 -0
- data/vendor/repo.or.cz/nasm/misc/Nindent +18 -0
- data/vendor/repo.or.cz/nasm/misc/README +2 -0
- data/vendor/repo.or.cz/nasm/misc/c16.mac +82 -0
- data/vendor/repo.or.cz/nasm/misc/c32.mac +52 -0
- data/vendor/repo.or.cz/nasm/misc/crcgen.c +44 -0
- data/vendor/repo.or.cz/nasm/misc/exebin.mac +57 -0
- data/vendor/repo.or.cz/nasm/misc/exebin2.mac +114 -0
- data/vendor/repo.or.cz/nasm/misc/fmtinsns.pl +40 -0
- data/vendor/repo.or.cz/nasm/misc/genfma.pl +63 -0
- data/vendor/repo.or.cz/nasm/misc/hints.txt +26 -0
- data/vendor/repo.or.cz/nasm/misc/magic +6 -0
- data/vendor/repo.or.cz/nasm/misc/myC32.mac +121 -0
- data/vendor/repo.or.cz/nasm/misc/nasm.sl +320 -0
- data/vendor/repo.or.cz/nasm/misc/nasmstab +296 -0
- data/vendor/repo.or.cz/nasm/misc/omfdump.c +517 -0
- data/vendor/repo.or.cz/nasm/misc/pmw.bat +9 -0
- data/vendor/repo.or.cz/nasm/misc/proc32.ash +441 -0
- data/vendor/repo.or.cz/nasm/misc/scitech.mac +1223 -0
- data/vendor/repo.or.cz/nasm/misc/xcrcgen.c +80 -0
- data/vendor/repo.or.cz/nasm/nasm.spec.in +83 -0
- data/vendor/repo.or.cz/nasm/nasm.spec.sed +3 -0
- data/vendor/repo.or.cz/nasm/nasm.txt +306 -0
- data/vendor/repo.or.cz/nasm/nasmlib/badenum.c +43 -0
- data/vendor/repo.or.cz/nasm/nasmlib/bsi.c +77 -0
- data/vendor/repo.or.cz/nasm/nasmlib/crc64.c +189 -0
- data/vendor/repo.or.cz/nasm/nasmlib/file.c +259 -0
- data/vendor/repo.or.cz/nasm/nasmlib/file.h +128 -0
- data/vendor/repo.or.cz/nasm/nasmlib/filename.c +69 -0
- data/vendor/repo.or.cz/nasm/nasmlib/hashtbl.c +232 -0
- data/vendor/repo.or.cz/nasm/nasmlib/ilog2.c +168 -0
- data/vendor/repo.or.cz/nasm/nasmlib/malloc.c +108 -0
- data/vendor/repo.or.cz/nasm/nasmlib/md5c.c +247 -0
- data/vendor/repo.or.cz/nasm/nasmlib/mmap.c +139 -0
- data/vendor/repo.or.cz/nasm/nasmlib/path.c +186 -0
- data/vendor/repo.or.cz/nasm/nasmlib/perfhash.c +55 -0
- data/vendor/repo.or.cz/nasm/nasmlib/perfhash.pl +362 -0
- data/vendor/repo.or.cz/nasm/nasmlib/raa.c +173 -0
- data/vendor/repo.or.cz/nasm/nasmlib/rbtree.c +119 -0
- data/vendor/repo.or.cz/nasm/nasmlib/readnum.c +172 -0
- data/vendor/repo.or.cz/nasm/nasmlib/realpath.c +135 -0
- data/vendor/repo.or.cz/nasm/nasmlib/saa.c +431 -0
- data/vendor/repo.or.cz/nasm/nasmlib/srcfile.c +128 -0
- data/vendor/repo.or.cz/nasm/nasmlib/string.c +242 -0
- data/vendor/repo.or.cz/nasm/nasmlib/strlist.c +100 -0
- data/vendor/repo.or.cz/nasm/nasmlib/ver.c +51 -0
- data/vendor/repo.or.cz/nasm/nasmlib/zerobuf.c +42 -0
- data/vendor/repo.or.cz/nasm/ndisasm.txt +94 -0
- data/vendor/repo.or.cz/nasm/nsis/NASMMultiUser.nsh +478 -0
- data/vendor/repo.or.cz/nasm/nsis/getpearch.pl +76 -0
- data/vendor/repo.or.cz/nasm/nsis/nasm-un.ico +0 -0
- data/vendor/repo.or.cz/nasm/nsis/nasm.ico +0 -0
- data/vendor/repo.or.cz/nasm/nsis/nasm.nsi +241 -0
- data/vendor/repo.or.cz/nasm/output/codeview.c +814 -0
- data/vendor/repo.or.cz/nasm/output/dwarf.h +566 -0
- data/vendor/repo.or.cz/nasm/output/elf.h +537 -0
- data/vendor/repo.or.cz/nasm/output/legacy.c +112 -0
- data/vendor/repo.or.cz/nasm/output/nulldbg.c +93 -0
- data/vendor/repo.or.cz/nasm/output/nullout.c +51 -0
- data/vendor/repo.or.cz/nasm/output/outaout.c +954 -0
- data/vendor/repo.or.cz/nasm/output/outaout.mac +37 -0
- data/vendor/repo.or.cz/nasm/output/outas86.c +650 -0
- data/vendor/repo.or.cz/nasm/output/outas86.mac +37 -0
- data/vendor/repo.or.cz/nasm/output/outbin.c +1713 -0
- data/vendor/repo.or.cz/nasm/output/outbin.mac +40 -0
- data/vendor/repo.or.cz/nasm/output/outcoff.c +1242 -0
- data/vendor/repo.or.cz/nasm/output/outcoff.mac +43 -0
- data/vendor/repo.or.cz/nasm/output/outdbg.c +425 -0
- data/vendor/repo.or.cz/nasm/output/outelf.c +3370 -0
- data/vendor/repo.or.cz/nasm/output/outelf.h +156 -0
- data/vendor/repo.or.cz/nasm/output/outelf.mac +41 -0
- data/vendor/repo.or.cz/nasm/output/outform.c +120 -0
- data/vendor/repo.or.cz/nasm/output/outform.h +379 -0
- data/vendor/repo.or.cz/nasm/output/outieee.c +1528 -0
- data/vendor/repo.or.cz/nasm/output/outlib.c +58 -0
- data/vendor/repo.or.cz/nasm/output/outlib.h +63 -0
- data/vendor/repo.or.cz/nasm/output/outmacho.c +2387 -0
- data/vendor/repo.or.cz/nasm/output/outmacho.mac +49 -0
- data/vendor/repo.or.cz/nasm/output/outobj.c +2725 -0
- data/vendor/repo.or.cz/nasm/output/outobj.mac +49 -0
- data/vendor/repo.or.cz/nasm/output/outrdf.mac +40 -0
- data/vendor/repo.or.cz/nasm/output/outrdf2.c +791 -0
- data/vendor/repo.or.cz/nasm/output/outrdf2.mac +43 -0
- data/vendor/repo.or.cz/nasm/output/pecoff.h +532 -0
- data/vendor/repo.or.cz/nasm/output/stabs.h +144 -0
- data/vendor/repo.or.cz/nasm/perllib/crc64.ph +158 -0
- data/vendor/repo.or.cz/nasm/perllib/gensv.pl +34 -0
- data/vendor/repo.or.cz/nasm/perllib/phash.ph +200 -0
- data/vendor/repo.or.cz/nasm/perllib/random_sv_vectors.ph +67 -0
- data/vendor/repo.or.cz/nasm/rdoff/README +185 -0
- data/vendor/repo.or.cz/nasm/rdoff/collectn.c +44 -0
- data/vendor/repo.or.cz/nasm/rdoff/collectn.h +22 -0
- data/vendor/repo.or.cz/nasm/rdoff/doc/Makefile +37 -0
- data/vendor/repo.or.cz/nasm/rdoff/doc/rdoff.texi +137 -0
- data/vendor/repo.or.cz/nasm/rdoff/doc/v1-v2.txt +62 -0
- data/vendor/repo.or.cz/nasm/rdoff/hash.c +122 -0
- data/vendor/repo.or.cz/nasm/rdoff/hash.h +17 -0
- data/vendor/repo.or.cz/nasm/rdoff/ldrdf.1 +41 -0
- data/vendor/repo.or.cz/nasm/rdoff/ldrdf.c +1395 -0
- data/vendor/repo.or.cz/nasm/rdoff/ldsegs.h +59 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2bin.1 +65 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2bin.c +431 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2com.1 +1 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2ihx.1 +1 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2ith.1 +1 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2srec.1 +1 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdfdump.1 +24 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdfdump.c +347 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdflib.1 +39 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdflib.c +434 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdfload.c +213 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdfload.h +29 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdfutils.h +165 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdlar.c +492 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdlar.h +34 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdlib.c +290 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdlib.h +62 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdoff.c +621 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdx.1 +21 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdx.c +90 -0
- data/vendor/repo.or.cz/nasm/rdoff/segtab.c +172 -0
- data/vendor/repo.or.cz/nasm/rdoff/segtab.h +45 -0
- data/vendor/repo.or.cz/nasm/rdoff/symtab.c +159 -0
- data/vendor/repo.or.cz/nasm/rdoff/symtab.h +55 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/Makefile +10 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/makelib.sh +14 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdfseg.asm +20 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdfseg2.asm +12 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdftest1.asm +54 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdftest2.asm +33 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdtlib.asm +48 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdtmain.asm +47 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/testlib.asm +18 -0
- data/vendor/repo.or.cz/nasm/stdlib/snprintf.c +29 -0
- data/vendor/repo.or.cz/nasm/stdlib/strlcpy.c +51 -0
- data/vendor/repo.or.cz/nasm/stdlib/strnlen.c +46 -0
- data/vendor/repo.or.cz/nasm/stdlib/vsnprintf.c +51 -0
- data/vendor/repo.or.cz/nasm/test/Makefile +106 -0
- data/vendor/repo.or.cz/nasm/test/_file_.asm +5 -0
- data/vendor/repo.or.cz/nasm/test/_version.asm +2 -0
- data/vendor/repo.or.cz/nasm/test/a32offs.asm +9 -0
- data/vendor/repo.or.cz/nasm/test/absolute.asm +40 -0
- data/vendor/repo.or.cz/nasm/test/addr64x.asm +18 -0
- data/vendor/repo.or.cz/nasm/test/align13.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/align13s.asm +20 -0
- data/vendor/repo.or.cz/nasm/test/alonesym-obj.asm +166 -0
- data/vendor/repo.or.cz/nasm/test/andbyte.asm +15 -0
- data/vendor/repo.or.cz/nasm/test/aoutso.asm +99 -0
- data/vendor/repo.or.cz/nasm/test/aouttest.asm +86 -0
- data/vendor/repo.or.cz/nasm/test/aouttest.c +36 -0
- data/vendor/repo.or.cz/nasm/test/avx.asm +46 -0
- data/vendor/repo.or.cz/nasm/test/avx005.asm +529 -0
- data/vendor/repo.or.cz/nasm/test/avx2.asm +1608 -0
- data/vendor/repo.or.cz/nasm/test/avx512cd.asm +106 -0
- data/vendor/repo.or.cz/nasm/test/avx512er.asm +144 -0
- data/vendor/repo.or.cz/nasm/test/avx512f.asm +7000 -0
- data/vendor/repo.or.cz/nasm/test/avx512pf.asm +88 -0
- data/vendor/repo.or.cz/nasm/test/bcd.asm +23 -0
- data/vendor/repo.or.cz/nasm/test/binexe.asm +35 -0
- data/vendor/repo.or.cz/nasm/test/bintest.asm +59 -0
- data/vendor/repo.or.cz/nasm/test/bisect.sh +22 -0
- data/vendor/repo.or.cz/nasm/test/br1879590.asm +25 -0
- data/vendor/repo.or.cz/nasm/test/br2003451.asm +17 -0
- data/vendor/repo.or.cz/nasm/test/br2030823.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/br2148476.asm +221 -0
- data/vendor/repo.or.cz/nasm/test/br2222615.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/br2496848.asm +42 -0
- data/vendor/repo.or.cz/nasm/test/br3005117.asm +26 -0
- data/vendor/repo.or.cz/nasm/test/br3026808.asm +20 -0
- data/vendor/repo.or.cz/nasm/test/br3028880.asm +8 -0
- data/vendor/repo.or.cz/nasm/test/br3041451.asm +59 -0
- data/vendor/repo.or.cz/nasm/test/br3058845.asm +14 -0
- data/vendor/repo.or.cz/nasm/test/br3066383.asm +70 -0
- data/vendor/repo.or.cz/nasm/test/br3074517.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/br3092924.asm +25 -0
- data/vendor/repo.or.cz/nasm/test/br3104312.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/br3109604.asm +9 -0
- data/vendor/repo.or.cz/nasm/test/br3174983.asm +9 -0
- data/vendor/repo.or.cz/nasm/test/br3187743.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/br3189064.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/br3200749.asm +9 -0
- data/vendor/repo.or.cz/nasm/test/br3385573.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/br3392252.asm +43 -0
- data/vendor/repo.or.cz/nasm/test/br3392259.asm +8 -0
- data/vendor/repo.or.cz/nasm/test/br3392363.asm +4 -0
- data/vendor/repo.or.cz/nasm/test/br3392392.asm +16 -0
- data/vendor/repo.or.cz/nasm/test/br3392396.asm +5 -0
- data/vendor/repo.or.cz/nasm/test/br3392411.asm +22 -0
- data/vendor/repo.or.cz/nasm/test/br3392418.asm +3 -0
- data/vendor/repo.or.cz/nasm/test/br3392439.asm +25 -0
- data/vendor/repo.or.cz/nasm/test/br3392442.asm +6 -0
- data/vendor/repo.or.cz/nasm/test/br560575.asm +17 -0
- data/vendor/repo.or.cz/nasm/test/br560873.asm +27 -0
- data/vendor/repo.or.cz/nasm/test/br890790.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/br890790_i.asm +1 -0
- data/vendor/repo.or.cz/nasm/test/br978756.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/changed.asm +383 -0
- data/vendor/repo.or.cz/nasm/test/cofftest.asm +85 -0
- data/vendor/repo.or.cz/nasm/test/cofftest.c +35 -0
- data/vendor/repo.or.cz/nasm/test/crc32.asm +37 -0
- data/vendor/repo.or.cz/nasm/test/cv8struc.asm +14 -0
- data/vendor/repo.or.cz/nasm/test/dtbcd.asm +72 -0
- data/vendor/repo.or.cz/nasm/test/elf64so.asm +118 -0
- data/vendor/repo.or.cz/nasm/test/elfso.asm +100 -0
- data/vendor/repo.or.cz/nasm/test/elftest.asm +87 -0
- data/vendor/repo.or.cz/nasm/test/elftest.c +38 -0
- data/vendor/repo.or.cz/nasm/test/elftest64.c +43 -0
- data/vendor/repo.or.cz/nasm/test/elif.asm +39 -0
- data/vendor/repo.or.cz/nasm/test/expimp.asm +90 -0
- data/vendor/repo.or.cz/nasm/test/far64.asm +10 -0
- data/vendor/repo.or.cz/nasm/test/float.asm +186 -0
- data/vendor/repo.or.cz/nasm/test/float8.asm +135 -0
- data/vendor/repo.or.cz/nasm/test/floatb.asm +35 -0
- data/vendor/repo.or.cz/nasm/test/floatexp.asm +382 -0
- data/vendor/repo.or.cz/nasm/test/floatize.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/floattest.asm +28 -0
- data/vendor/repo.or.cz/nasm/test/floatx.asm +525 -0
- data/vendor/repo.or.cz/nasm/test/fpu.asm +127 -0
- data/vendor/repo.or.cz/nasm/test/fwdopt.asm +133 -0
- data/vendor/repo.or.cz/nasm/test/fwdoptpp.asm +150 -0
- data/vendor/repo.or.cz/nasm/test/gas2nasm.py +104 -0
- data/vendor/repo.or.cz/nasm/test/gather.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/gotoff64.asm +25 -0
- data/vendor/repo.or.cz/nasm/test/hexfp.asm +25 -0
- data/vendor/repo.or.cz/nasm/test/hle.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/ifelse.asm +46 -0
- data/vendor/repo.or.cz/nasm/test/ifenv.asm +31 -0
- data/vendor/repo.or.cz/nasm/test/ifmacro.asm +413 -0
- data/vendor/repo.or.cz/nasm/test/iftoken.asm +317 -0
- data/vendor/repo.or.cz/nasm/test/iftoken.pl +32 -0
- data/vendor/repo.or.cz/nasm/test/ilog2.asm +271 -0
- data/vendor/repo.or.cz/nasm/test/imacro.asm +8 -0
- data/vendor/repo.or.cz/nasm/test/imm.asm +23 -0
- data/vendor/repo.or.cz/nasm/test/imm64.asm +61 -0
- data/vendor/repo.or.cz/nasm/test/immwarn.asm +91 -0
- data/vendor/repo.or.cz/nasm/test/imul.asm +117 -0
- data/vendor/repo.or.cz/nasm/test/inc1.asm +6 -0
- data/vendor/repo.or.cz/nasm/test/inc2.asm +8 -0
- data/vendor/repo.or.cz/nasm/test/incbin.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/incbin.data +2 -0
- data/vendor/repo.or.cz/nasm/test/inctest.asm +15 -0
- data/vendor/repo.or.cz/nasm/test/insnlbl.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/invlpga.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/jmp64.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/lar_lsl.asm +124 -0
- data/vendor/repo.or.cz/nasm/test/larlsl.asm +23 -0
- data/vendor/repo.or.cz/nasm/test/lnxhello.asm +54 -0
- data/vendor/repo.or.cz/nasm/test/local.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/loopoffs.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/lwp.asm +213 -0
- data/vendor/repo.or.cz/nasm/test/macro-defaults.asm +64 -0
- data/vendor/repo.or.cz/nasm/test/macroerr.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/macroerr.inc +3 -0
- data/vendor/repo.or.cz/nasm/test/mmxsize.asm +38 -0
- data/vendor/repo.or.cz/nasm/test/movd.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/movd64.asm +15 -0
- data/vendor/repo.or.cz/nasm/test/movimm.asm +28 -0
- data/vendor/repo.or.cz/nasm/test/movnti.asm +10 -0
- data/vendor/repo.or.cz/nasm/test/mpx-64.asm +120 -0
- data/vendor/repo.or.cz/nasm/test/mpx.asm +89 -0
- data/vendor/repo.or.cz/nasm/test/multisection.asm +96 -0
- data/vendor/repo.or.cz/nasm/test/nasmformat.asm +17 -0
- data/vendor/repo.or.cz/nasm/test/new +9 -0
- data/vendor/repo.or.cz/nasm/test/newrdwr.asm +24 -0
- data/vendor/repo.or.cz/nasm/test/nop.asm +17 -0
- data/vendor/repo.or.cz/nasm/test/nullfile.asm +4 -0
- data/vendor/repo.or.cz/nasm/test/objexe.asm +30 -0
- data/vendor/repo.or.cz/nasm/test/objlink.c +33 -0
- data/vendor/repo.or.cz/nasm/test/objtest.asm +85 -0
- data/vendor/repo.or.cz/nasm/test/optimization.asm +104 -0
- data/vendor/repo.or.cz/nasm/test/org.asm +18 -0
- data/vendor/repo.or.cz/nasm/test/paste.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/pcrel.asm +52 -0
- data/vendor/repo.or.cz/nasm/test/perf/label.pl +18 -0
- data/vendor/repo.or.cz/nasm/test/perf/macro.pl +18 -0
- data/vendor/repo.or.cz/nasm/test/perf/token.pl +23 -0
- data/vendor/repo.or.cz/nasm/test/performtest.pl +192 -0
- data/vendor/repo.or.cz/nasm/test/pextrw.asm +3 -0
- data/vendor/repo.or.cz/nasm/test/pinsr16.asm +53 -0
- data/vendor/repo.or.cz/nasm/test/pinsr32.asm +53 -0
- data/vendor/repo.or.cz/nasm/test/pinsr64.asm +68 -0
- data/vendor/repo.or.cz/nasm/test/popcnt.asm +32 -0
- data/vendor/repo.or.cz/nasm/test/ppindirect.asm +42 -0
- data/vendor/repo.or.cz/nasm/test/pragma.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/prefix66.asm +28 -0
- data/vendor/repo.or.cz/nasm/test/ptr.asm +4 -0
- data/vendor/repo.or.cz/nasm/test/pushseg.asm +17 -0
- data/vendor/repo.or.cz/nasm/test/r13.asm +15 -0
- data/vendor/repo.or.cz/nasm/test/radix.asm +54 -0
- data/vendor/repo.or.cz/nasm/test/rdpid.asm +21 -0
- data/vendor/repo.or.cz/nasm/test/reldef.asm +57 -0
- data/vendor/repo.or.cz/nasm/test/relocs.asm +20 -0
- data/vendor/repo.or.cz/nasm/test/riprel.asm +5357 -0
- data/vendor/repo.or.cz/nasm/test/riprel.pl +29 -0
- data/vendor/repo.or.cz/nasm/test/riprel2.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/sha-64.asm +30 -0
- data/vendor/repo.or.cz/nasm/test/sha.asm +31 -0
- data/vendor/repo.or.cz/nasm/test/smartalign16.asm +36 -0
- data/vendor/repo.or.cz/nasm/test/smartalign32.asm +36 -0
- data/vendor/repo.or.cz/nasm/test/smartalign64.asm +36 -0
- data/vendor/repo.or.cz/nasm/test/splitea.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/sreg.asm +65 -0
- data/vendor/repo.or.cz/nasm/test/strlen.asm +5 -0
- data/vendor/repo.or.cz/nasm/test/struc.asm +33 -0
- data/vendor/repo.or.cz/nasm/test/test67.asm +38 -0
- data/vendor/repo.or.cz/nasm/test/testdos.asm +13 -0
- data/vendor/repo.or.cz/nasm/test/testnos3.asm +973 -0
- data/vendor/repo.or.cz/nasm/test/time.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/times.asm +21 -0
- data/vendor/repo.or.cz/nasm/test/timesneg.asm +3 -0
- data/vendor/repo.or.cz/nasm/test/tmap.nas +1447 -0
- data/vendor/repo.or.cz/nasm/test/uscore.asm +15 -0
- data/vendor/repo.or.cz/nasm/test/utf.asm +82 -0
- data/vendor/repo.or.cz/nasm/test/vaesenc.asm +22 -0
- data/vendor/repo.or.cz/nasm/test/vex.asm +9 -0
- data/vendor/repo.or.cz/nasm/test/vgather.asm +76 -0
- data/vendor/repo.or.cz/nasm/test/vmread.asm +26 -0
- data/vendor/repo.or.cz/nasm/test/weirdpaste.asm +29 -0
- data/vendor/repo.or.cz/nasm/test/xchg.asm +96 -0
- data/vendor/repo.or.cz/nasm/test/xcrypt.asm +24 -0
- data/vendor/repo.or.cz/nasm/test/xmm0.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/zerobyte.asm +22 -0
- data/vendor/repo.or.cz/nasm/tools/cleanfile +176 -0
- data/vendor/repo.or.cz/nasm/tools/cleanpatch +258 -0
- data/vendor/repo.or.cz/nasm/tools/mkdep.pl +261 -0
- data/vendor/repo.or.cz/nasm/tools/release +105 -0
- data/vendor/repo.or.cz/nasm/tools/syncfiles.pl +137 -0
- data/vendor/repo.or.cz/nasm/tools/tag-release +58 -0
- data/vendor/repo.or.cz/nasm/version +1 -0
- data/vendor/repo.or.cz/nasm/version.pl +189 -0
- data/vendor/repo.or.cz/nasm/x86/disp8.c +131 -0
- data/vendor/repo.or.cz/nasm/x86/insns-iflags.ph +280 -0
- data/vendor/repo.or.cz/nasm/x86/insns.dat +5371 -0
- data/vendor/repo.or.cz/nasm/x86/insns.pl +1043 -0
- data/vendor/repo.or.cz/nasm/x86/regs.dat +138 -0
- data/vendor/repo.or.cz/nasm/x86/regs.pl +204 -0
- metadata +520 -0
@@ -0,0 +1,45 @@
|
|
1
|
+
/* ----------------------------------------------------------------------- *
|
2
|
+
*
|
3
|
+
* Copyright 1996-2009 The NASM Authors - All Rights Reserved
|
4
|
+
* See the file AUTHORS included with the NASM distribution for
|
5
|
+
* the specific copyright holders.
|
6
|
+
*
|
7
|
+
* Redistribution and use in source and binary forms, with or without
|
8
|
+
* modification, are permitted provided that the following
|
9
|
+
* conditions are met:
|
10
|
+
*
|
11
|
+
* * Redistributions of source code must retain the above copyright
|
12
|
+
* notice, this list of conditions and the following disclaimer.
|
13
|
+
* * Redistributions in binary form must reproduce the above
|
14
|
+
* copyright notice, this list of conditions and the following
|
15
|
+
* disclaimer in the documentation and/or other materials provided
|
16
|
+
* with the distribution.
|
17
|
+
*
|
18
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
19
|
+
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
20
|
+
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
21
|
+
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
22
|
+
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
23
|
+
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
24
|
+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
25
|
+
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
26
|
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
27
|
+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
28
|
+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
29
|
+
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
30
|
+
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
31
|
+
*
|
32
|
+
* ----------------------------------------------------------------------- */
|
33
|
+
|
34
|
+
/*
|
35
|
+
* sync.h header file for sync.c
|
36
|
+
*/
|
37
|
+
|
38
|
+
#ifndef NASM_SYNC_H
|
39
|
+
#define NASM_SYNC_H
|
40
|
+
|
41
|
+
void init_sync(void);
|
42
|
+
void add_sync(uint64_t position, uint32_t length);
|
43
|
+
uint64_t next_sync(uint64_t position, uint32_t *length);
|
44
|
+
|
45
|
+
#endif
|
@@ -0,0 +1,86 @@
|
|
1
|
+
#
|
2
|
+
# UNIX Makefile for NASM documentation
|
3
|
+
#
|
4
|
+
|
5
|
+
top_srcdir = @top_srcdir@
|
6
|
+
srcdir = @srcdir@
|
7
|
+
VPATH = @srcdir@
|
8
|
+
prefix = @prefix@
|
9
|
+
exec_prefix = @exec_prefix@
|
10
|
+
bindir = @bindir@
|
11
|
+
mandir = @mandir@
|
12
|
+
docdir = $(prefix)/doc/nasm
|
13
|
+
infodir = @infodir@
|
14
|
+
datarootdir = @datarootdir@
|
15
|
+
|
16
|
+
INSTALL = @INSTALL@
|
17
|
+
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
18
|
+
INSTALL_DATA = @INSTALL_DATA@
|
19
|
+
|
20
|
+
PERL = perl -I$(srcdir)
|
21
|
+
|
22
|
+
PDFOPT = @PDFOPT@
|
23
|
+
|
24
|
+
RM_F = rm -f
|
25
|
+
RM_RF = rm -rf
|
26
|
+
CP_F = cp -f
|
27
|
+
CP_UF = cp -ufv
|
28
|
+
|
29
|
+
# Auxiliary files referenced by the HTML files
|
30
|
+
HTMLAUX = nasmdoc.css local.css nasmlogw.png
|
31
|
+
|
32
|
+
SRCS = nasmdoc.src inslist.src changes.src version.src
|
33
|
+
OUT = html nasmdoc.txt nasmdoc.pdf
|
34
|
+
|
35
|
+
.SUFFIXES: .pfa .ph
|
36
|
+
|
37
|
+
all: $(OUT)
|
38
|
+
|
39
|
+
inslist.src: inslist.pl ../x86/insns.dat
|
40
|
+
$(PERL) $(srcdir)/inslist.pl $(srcdir)/../x86/insns.dat
|
41
|
+
|
42
|
+
.PHONY: html
|
43
|
+
html: $(HTMLAUX)
|
44
|
+
mkdir -p html
|
45
|
+
for f in $(HTMLAUX); do $(CP_UF) "$(srcdir)/$$f" html/; done
|
46
|
+
$(MAKE) html/nasmdoc0.html
|
47
|
+
|
48
|
+
RDSRC = $(PERL) $(srcdir)/rdsrc.pl -I$(srcdir)/
|
49
|
+
|
50
|
+
html/nasmdoc0.html: $(SRCS) rdsrc.pl
|
51
|
+
$(RM_F) html/*.html
|
52
|
+
$(RDSRC) -ohtml html nasmdoc.src
|
53
|
+
|
54
|
+
nasmdoc.dip: $(SRCS) rdsrc.pl
|
55
|
+
$(RDSRC) dip nasmdoc.src
|
56
|
+
|
57
|
+
nasmdoc.txt: $(SRCS) rdsrc.pl
|
58
|
+
$(RDSRC) txt nasmdoc.src
|
59
|
+
|
60
|
+
version.src: $(top_srcdir)/version.pl $(top_srcdir)/version
|
61
|
+
$(PERL) $(top_srcdir)/version.pl docsrc \
|
62
|
+
< $(top_srcdir)/version > version.src
|
63
|
+
|
64
|
+
nasmdoc.ps: nasmdoc.dip genps.pl afmmetrics.ph ttfmetrics.ph \
|
65
|
+
pswidth.ph nasmlogo.eps psfonts.ph head.ps
|
66
|
+
$(PERL) $(srcdir)/genps.pl -epsdir "$(srcdir)" \
|
67
|
+
-headps $(srcdir)/head.ps nasmdoc.dip \
|
68
|
+
> nasmdoc.ps
|
69
|
+
|
70
|
+
nasmdoc.pdf: nasmdoc.ps pspdf.pl
|
71
|
+
$(PERL) $(srcdir)/pspdf.pl $(PDFOPT) nasmdoc.ps nasmdoc.pdf
|
72
|
+
|
73
|
+
clean:
|
74
|
+
-$(RM_F) *.rtf *.hpj *.texi *.gid *.ipf *.dip
|
75
|
+
-$(RM_F) *.aux *.cp *.fn *.ky *.pg *.log *.toc *.tp *.vr
|
76
|
+
-$(RM_F) inslist.src version.src
|
77
|
+
-$(RM_F) nasmdoc*.ps
|
78
|
+
|
79
|
+
spotless: clean
|
80
|
+
-$(RM_RF) html info
|
81
|
+
-$(RM_F) *.hlp nasmdoc.txt *.inf *.pdf *.dvi
|
82
|
+
|
83
|
+
install: all
|
84
|
+
mkdir -p $(INSTALLROOT)$(docdir)/html
|
85
|
+
$(INSTALL_DATA) html/* $(INSTALLROOT)$(docdir)/html
|
86
|
+
$(INSTALL_DATA) nasmdoc.pdf nasmdoc.txt $(INSTALLROOT)$(docdir)
|
@@ -0,0 +1,20 @@
|
|
1
|
+
To build the entire documentation, the following tools are needed:
|
2
|
+
|
3
|
+
1. A Perl interpreter for your platform
|
4
|
+
2. The following Perl modules available from CPAN:
|
5
|
+
Font::TTF
|
6
|
+
Sort::Versions
|
7
|
+
3. asciidoc
|
8
|
+
http://asciidoc.org/
|
9
|
+
4. xmlto
|
10
|
+
https://fedorahosted.org/xmlto
|
11
|
+
5. One of:
|
12
|
+
Adobe Acrobat (acrodist)
|
13
|
+
Ghostscript (ps2pdf) http://download.ghostscript.com/
|
14
|
+
pstopdf (available on some BSD-derived Unix systems)
|
15
|
+
|
16
|
+
Of these, Ghostscript is the most tested, although Acrobat has
|
17
|
+
been claimed to generate smaller files.
|
18
|
+
6. For best results, the Adobe fonts Source Sans Pro and Source Code
|
19
|
+
Pro, available for free at:
|
20
|
+
https://github.com/adobe-fonts
|
@@ -0,0 +1,102 @@
|
|
1
|
+
#!/usr/bin/perl
|
2
|
+
## --------------------------------------------------------------------------
|
3
|
+
##
|
4
|
+
## Copyright 1996-2017 The NASM Authors - All Rights Reserved
|
5
|
+
## See the file AUTHORS included with the NASM distribution for
|
6
|
+
## the specific copyright holders.
|
7
|
+
##
|
8
|
+
## Redistribution and use in source and binary forms, with or without
|
9
|
+
## modification, are permitted provided that the following
|
10
|
+
## conditions are met:
|
11
|
+
##
|
12
|
+
## * Redistributions of source code must retain the above copyright
|
13
|
+
## notice, this list of conditions and the following disclaimer.
|
14
|
+
## * Redistributions in binary form must reproduce the above
|
15
|
+
## copyright notice, this list of conditions and the following
|
16
|
+
## disclaimer in the documentation and/or other materials provided
|
17
|
+
## with the distribution.
|
18
|
+
##
|
19
|
+
## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
20
|
+
## CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
21
|
+
## INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
22
|
+
## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
23
|
+
## DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
24
|
+
## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
25
|
+
## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
26
|
+
## NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
27
|
+
## LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
28
|
+
## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
29
|
+
## CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
30
|
+
## OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
31
|
+
## EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
32
|
+
##
|
33
|
+
## --------------------------------------------------------------------------
|
34
|
+
|
35
|
+
#
|
36
|
+
# Parse AFM metric file, returns a reference to fontdata
|
37
|
+
#
|
38
|
+
sub parse_afm_file($$) {
|
39
|
+
my($filename, $filetype) = @_;
|
40
|
+
|
41
|
+
my $fontdata = {
|
42
|
+
widths => {},
|
43
|
+
kern => {}
|
44
|
+
};
|
45
|
+
|
46
|
+
my $charmetrics = 0;
|
47
|
+
my $kerndata = 0;
|
48
|
+
my $charcode, $width, $name;
|
49
|
+
|
50
|
+
my $fontfile = $filename.'.'.$filetype;
|
51
|
+
return undef unless ( -f $fontfile );
|
52
|
+
|
53
|
+
$fontdata->{file} = $fontfile;
|
54
|
+
$fontdata->{type} = $filetype;
|
55
|
+
$fontdata->{scale} = 1000; # AFM metrics always have scale 1000
|
56
|
+
|
57
|
+
return undef unless (open(my $fh, '<', $filename.'.afm'));
|
58
|
+
|
59
|
+
while ( my $line = <$fh> ) {
|
60
|
+
if ( $line =~ /^\s*FontName\s+(.*)\s*$/i ) {
|
61
|
+
$fontdata->{'name'} = $1;
|
62
|
+
} elsif ( $line =~ /^\s*StartCharMetrics\b/i ) {
|
63
|
+
$charmetrics = 1;
|
64
|
+
} elsif ( $line =~ /^\s*EndCharMetrics\b/i ) {
|
65
|
+
$charmetrics = 0;
|
66
|
+
} elsif ( $line =~ /^\s*StartKernPairs\b/i ) {
|
67
|
+
$kerndata = 1;
|
68
|
+
} elsif ( $line =~ /^\s*EndKernPairs\b/i ) {
|
69
|
+
$kerndata = 0;
|
70
|
+
} elsif ( $charmetrics ) {
|
71
|
+
my @data = split(/\s*;\s*/, $line);
|
72
|
+
undef $charcode, $width, $name;
|
73
|
+
foreach my $d ( @data ) {
|
74
|
+
my @dd = split(/\s+/, $d);
|
75
|
+
if ( $dd[0] eq 'C' ) {
|
76
|
+
$charcode = $dd[1];
|
77
|
+
} elsif ( $dd[0] eq 'WX' ) {
|
78
|
+
$width = $dd[1];
|
79
|
+
} elsif ( $dd[0] eq 'W' ) {
|
80
|
+
$width = $dd[2];
|
81
|
+
} elsif ( $dd[0] eq 'N' ) {
|
82
|
+
$name = $dd[1];
|
83
|
+
}
|
84
|
+
}
|
85
|
+
if ( defined($name) && defined($width) ) {
|
86
|
+
$fontdata->{widths}{$name} = $width;
|
87
|
+
}
|
88
|
+
} elsif ( $kerndata ) {
|
89
|
+
my($kpx, $a, $b, $adj) = split(/\s+/, $line);
|
90
|
+
if ( $kpx eq 'KPX' ) {
|
91
|
+
if (!exists($fontdata->{kern}{$a})) {
|
92
|
+
$fontdata->{kern}{$a} = {};
|
93
|
+
}
|
94
|
+
$fontdata->{kern}{$a}{$b} = $adj;
|
95
|
+
}
|
96
|
+
}
|
97
|
+
}
|
98
|
+
|
99
|
+
return $fontdata;
|
100
|
+
}
|
101
|
+
|
102
|
+
1;
|
@@ -0,0 +1,2588 @@
|
|
1
|
+
\#
|
2
|
+
\# NASM revision history in nasmdoc format
|
3
|
+
\#
|
4
|
+
|
5
|
+
\H{cl-2.xx} NASM 2 Series
|
6
|
+
|
7
|
+
The NASM 2 series supports x86-64, and is the production version of NASM
|
8
|
+
since 2007.
|
9
|
+
|
10
|
+
\S{cl-2.13.03} Version 2.13.03
|
11
|
+
|
12
|
+
\b Added AVX and AVX512 \c{VAES*} and \c{VPCLMULQDQ} instructions.
|
13
|
+
|
14
|
+
\b Fixed missing dwarf record in x32 ELF output format.
|
15
|
+
|
16
|
+
\S{cl-2.13.02} Version 2.13.02
|
17
|
+
|
18
|
+
\b Fix false positive in testing of numeric overflows.
|
19
|
+
|
20
|
+
\b Fix generation of \c{PEXTRW} instruction.
|
21
|
+
|
22
|
+
\b Fix \c{smartalign} package which could trigger an error during
|
23
|
+
optimization if the alignment code expanded too much due to
|
24
|
+
optimization of the previous code.
|
25
|
+
|
26
|
+
\b Fix a case where negative value in \c{TIMES} directive causes
|
27
|
+
panic instead of an error.
|
28
|
+
|
29
|
+
\b Always finalize \c{.debug_abbrev} section with a null in
|
30
|
+
\c{dwarf} output format.
|
31
|
+
|
32
|
+
\b Support \c{debug} flag in section attributes for \c{macho}
|
33
|
+
output format. See \k{machosect}.
|
34
|
+
|
35
|
+
\b Support up to 16 characters in section names for \c{macho}
|
36
|
+
output format.
|
37
|
+
|
38
|
+
\b Fix missing update of global \c{BITS} setting if \c{SECTION}
|
39
|
+
directive specified a bit size using output format-specific
|
40
|
+
extensions (e.g. \c{USE32} for the \c{obj} output format.)
|
41
|
+
|
42
|
+
\b Fix the incorrect generation of VEX-encoded instruction when static
|
43
|
+
mode decorators are specified on scalar instructions, losing the
|
44
|
+
decorators as they require EVEX encoding.
|
45
|
+
|
46
|
+
\b Option \c{-MW} to quote dependency outputs according to Watcom
|
47
|
+
Make conventions instead of POSIX Make conventions. See \k{opt-MW}.
|
48
|
+
|
49
|
+
\b The \c{obj} output format now contains embedded dependency file
|
50
|
+
information, unless disabled with \c{%pragma obj nodepend}. See
|
51
|
+
\k{objdepend}.
|
52
|
+
|
53
|
+
\b Fix generation of dependency lists.
|
54
|
+
|
55
|
+
\b Fix a number of null pointer reference and memory allocation errors.
|
56
|
+
|
57
|
+
\b Always generate symbol-relative relocations for the \c{macho64}
|
58
|
+
output format; at least some versions of the XCode/LLVM linker fails
|
59
|
+
for section-relative relocations.
|
60
|
+
|
61
|
+
\S{cl-2.13.01} Version 2.13.01
|
62
|
+
|
63
|
+
\b Fix incorrect output for some types of \c{FAR} or \c{SEG}
|
64
|
+
references in the \c{obj} output format, and possibly other 16-bit
|
65
|
+
output formats.
|
66
|
+
|
67
|
+
\b Fix the address in the list file for an instruction containing a
|
68
|
+
\c{TIMES} directive.
|
69
|
+
|
70
|
+
\b Fix error with \c{TIMES} used together with an instruction which
|
71
|
+
can vary in size, e.g. \c{JMP}.
|
72
|
+
|
73
|
+
\b Fix breakage on some uses of the \c{DZ} pseudo-op.
|
74
|
+
|
75
|
+
\S{cl-2.13} Version 2.13
|
76
|
+
|
77
|
+
\b Support the official forms of the \c{UD0} and \c{UD1} instructions.
|
78
|
+
|
79
|
+
\b Allow self-segment-relative expressions in immediates and
|
80
|
+
displacements, even when combined with an external or otherwise
|
81
|
+
out-of-segment special symbol, e.g.:
|
82
|
+
|
83
|
+
\c extern foo
|
84
|
+
\c mov eax,[foo - $ + ebx] ; Now legal
|
85
|
+
|
86
|
+
\b Handle a 64-bit origin in NDISASM.
|
87
|
+
|
88
|
+
\b NASM can now generate sparse output files for relevant output
|
89
|
+
formats, if the underlying operating system supports them.
|
90
|
+
|
91
|
+
\b The \c{macho} object format now supports the \c{subsections_via_symbols}
|
92
|
+
and \c{no_dead_strip} directives, see \k{macho-ssvs}.
|
93
|
+
|
94
|
+
\b The \c{macho} object format now supports the \c{no_dead_strip},
|
95
|
+
\c{live_support} and \c{strip_static_syms} section flags, see
|
96
|
+
\k{machosect}.
|
97
|
+
|
98
|
+
\b The \c{macho} object format now supports the \c{dwarf} debugging
|
99
|
+
format, as required by newer toolchains.
|
100
|
+
|
101
|
+
\b All warnings can now be suppressed if desired; warnings not
|
102
|
+
otherwise part of any warning class are now considered its own
|
103
|
+
warning class called \c{other} (e.g. \c{-w-other}). Furthermore,
|
104
|
+
warning-as-error can now be controlled on a per warning class
|
105
|
+
basis, using the syntax \c{-w+error=}\e{warning-class} and its
|
106
|
+
equivalent for all other warning control options. See \k{opt-w}
|
107
|
+
for the command-line options and warning classes and
|
108
|
+
\k{asmdir-warning} for the \c{[WARNING]} directive.
|
109
|
+
|
110
|
+
\b Fix a number of bugs related to AVX-512 decorators.
|
111
|
+
|
112
|
+
\b Significant improvements to building NASM with Microsoft Visual
|
113
|
+
Studio via \c{Mkfiles/msvc.mak}. It is now possible to build the
|
114
|
+
full Windows installer binary as long as the necessary
|
115
|
+
prerequisites are installed; see \c{Mkfiles/README}
|
116
|
+
|
117
|
+
\b To build NASM with custom modifications (table changes) or from the
|
118
|
+
git tree now requires Perl 5.8 at the very minimum, quite possibly
|
119
|
+
a higher version (Perl 5.24.1 tested.) There is no requirement to
|
120
|
+
have Perl on your system at all if all you want to do is build
|
121
|
+
unmodified NASM from source archives.
|
122
|
+
|
123
|
+
\b Fix the \c{\{z\}} decorator on AVX-512 \c{VMOVDQ*} instructions.
|
124
|
+
|
125
|
+
\b Add new warnings for certain dangerous constructs which never ought
|
126
|
+
to have been allowed. In particular, the \c{RESB} family of
|
127
|
+
instructions should have been taking a critical expression all
|
128
|
+
along.
|
129
|
+
|
130
|
+
\b Fix the EVEX (AVX-512) versions of the \c{VPBROADCAST}, \c{VPEXTR},
|
131
|
+
and \c{VPINSR} instructions.
|
132
|
+
|
133
|
+
\b Support contracted forms of additional instructions. As a general
|
134
|
+
rule, if an instruction has a non-destructive source immediately
|
135
|
+
after a destination register that isn't used as an input, NASM
|
136
|
+
supports omitting that source register, using the destination
|
137
|
+
register as that value. This among other things makes it easier to
|
138
|
+
convert SSE code to the equivalent AVX code:
|
139
|
+
|
140
|
+
\c addps xmm1,xmm0 ; SSE instruction
|
141
|
+
\c vaddps ymm1,ymm1,ymm0 ; AVX official long form
|
142
|
+
\c vaddps ymm1,ymm0 ; AVX contracted form
|
143
|
+
|
144
|
+
\b Fix Codeview malformed compiler version record.
|
145
|
+
|
146
|
+
\b Add the \c{CLWB} and \c{PCOMMIT} instructions. Note that the
|
147
|
+
\c{PCOMMIT} instruction has been deprecated and will never be
|
148
|
+
included in a shipping product; it is included for completeness
|
149
|
+
only.
|
150
|
+
|
151
|
+
\b Add the \c{%pragma} preprocessor directive for soft-error directives.
|
152
|
+
|
153
|
+
\b Add the \c{RDPID} instruction.
|
154
|
+
|
155
|
+
\S{cl-2.12.02} Version 2.12.02
|
156
|
+
|
157
|
+
\b Fix preprocessor errors, especially \c{%error} and \c{%warning},
|
158
|
+
inside \c{%if} statements.
|
159
|
+
|
160
|
+
\b Fix relative relocations in 32-bit Mach-O.
|
161
|
+
|
162
|
+
\b More Codeview debug format fixes.
|
163
|
+
|
164
|
+
\b If the MASM \c{PTR} keyword is encountered, issue a warning. This is
|
165
|
+
much more likely to indicate a MASM-ism encountered in NASM than it
|
166
|
+
is a valid label. This warning can be suppressed with \c{-w-ptr},
|
167
|
+
the \c{[warning]} directive (see \k{opt-w}) or by the macro
|
168
|
+
definition \c{%idefine ptr $%?} (see \k{selfref%?}).
|
169
|
+
|
170
|
+
\b When an error or a warning comes from the expansion of a multi-line
|
171
|
+
macro, display the file and line numbers for the expanded macros.
|
172
|
+
Macros defined with \c{.nolist} do not get displayed.
|
173
|
+
|
174
|
+
\b Add macros \c{ilog2fw()} and \c{ilog2cw()} to the \c{ifunc} macro
|
175
|
+
package. See \k{ilog2}.
|
176
|
+
|
177
|
+
|
178
|
+
\S{cl-2.12.01} Version 2.12.01
|
179
|
+
|
180
|
+
\b Portability fixes for some platforms.
|
181
|
+
|
182
|
+
\b Fix error when not specifying a list file.
|
183
|
+
|
184
|
+
\b Correct the handling of macro-local labels in the Codeview
|
185
|
+
debugging format.
|
186
|
+
|
187
|
+
\b Add \c{CLZERO}, \c{MONITORX} and \c{MWAITX} instructions.
|
188
|
+
|
189
|
+
|
190
|
+
\S{cl-2.12} Version 2.12
|
191
|
+
|
192
|
+
\b Major fixes to the \c{macho} backend (\k{machofmt}); earlier versions
|
193
|
+
would produce invalid symbols and relocations on a regular basis.
|
194
|
+
|
195
|
+
\b Support for thread-local storage in Mach-O.
|
196
|
+
|
197
|
+
\b Support for arbitrary sections in Mach-O.
|
198
|
+
|
199
|
+
\b Fix wrong negative size treated as a big positive value passed into
|
200
|
+
backend causing NASM to crash.
|
201
|
+
|
202
|
+
\b Fix handling of zero-extending unsigned relocations, we have been printing
|
203
|
+
wrong message and forgot to assign segment with predefined value before
|
204
|
+
passing it into output format.
|
205
|
+
|
206
|
+
\b Fix potential write of oversized (with size greater than allowed in
|
207
|
+
output format) relative relocations.
|
208
|
+
|
209
|
+
\b Portability fixes for building NASM with the LLVM compiler.
|
210
|
+
|
211
|
+
\b Add support of Codeview version 8 (\c{cv8}) debug format for
|
212
|
+
\c{win32} and \c{win64} formats in the \c{COFF} backend,
|
213
|
+
see \k{codeview}.
|
214
|
+
|
215
|
+
\b Allow 64-bit outputs in 16/32-bit only backends. Unsigned 64-bit
|
216
|
+
relocations are zero-extended from 32-bits with a warning
|
217
|
+
(suppressible via \c{-w-zext-reloc}); signed 64-bit relocations are
|
218
|
+
an error.
|
219
|
+
|
220
|
+
\b Line numbers in list files now correspond to the lines in the source
|
221
|
+
files, instead of simply being sequential.
|
222
|
+
|
223
|
+
\b There is now an official 64-bit (x64 a.k.a. x86-64) build for Windows.
|
224
|
+
|
225
|
+
|
226
|
+
\S{cl-2.11.09} Version 2.11.09
|
227
|
+
|
228
|
+
\b Fix potential stack overwrite in \c{macho32} backend.
|
229
|
+
|
230
|
+
\b Fix relocation records in \c{macho64} backend.
|
231
|
+
|
232
|
+
\b Fix symbol lookup computation in \c{macho64} backend.
|
233
|
+
|
234
|
+
\b Adjust \c{.symtab} and \c{.rela.text} sections alignments to 8 bytes
|
235
|
+
in \c{elf64} backed.
|
236
|
+
|
237
|
+
\b Fix section length computation in \c{bin} backend which leaded in incorrect
|
238
|
+
relocation records.
|
239
|
+
|
240
|
+
\S{cl-2.11.08} Version 2.11.08
|
241
|
+
|
242
|
+
\b Fix section length computation in \c{bin} backend which leaded in incorrect
|
243
|
+
relocation records.
|
244
|
+
|
245
|
+
\b Add a warning for numeric preprocessor definitions passed via command
|
246
|
+
line which might have unexpected results otherwise.
|
247
|
+
|
248
|
+
\b Add ability to specify a module name record in \c{rdoff} linker with
|
249
|
+
\c{-mn} option.
|
250
|
+
|
251
|
+
\b Increase label length capacity up to 256 bytes in \c{rdoff} backend for
|
252
|
+
FreePascal sake, which tends to generate very long labels for procedures.
|
253
|
+
|
254
|
+
\b Fix segmentation failure when rip addressing is used in \c{macho64} backend.
|
255
|
+
|
256
|
+
\b Fix access on out of memory when handling strings with a single
|
257
|
+
grave. We have sixed similar problem in previous release but not
|
258
|
+
all cases were covered.
|
259
|
+
|
260
|
+
\b Fix NULL dereference in disassembled on \c{BND} instruction.
|
261
|
+
|
262
|
+
\S{cl-2.11.07} Version 2.11.07
|
263
|
+
|
264
|
+
\b Fix 256 bit \c{VMOVNTPS} instruction.
|
265
|
+
|
266
|
+
\b Fix \c{-MD} option handling, which was rather broken in previous
|
267
|
+
release changing command line api.
|
268
|
+
|
269
|
+
\b Fix access to unitialized space when handling strings with
|
270
|
+
a single grave.
|
271
|
+
|
272
|
+
\b Fix nil dereference in handling memory reference parsing.
|
273
|
+
|
274
|
+
\S{cl-2.11.06} Version 2.11.06
|
275
|
+
|
276
|
+
\b Update AVX512 instructions based on the Extension Reference (319433-021 Sept
|
277
|
+
2014).
|
278
|
+
|
279
|
+
\b Fix the behavior of \c{-MF} and \c{-MD} options (Bugzilla 3392280)
|
280
|
+
|
281
|
+
\b Updated Win32 Makefile to fix issue with build
|
282
|
+
|
283
|
+
\S{cl-2.11.05} Version 2.11.05
|
284
|
+
|
285
|
+
\b Add \c{--v} as an alias for \c{-v} (see \k{opt-v}), for
|
286
|
+
command-line compatibility with Yasm.
|
287
|
+
|
288
|
+
\b Fix a bug introduced in 2.11.03 whereby certain instructions would
|
289
|
+
contain multiple REX prefixes, and thus be corrupt.
|
290
|
+
|
291
|
+
\S{cl-2.11.04} Version 2.11.04
|
292
|
+
|
293
|
+
\b Removed an invalid error checking code. Sometimes a memref only with
|
294
|
+
a displacement can also set an evex flag. For example:
|
295
|
+
|
296
|
+
\c vmovdqu32 [0xabcd]{k1}, zmm0
|
297
|
+
|
298
|
+
\b Fixed a bug in disassembler that EVEX.L'L vector length was not matched
|
299
|
+
when EVEX.b was set because it was simply considered as EVEC.RC.
|
300
|
+
Separated EVEX.L'L case from EVEX.RC which is ignored in matching.
|
301
|
+
|
302
|
+
\S{cl-2.11.03} Version 2.11.03
|
303
|
+
|
304
|
+
\b Fix a bug there REX prefixes were missing on instructions inside a
|
305
|
+
\c{TIMES} statement.
|
306
|
+
|
307
|
+
\S{cl-2.11.02} Version 2.11.02
|
308
|
+
|
309
|
+
\b Add the \c{XSAVEC}, \c{XSAVES} and \c{XRSTORS} family instructions.
|
310
|
+
|
311
|
+
\b Add the \c{CLFLUSHOPT} instruction.
|
312
|
+
|
313
|
+
\S{cl-2.11.01} Version 2.11.01
|
314
|
+
|
315
|
+
\b Allow instructions which implicitly uses \c{XMM0} (\c{VBLENDVPD},
|
316
|
+
\c{VBLENDVPS}, \c{PBLENDVB} and \c{SHA256RNDS2}) to be specified
|
317
|
+
without an explicit \c{xmm0} on the assembly line. In other words,
|
318
|
+
the following two lines produce the same output:
|
319
|
+
|
320
|
+
\c vblendvpd xmm2,xmm1,xmm0 ; Last operand is fixed xmm0
|
321
|
+
\c vblendvpd xmm2,xmm1 ; Implicit xmm0 omitted
|
322
|
+
|
323
|
+
\b In the ELF backends, don't crash the assembler if \c{section align}
|
324
|
+
is specified without a value.
|
325
|
+
|
326
|
+
\S{cl-2.11} Version 2.11
|
327
|
+
|
328
|
+
\b Add support for the Intel AVX-512 instruction set:
|
329
|
+
|
330
|
+
\b 16 new, 512-bit SIMD registers. Total 32 \c{(ZMM0 ~ ZMM31)}
|
331
|
+
|
332
|
+
\b 8 new opmask registers \c{(K0 ~ K7)}. One of 7 registers \c{(K1 ~ K7)} can
|
333
|
+
be used as an opmask for conditional execution.
|
334
|
+
|
335
|
+
\b A new EVEX encoding prefix. EVEX is based on VEX and provides more
|
336
|
+
capabilities: opmasks, broadcasting, embedded rounding and compressed
|
337
|
+
displacements.
|
338
|
+
|
339
|
+
\c - opmask
|
340
|
+
\c VDIVPD zmm0{k1}{z}, zmm1, zmm3 ; conditional vector operation
|
341
|
+
\c ; using opmask k1.
|
342
|
+
\c ; {z} is for zero-masking
|
343
|
+
\c - broadcasting
|
344
|
+
\c VDIVPS zmm4, zmm5, [rbx]{1to16} ; load single-precision float and
|
345
|
+
\c ; replicate it 16 times. 32 * 16 = 512
|
346
|
+
\c - embedded rounding
|
347
|
+
\c VCVTSI2SD xmm6, xmm7, {rz-sae}, rax ; round toward zero. note that it
|
348
|
+
\c ; is used as if a separate operand.
|
349
|
+
\c ; it comes after the last SIMD operand
|
350
|
+
|
351
|
+
\b Add support for \c{ZWORD} (512 bits), \c{DZ} and \c{RESZ}.
|
352
|
+
|
353
|
+
\b Add support for the MPX and SHA instruction sets.
|
354
|
+
|
355
|
+
\b Better handling of section redefinition.
|
356
|
+
|
357
|
+
\b Generate manpages when running \c{'make dist'}.
|
358
|
+
|
359
|
+
\b Handle all token chains in mmacro params range.
|
360
|
+
|
361
|
+
\b Support split [base,index] effective address:
|
362
|
+
|
363
|
+
\c mov eax,[eax+8,ecx*4] ; eax=base, ecx=index, 4=scale, 8=disp
|
364
|
+
|
365
|
+
This is expected to be most useful for the MPX instructions.
|
366
|
+
|
367
|
+
\b Support \c{BND} prefix for branch instructions (for MPX).
|
368
|
+
|
369
|
+
\b The \c{DEFAULT} directive can now take \c{BND} and \c{NOBND}
|
370
|
+
options to indicate whether all relevant branches should be getting
|
371
|
+
\c{BND} prefixes. This is expected to be the normal for use in MPX
|
372
|
+
code.
|
373
|
+
|
374
|
+
\b Add \c{{evex}}, \c{{vex3}} and \c{{vex2}} instruction prefixes to
|
375
|
+
have NASM encode the corresponding instruction, if possible, with an EVEX,
|
376
|
+
3-byte VEX, or 2-byte VEX prefix, respectively.
|
377
|
+
|
378
|
+
\b Support for section names longer than 8 bytes in Win32/Win64 COFF.
|
379
|
+
|
380
|
+
\b The \c{NOSPLIT} directive by itself no longer forces a single
|
381
|
+
register to become an index register, unless it has an explicit
|
382
|
+
multiplier.
|
383
|
+
|
384
|
+
\c mov eax,[nosplit eax] ; eax as base register
|
385
|
+
\c mov eax,[nosplit eax*1] ; eax as index register
|
386
|
+
|
387
|
+
\S{cl-2.10.09} Version 2.10.09
|
388
|
+
|
389
|
+
\b Pregenerate man pages.
|
390
|
+
|
391
|
+
\S{cl-2.10.08} Version 2.10.08
|
392
|
+
|
393
|
+
\b Fix \c{VMOVNTDQA}, \c{MOVNTDQA} and \c{MOVLPD} instructions.
|
394
|
+
|
395
|
+
\b Fix collision for \c{VGATHERQPS}, \c{VPGATHERQD} instructions.
|
396
|
+
|
397
|
+
\b Fix \c{VPMOVSXBQ}, \c{VGATHERQPD}, \c{VSPLLW} instructions.
|
398
|
+
|
399
|
+
\b Add a bunch of AMD TBM instructions.
|
400
|
+
|
401
|
+
\b Fix potential stack overwrite in numbers conversion.
|
402
|
+
|
403
|
+
\b Allow byte size in \c{PREFETCHTx} instructions.
|
404
|
+
|
405
|
+
\b Make manual pages up to date.
|
406
|
+
|
407
|
+
\b Make \c{F3} and \c{F2} SSE prefixes to override \c{66}.
|
408
|
+
|
409
|
+
\b Support of AMD SVM instructions in 32 bit mode.
|
410
|
+
|
411
|
+
\b Fix near offsets code generation for \c{JMP}, \c{CALL} instrictions
|
412
|
+
in long mode.
|
413
|
+
|
414
|
+
\b Fix preprocessor parse regression when id is expanding to a whitespace.
|
415
|
+
|
416
|
+
\S{cl-2.10.07} Version 2.10.07
|
417
|
+
|
418
|
+
\b Fix line continuation parsing being broken in previous version.
|
419
|
+
|
420
|
+
\S{cl-2.10.06} Version 2.10.06
|
421
|
+
|
422
|
+
\b Always quote the dependency source names when using the automatic
|
423
|
+
dependency generation options.
|
424
|
+
|
425
|
+
\b If no dependency target name is specified via the \c{-MT} or
|
426
|
+
\c{-MQ} options, quote the default output name.
|
427
|
+
|
428
|
+
\b Fix assembly of shift operations in \c{CPU 8086} mode.
|
429
|
+
|
430
|
+
\b Fix incorrect generation of explicit immediate byte for shift by 1
|
431
|
+
under certain circumstances.
|
432
|
+
|
433
|
+
\b Fix assembly of the \c{VPCMPGTQ} instruction.
|
434
|
+
|
435
|
+
\b Fix RIP-relative relocations in the \c{macho64} backend.
|
436
|
+
|
437
|
+
\S{cl-2.10.05} Version 2.10.05
|
438
|
+
|
439
|
+
\b Add the \c{CLAC} and \c{STAC} instructions.
|
440
|
+
|
441
|
+
\S{cl-2.10.04} Version 2.10.04
|
442
|
+
|
443
|
+
\b Add back the inadvertently deleted 256-bit version of the \c{VORPD}
|
444
|
+
instruction.
|
445
|
+
|
446
|
+
\b Correct disassembly of instructions starting with byte \c{82} hex.
|
447
|
+
|
448
|
+
\b Fix corner cases in token pasting, for example:
|
449
|
+
|
450
|
+
\c %define N 1e%++%+ 5
|
451
|
+
\c dd N, 1e+5
|
452
|
+
|
453
|
+
\S{cl-2.10.03} Version 2.10.03
|
454
|
+
|
455
|
+
\b Correct the assembly of the instruction:
|
456
|
+
|
457
|
+
\c XRELEASE MOV [absolute],AL
|
458
|
+
|
459
|
+
\> Previous versions would incorrectly generate \c{F3 A2} for this
|
460
|
+
instruction and issue a warning; correct behavior is to emit \c{F3 88
|
461
|
+
05}.
|
462
|
+
|
463
|
+
\S{cl-2.10.02} Version 2.10.02
|
464
|
+
|
465
|
+
\b Add the \c{ifunc} macro package with integer functions, currently
|
466
|
+
only integer logarithms. See \k{pkg_ifunc}.
|
467
|
+
|
468
|
+
\b Add the \c{RDSEED}, \c{ADCX} and \c{ADOX} instructions.
|
469
|
+
|
470
|
+
\S{cl-2.10.01} Version 2.10.01
|
471
|
+
|
472
|
+
\b Add missing VPMOVMSKB instruction with reg32, ymmreg operands.
|
473
|
+
|
474
|
+
\S{cl-2.10} Version 2.10
|
475
|
+
|
476
|
+
\b When optimization is enabled, \c{mov r64,imm} now optimizes to the
|
477
|
+
shortest form possible between:
|
478
|
+
|
479
|
+
\c mov r32,imm32 ; 5 bytes
|
480
|
+
\c mov r64,imm32 ; 7 bytes
|
481
|
+
\c mov r64,imm64 ; 10 bytes
|
482
|
+
|
483
|
+
\> To force a specific form, use the \c{STRICT} keyword, see \k{strict}.
|
484
|
+
|
485
|
+
\b Add support for the Intel AVX2 instruction set.
|
486
|
+
|
487
|
+
\b Add support for Bit Manipulation Instructions 1 and 2.
|
488
|
+
|
489
|
+
\b Add support for Intel Transactional Synchronization Extensions (TSX).
|
490
|
+
|
491
|
+
\b Add support for x32 ELF (32-bit ELF with the CPU in 64-bit mode.)
|
492
|
+
See \k{elffmt}.
|
493
|
+
|
494
|
+
\b Add support for bigendian UTF-16 and UTF-32. See \k{unicode}.
|
495
|
+
|
496
|
+
\S{cl-2.09.10} Version 2.09.10
|
497
|
+
|
498
|
+
\b Fix up NSIS script to protect uninstaller against registry keys
|
499
|
+
absence or corruption. It brings in a few additional questions
|
500
|
+
to a user during deinstallation procedure but still it is better
|
501
|
+
than unpredictable file removal.
|
502
|
+
|
503
|
+
\S{cl-2.09.09} Version 2.09.09
|
504
|
+
|
505
|
+
\b Fix initialization of section attributes of \c{bin} output format.
|
506
|
+
|
507
|
+
\b Fix \c{mach64} output format bug that crashes NASM due to NULL symbols.
|
508
|
+
|
509
|
+
|
510
|
+
\S{cl-2.09.08} Version 2.09.08
|
511
|
+
|
512
|
+
\b Fix \c{__OUTPUT_FORMAT__} assignment when output driver alias
|
513
|
+
is used. For example when \c{-f elf} is used \c{__OUTPUT_FORMAT__}
|
514
|
+
must be set to \c{elf}, if \c{-f elf32} is used \c{__OUTPUT_FORMAT__}
|
515
|
+
must be assigned accordingly, i.e. to \c{elf32}. The rule applies to
|
516
|
+
all output driver aliases. See \k{ofmtm}.
|
517
|
+
|
518
|
+
|
519
|
+
\S{cl-2.09.07} Version 2.09.07
|
520
|
+
|
521
|
+
\b Fix attempts to close same file several times
|
522
|
+
when \c{-a} option is used.
|
523
|
+
|
524
|
+
\b Fixes for VEXTRACTF128, VMASKMOVPS encoding.
|
525
|
+
|
526
|
+
|
527
|
+
\S{cl-2.09.06} Version 2.09.06
|
528
|
+
|
529
|
+
\b Fix missed section attribute initialization in \c{bin} output target.
|
530
|
+
|
531
|
+
|
532
|
+
\S{cl-2.09.05} Version 2.09.05
|
533
|
+
|
534
|
+
\b Fix arguments encoding for VPEXTRW instruction.
|
535
|
+
|
536
|
+
\b Remove invalid form of VPEXTRW instruction.
|
537
|
+
|
538
|
+
\b Add \c{VLDDQU} as alias for \c{VLDQQU} to
|
539
|
+
match specification.
|
540
|
+
|
541
|
+
|
542
|
+
\S{cl-2.09.04} Version 2.09.04
|
543
|
+
|
544
|
+
\b Fix incorrect labels offset for VEX intructions.
|
545
|
+
|
546
|
+
\b Eliminate bogus warning on implicit operand size override.
|
547
|
+
|
548
|
+
\b \c{%if} term could not handle 64 bit numbers.
|
549
|
+
|
550
|
+
\b The COFF backend was limiting relocations number to 16 bits even if
|
551
|
+
in real there were a way more relocations.
|
552
|
+
|
553
|
+
|
554
|
+
\S{cl-2.09.03} Version 2.09.03
|
555
|
+
|
556
|
+
\b Print \c{%macro} name inside \c{%rep} blocks on error.
|
557
|
+
|
558
|
+
\b Fix preprocessor expansion behaviour. It happened sometime
|
559
|
+
too early and sometime simply wrong. Move behaviour back to
|
560
|
+
the origins (down to NASM 2.05.01).
|
561
|
+
|
562
|
+
\b Fix unitialized data dereference on OMF output format.
|
563
|
+
|
564
|
+
\b Issue warning on unterminated \c{%{} construct.
|
565
|
+
|
566
|
+
\b Fix for documentation typo.
|
567
|
+
|
568
|
+
|
569
|
+
\S{cl-2.09.02} Version 2.09.02
|
570
|
+
|
571
|
+
\b Fix reversed tokens when \c{%deftok} produces more than one output token.
|
572
|
+
|
573
|
+
\b Fix segmentation fault on disassembling some VEX instructions.
|
574
|
+
|
575
|
+
\b Missing \c{%endif} did not always cause error.
|
576
|
+
|
577
|
+
\b Fix typo in documentation.
|
578
|
+
|
579
|
+
\b Compound context local preprocessor single line macro identifiers
|
580
|
+
were not expanded early enough and as result lead to unresolved
|
581
|
+
symbols.
|
582
|
+
|
583
|
+
|
584
|
+
\S{cl-2.09.01} Version 2.09.01
|
585
|
+
|
586
|
+
\b Fix NULL dereference on missed %deftok second parameter.
|
587
|
+
|
588
|
+
\b Fix NULL dereference on invalid %substr parameters.
|
589
|
+
|
590
|
+
|
591
|
+
\S{cl-2.09} Version 2.09
|
592
|
+
|
593
|
+
\b Fixed assignment the magnitude of \c{%rep} counter. It is limited
|
594
|
+
to 62 bits now.
|
595
|
+
|
596
|
+
\b Fixed NULL dereference if argument of \c{%strlen} resolves
|
597
|
+
to whitespace. For example if nonexistent macro parameter is used.
|
598
|
+
|
599
|
+
\b \c{%ifenv}, \c{%elifenv}, \c{%ifnenv}, and \c{%elifnenv} directives
|
600
|
+
introduced. See \k{ifenv}.
|
601
|
+
|
602
|
+
\b Fixed NULL dereference if environment variable is missed.
|
603
|
+
|
604
|
+
\b Updates of new AVX v7 Intel instructions.
|
605
|
+
|
606
|
+
\b \c{PUSH imm32} is now officially documented.
|
607
|
+
|
608
|
+
\b Fix for encoding the LFS, LGS and LSS in 64-bit mode.
|
609
|
+
|
610
|
+
\b Fixes for compatibility with OpenWatcom compiler and DOS 8.3 file
|
611
|
+
format limitation.
|
612
|
+
|
613
|
+
\b Macros parameters range expansion introduced. See \k{mlmacrange}.
|
614
|
+
|
615
|
+
\b Backward compatibility on expanging of local sigle macros restored.
|
616
|
+
|
617
|
+
\b 8 bit relocations for \c{elf} and \c{bin} output formats are introduced.
|
618
|
+
|
619
|
+
\b Short intersegment jumps are permitted now.
|
620
|
+
|
621
|
+
\b An alignment more than 64 bytes are allowed for \c{win32},
|
622
|
+
\c{win64} output formats.
|
623
|
+
|
624
|
+
\b \c{SECTALIGN} directive introduced. See \k{sectalign}.
|
625
|
+
|
626
|
+
\b \c{nojmp} option introduced in \c{smartalign} package. See
|
627
|
+
\k{pkg_smartalign}.
|
628
|
+
|
629
|
+
\b Short aliases \c{win}, \c{elf} and \c{macho} for output formats are
|
630
|
+
introduced. Each stands for \c{win32}, \c{elf32} and \c{macho32}
|
631
|
+
accordingly.
|
632
|
+
|
633
|
+
\b Faster handling of missing directives implemented.
|
634
|
+
|
635
|
+
\b Various small improvements in documentation.
|
636
|
+
|
637
|
+
\b No hang anymore if unable to open malloc.log file.
|
638
|
+
|
639
|
+
\b The environments without vsnprintf function are able to build nasm again.
|
640
|
+
|
641
|
+
\b AMD LWP instructions updated.
|
642
|
+
|
643
|
+
\b Tighten EA checks. We warn a user if there overflow in EA addressing.
|
644
|
+
|
645
|
+
\b Make \c{-Ox} the default optimization level. For the legacy
|
646
|
+
behavior, specify \c{-O0} explicitly. See \k{opt-O}.
|
647
|
+
|
648
|
+
\b Environment variables read with \c{%!} or tested with \c{%ifenv}
|
649
|
+
can now contain non-identifier characters if surrounded by quotes.
|
650
|
+
See \k{getenv}.
|
651
|
+
|
652
|
+
\b Add a new standard macro package \c{%use fp} for floating-point
|
653
|
+
convenience macros. See \k{pkg_fp}.
|
654
|
+
|
655
|
+
|
656
|
+
\S{cl-2.08.02} Version 2.08.02
|
657
|
+
|
658
|
+
\b Fix crash under certain circumstances when using the \c{%+} operator.
|
659
|
+
|
660
|
+
|
661
|
+
\S{cl-2.08.01} Version 2.08.01
|
662
|
+
|
663
|
+
\b Fix the \c{%use} statement, which was broken in 2.08.
|
664
|
+
|
665
|
+
|
666
|
+
\S{cl-2.08} Version 2.08
|
667
|
+
|
668
|
+
\b A number of enhancements/fixes in macros area.
|
669
|
+
|
670
|
+
\b Support for converting strings to tokens. See \k{deftok}.
|
671
|
+
|
672
|
+
\b Fuzzy operand size logic introduced.
|
673
|
+
|
674
|
+
\b Fix COFF stack overrun on too long export identifiers.
|
675
|
+
|
676
|
+
\b Fix Macho-O alignment bug.
|
677
|
+
|
678
|
+
\b Fix crashes with -fwin32 on file with many exports.
|
679
|
+
|
680
|
+
\b Fix stack overrun for too long [DEBUG id].
|
681
|
+
|
682
|
+
\b Fix incorrect sbyte usage in IMUL (hit only if optimization
|
683
|
+
flag passed).
|
684
|
+
|
685
|
+
\b Append ending token for \c{.stabs} records in the ELF output format.
|
686
|
+
|
687
|
+
\b New NSIS script which uses ModernUI and MultiUser approach.
|
688
|
+
|
689
|
+
\b Visual Studio 2008 NASM integration (rules file).
|
690
|
+
|
691
|
+
\b Warn a user if a constant is too long (and as result will be stripped).
|
692
|
+
|
693
|
+
\b The obsoleted pre-XOP AMD SSE5 instruction set which was never actualized
|
694
|
+
was removed.
|
695
|
+
|
696
|
+
\b Fix stack overrun on too long error file name passed from the command line.
|
697
|
+
|
698
|
+
\b Bind symbols to the .text section by default (ie in case if SECTION
|
699
|
+
directive was omitted) in the ELF output format.
|
700
|
+
|
701
|
+
\b Fix sync points array index wrapping.
|
702
|
+
|
703
|
+
\b A few fixes for FMA4 and XOP instruction templates.
|
704
|
+
|
705
|
+
\b Add AMD Lightweight Profiling (LWP) instructions.
|
706
|
+
|
707
|
+
\b Fix the offset for \c{%arg} in 64-bit mode.
|
708
|
+
|
709
|
+
\b An undefined local macro (\c{%$}) no longer matches a global macro
|
710
|
+
with the same name.
|
711
|
+
|
712
|
+
\b Fix NULL dereference on too long local labels.
|
713
|
+
|
714
|
+
|
715
|
+
\S{cl-2.07} Version 2.07
|
716
|
+
|
717
|
+
\b NASM is now under the 2-clause BSD license. See \k{legal}.
|
718
|
+
|
719
|
+
\b Fix the section type for the \c{.strtab} section in the \c{elf64}
|
720
|
+
output format.
|
721
|
+
|
722
|
+
\b Fix the handling of \c{COMMON} directives in the \c{obj} output format.
|
723
|
+
|
724
|
+
\b New \c{ith} and \c{srec} output formats; these are variants of the
|
725
|
+
\c{bin} output format which output Intel hex and Motorola S-records,
|
726
|
+
respectively. See \k{ithfmt} and \k{srecfmt}.
|
727
|
+
|
728
|
+
\b \c{rdf2ihx} replaced with an enhanced \c{rdf2bin}, which can output
|
729
|
+
binary, COM, Intel hex or Motorola S-records.
|
730
|
+
|
731
|
+
\b The Windows installer now puts the NASM directory first in the
|
732
|
+
\c{PATH} of the "NASM Shell".
|
733
|
+
|
734
|
+
\b Revert the early expansion behavior of \c{%+} to pre-2.06 behavior:
|
735
|
+
\c{%+} is only expanded late.
|
736
|
+
|
737
|
+
\b Yet another Mach-O alignment fix.
|
738
|
+
|
739
|
+
\b Don't delete the list file on errors. Also, include error and
|
740
|
+
warning information in the list file.
|
741
|
+
|
742
|
+
\b Support for 64-bit Mach-O output, see \k{machofmt}.
|
743
|
+
|
744
|
+
\b Fix assert failure on certain operations that involve strings with
|
745
|
+
high-bit bytes.
|
746
|
+
|
747
|
+
|
748
|
+
\S{cl-2.06} Version 2.06
|
749
|
+
|
750
|
+
\b This release is dedicated to the memory of Charles A. Crayne, long
|
751
|
+
time NASM developer as well as moderator of \c{comp.lang.asm.x86} and
|
752
|
+
author of the book \e{Serious Assembler}. We miss you, Chuck.
|
753
|
+
|
754
|
+
\b Support for indirect macro expansion (\c{%[...]}). See \k{indmacro}.
|
755
|
+
|
756
|
+
\b \c{%pop} can now take an argument, see \k{pushpop}.
|
757
|
+
|
758
|
+
\b The argument to \c{%use} is no longer macro-expanded. Use
|
759
|
+
\c{%[...]} if macro expansion is desired.
|
760
|
+
|
761
|
+
\b Support for thread-local storage in ELF32 and ELF64. See \k{elftls}.
|
762
|
+
|
763
|
+
\b Fix crash on \c{%ifmacro} without an argument.
|
764
|
+
|
765
|
+
\b Correct the arguments to the \c{POPCNT} instruction.
|
766
|
+
|
767
|
+
\b Fix section alignment in the Mach-O format.
|
768
|
+
|
769
|
+
\b Update AVX support to version 5 of the Intel specification.
|
770
|
+
|
771
|
+
\b Fix the handling of accesses to context-local macros from higher
|
772
|
+
levels in the context stack.
|
773
|
+
|
774
|
+
\b Treat \c{WAIT} as a prefix rather than as an instruction, thereby
|
775
|
+
allowing constructs like \c{O16 FSAVE} to work correctly.
|
776
|
+
|
777
|
+
\b Support for structures with a non-zero base offset. See \k{struc}.
|
778
|
+
|
779
|
+
\b Correctly handle preprocessor token concatenation (see \k{concat})
|
780
|
+
involving floating-point numbers.
|
781
|
+
|
782
|
+
\b The \c{PINSR} series of instructions have been corrected and
|
783
|
+
rationalized.
|
784
|
+
|
785
|
+
\b Removed AMD SSE5, replaced with the new XOP/FMA4/CVT16 (rev 3.03)
|
786
|
+
spec.
|
787
|
+
|
788
|
+
\b The ELF backends no longer automatically generate a \c{.comment} section.
|
789
|
+
|
790
|
+
\b Add additional "well-known" ELF sections with default attributes. See
|
791
|
+
\k{elfsect}.
|
792
|
+
|
793
|
+
|
794
|
+
\S{cl-2.05.01} Version 2.05.01
|
795
|
+
|
796
|
+
\b Fix the \c{-w}/\c{-W} option parsing, which was broken in NASM 2.05.
|
797
|
+
|
798
|
+
|
799
|
+
\S{cl-2.05} Version 2.05
|
800
|
+
|
801
|
+
\b Fix redundant REX.W prefix on \c{JMP reg64}.
|
802
|
+
|
803
|
+
\b Make the behaviour of \c{-O0} match NASM 0.98 legacy behavior.
|
804
|
+
See \k{opt-O}.
|
805
|
+
|
806
|
+
\b \c{-w-user} can be used to suppress the output of \c{%warning} directives.
|
807
|
+
See \k{opt-w}.
|
808
|
+
|
809
|
+
\b Fix bug where \c{ALIGN} would issue a full alignment datum instead of
|
810
|
+
zero bytes.
|
811
|
+
|
812
|
+
\b Fix offsets in list files.
|
813
|
+
|
814
|
+
\b Fix \c{%include} inside multi-line macros or loops.
|
815
|
+
|
816
|
+
\b Fix error where NASM would generate a spurious warning on valid
|
817
|
+
optimizations of immediate values.
|
818
|
+
|
819
|
+
\b Fix arguments to a number of the \c{CVT} SSE instructions.
|
820
|
+
|
821
|
+
\b Fix RIP-relative offsets when the instruction carries an immediate.
|
822
|
+
|
823
|
+
\b Massive overhaul of the ELF64 backend for spec compliance.
|
824
|
+
|
825
|
+
\b Fix the Geode \c{PFRCPV} and \c{PFRSQRTV} instruction.
|
826
|
+
|
827
|
+
\b Fix the SSE 4.2 \c{CRC32} instruction.
|
828
|
+
|
829
|
+
|
830
|
+
\S{cl-2.04} Version 2.04
|
831
|
+
|
832
|
+
\b Sanitize macro handing in the \c{%error} directive.
|
833
|
+
|
834
|
+
\b New \c{%warning} directive to issue user-controlled warnings.
|
835
|
+
|
836
|
+
\b \c{%error} directives are now deferred to the final assembly phase.
|
837
|
+
|
838
|
+
\b New \c{%fatal} directive to immediately terminate assembly.
|
839
|
+
|
840
|
+
\b New \c{%strcat} directive to join quoted strings together.
|
841
|
+
|
842
|
+
\b New \c{%use} macro directive to support standard macro directives. See
|
843
|
+
\k{use}.
|
844
|
+
|
845
|
+
\b Excess default parameters to \c{%macro} now issues a warning by default.
|
846
|
+
See \k{mlmacro}.
|
847
|
+
|
848
|
+
\b Fix \c{%ifn} and \c{%elifn}.
|
849
|
+
|
850
|
+
\b Fix nested \c{%else} clauses.
|
851
|
+
|
852
|
+
\b Correct the handling of nested \c{%rep}s.
|
853
|
+
|
854
|
+
\b New \c{%unmacro} directive to undeclare a multi-line macro.
|
855
|
+
See \k{unmacro}.
|
856
|
+
|
857
|
+
\b Builtin macro \c{__PASS__} which expands to the current assembly pass.
|
858
|
+
See \k{pass_macro}.
|
859
|
+
|
860
|
+
\b \c{__utf16__} and \c{__utf32__} operators to generate UTF-16 and UTF-32
|
861
|
+
strings. See \k{unicode}.
|
862
|
+
|
863
|
+
\b Fix bug in case-insensitive matching when compiled on platforms that
|
864
|
+
don't use the \c{configure} script. Of the official release binaries,
|
865
|
+
that only affected the OS/2 binary.
|
866
|
+
|
867
|
+
\b Support for x87 packed BCD constants. See \k{bcdconst}.
|
868
|
+
|
869
|
+
\b Correct the \c{LTR} and \c{SLDT} instructions in 64-bit mode.
|
870
|
+
|
871
|
+
\b Fix unnecessary REX.W prefix on indirect jumps in 64-bit mode.
|
872
|
+
|
873
|
+
\b Add AVX versions of the AES instructions (\c{VAES}...).
|
874
|
+
|
875
|
+
\b Fix the 256-bit FMA instructions.
|
876
|
+
|
877
|
+
\b Add 256-bit AVX stores per the latest AVX spec.
|
878
|
+
|
879
|
+
\b VIA XCRYPT instructions can now be written either with or without
|
880
|
+
\c{REP}, apparently different versions of the VIA spec wrote them
|
881
|
+
differently.
|
882
|
+
|
883
|
+
\b Add missing 64-bit \c{MOVNTI} instruction.
|
884
|
+
|
885
|
+
\b Fix the operand size of \c{VMREAD} and \c{VMWRITE}.
|
886
|
+
|
887
|
+
\b Numerous bug fixes, especially to the AES, AVX and VTX instructions.
|
888
|
+
|
889
|
+
\b The optimizer now always runs until it converges. It also runs even
|
890
|
+
when disabled, but doesn't optimize. This allows most forward references
|
891
|
+
to be resolved properly.
|
892
|
+
|
893
|
+
\b \c{%push} no longer needs a context identifier; omitting the context
|
894
|
+
identifier results in an anonymous context.
|
895
|
+
|
896
|
+
|
897
|
+
\S{cl-2.03.01} Version 2.03.01
|
898
|
+
|
899
|
+
\b Fix buffer overflow in the listing module.
|
900
|
+
|
901
|
+
\b Fix the handling of hexadecimal escape codes in `...` strings.
|
902
|
+
|
903
|
+
\b The Postscript/PDF documentation has been reformatted.
|
904
|
+
|
905
|
+
\b The \c{-F} option now implies \c{-g}.
|
906
|
+
|
907
|
+
|
908
|
+
\S{cl-2.03} Version 2.03
|
909
|
+
|
910
|
+
\b Add support for Intel AVX, CLMUL and FMA instructions,
|
911
|
+
including YMM registers.
|
912
|
+
|
913
|
+
\b \c{dy}, \c{resy} and \c{yword} for 32-byte operands.
|
914
|
+
|
915
|
+
\b Fix some SSE5 instructions.
|
916
|
+
|
917
|
+
\b Intel \c{INVEPT}, \c{INVVPID} and \c{MOVBE} instructions.
|
918
|
+
|
919
|
+
\b Fix checking for critical expressions when the optimizer is enabled.
|
920
|
+
|
921
|
+
\b Support the DWARF debugging format for ELF targets.
|
922
|
+
|
923
|
+
\b Fix optimizations of signed bytes.
|
924
|
+
|
925
|
+
\b Fix operation on bigendian machines.
|
926
|
+
|
927
|
+
\b Fix buffer overflow in the preprocessor.
|
928
|
+
|
929
|
+
\b \c{SAFESEH} support for Win32, \c{IMAGEREL} for Win64 (SEH).
|
930
|
+
|
931
|
+
\b \c{%?} and \c{%??} to refer to the name of a macro itself. In particular,
|
932
|
+
\c{%idefine keyword $%?} can be used to make a keyword "disappear".
|
933
|
+
|
934
|
+
\b New options for dependency generation: \c{-MD}, \c{-MF},
|
935
|
+
\c{-MP}, \c{-MT}, \c{-MQ}.
|
936
|
+
|
937
|
+
\b New preprocessor directives \c{%pathsearch} and \c{%depend}; INCBIN
|
938
|
+
reimplemented as a macro.
|
939
|
+
|
940
|
+
\b \c{%include} now resolves macros in a sane manner.
|
941
|
+
|
942
|
+
\b \c{%substr} can now be used to get other than one-character substrings.
|
943
|
+
|
944
|
+
\b New type of character/string constants, using backquotes (\c{`...`}),
|
945
|
+
which support C-style escape sequences.
|
946
|
+
|
947
|
+
\b \c{%defstr} and \c{%idefstr} to stringize macro definitions before
|
948
|
+
creation.
|
949
|
+
|
950
|
+
\b Fix forward references used in \c{EQU} statements.
|
951
|
+
|
952
|
+
|
953
|
+
\S{cl-2.02} Version 2.02
|
954
|
+
|
955
|
+
\b Additional fixes for MMX operands with explicit \c{qword}, as well as
|
956
|
+
(hopefully) SSE operands with \c{oword}.
|
957
|
+
|
958
|
+
\b Fix handling of truncated strings with \c{DO}.
|
959
|
+
|
960
|
+
\b Fix segfaults due to memory overwrites when floating-point constants
|
961
|
+
were used.
|
962
|
+
|
963
|
+
\b Fix segfaults due to missing include files.
|
964
|
+
|
965
|
+
\b Fix OpenWatcom Makefiles for DOS and OS/2.
|
966
|
+
|
967
|
+
\b Add autogenerated instruction list back into the documentation.
|
968
|
+
|
969
|
+
\b ELF: Fix segfault when generating stabs, and no symbols have been
|
970
|
+
defined.
|
971
|
+
|
972
|
+
\b ELF: Experimental support for DWARF debugging information.
|
973
|
+
|
974
|
+
\b New compile date and time standard macros.
|
975
|
+
|
976
|
+
\b \c{%ifnum} now returns true for negative numbers.
|
977
|
+
|
978
|
+
\b New \c{%iftoken} test for a single token.
|
979
|
+
|
980
|
+
\b New \c{%ifempty} test for empty expansion.
|
981
|
+
|
982
|
+
\b Add support for the \c{XSAVE} instruction group.
|
983
|
+
|
984
|
+
\b Makefile for Netware/gcc.
|
985
|
+
|
986
|
+
\b Fix issue with some warnings getting emitted way too many times.
|
987
|
+
|
988
|
+
\b Autogenerated instruction list added to the documentation.
|
989
|
+
|
990
|
+
|
991
|
+
\S{cl-2.01} Version 2.01
|
992
|
+
|
993
|
+
\b Fix the handling of MMX registers with explicit \c{qword} tags on
|
994
|
+
memory (broken in 2.00 due to 64-bit changes.)
|
995
|
+
|
996
|
+
\b Fix the PREFETCH instructions.
|
997
|
+
|
998
|
+
\b Fix the documentation.
|
999
|
+
|
1000
|
+
\b Fix debugging info when using \c{-f elf}
|
1001
|
+
(backwards compatibility alias for \c{-f elf32}).
|
1002
|
+
|
1003
|
+
\b Man pages for rdoff tools (from the Debian project.)
|
1004
|
+
|
1005
|
+
\b ELF: handle large numbers of sections.
|
1006
|
+
|
1007
|
+
\b Fix corrupt output when the optimizer runs out of passes.
|
1008
|
+
|
1009
|
+
|
1010
|
+
\S{cl-2.00} Version 2.00
|
1011
|
+
|
1012
|
+
\b Added c99 data-type compliance.
|
1013
|
+
|
1014
|
+
\b Added general x86-64 support.
|
1015
|
+
|
1016
|
+
\b Added win64 (x86-64 COFF) output format.
|
1017
|
+
|
1018
|
+
\b Added \c{__BITS__} standard macro.
|
1019
|
+
|
1020
|
+
\b Renamed the \c{elf} output format to \c{elf32} for clarity.
|
1021
|
+
|
1022
|
+
\b Added \c{elf64} and \c{macho} (MacOS X) output formats.
|
1023
|
+
|
1024
|
+
\b Added Numeric constants in \c{dq} directive.
|
1025
|
+
|
1026
|
+
\b Added \c{oword}, \c{do} and \c{reso} pseudo operands.
|
1027
|
+
|
1028
|
+
\b Allow underscores in numbers.
|
1029
|
+
|
1030
|
+
\b Added 8-, 16- and 128-bit floating-point formats.
|
1031
|
+
|
1032
|
+
\b Added binary, octal and hexadecimal floating-point.
|
1033
|
+
|
1034
|
+
\b Correct the generation of floating-point constants.
|
1035
|
+
|
1036
|
+
\b Added floating-point option control.
|
1037
|
+
|
1038
|
+
\b Added Infinity and NaN floating point support.
|
1039
|
+
|
1040
|
+
\b Added ELF Symbol Visibility support.
|
1041
|
+
|
1042
|
+
\b Added setting OSABI value in ELF header directive.
|
1043
|
+
|
1044
|
+
\b Added Generate Makefile Dependencies option.
|
1045
|
+
|
1046
|
+
\b Added Unlimited Optimization Passes option.
|
1047
|
+
|
1048
|
+
\b Added \c{%IFN} and \c{%ELIFN} support.
|
1049
|
+
|
1050
|
+
\b Added Logical Negation Operator.
|
1051
|
+
|
1052
|
+
\b Enhanced Stack Relative Preprocessor Directives.
|
1053
|
+
|
1054
|
+
\b Enhanced ELF Debug Formats.
|
1055
|
+
|
1056
|
+
\b Enhanced Send Errors to a File option.
|
1057
|
+
|
1058
|
+
\b Added SSSE3, SSE4.1, SSE4.2, SSE5 support.
|
1059
|
+
|
1060
|
+
\b Added a large number of additional instructions.
|
1061
|
+
|
1062
|
+
\b Significant performance improvements.
|
1063
|
+
|
1064
|
+
\b \c{-w+warning} and \c{-w-warning} can now be written as -Wwarning and
|
1065
|
+
-Wno-warning, respectively. See \k{opt-w}.
|
1066
|
+
|
1067
|
+
\b Add \c{-w+error} to treat warnings as errors. See \k{opt-w}.
|
1068
|
+
|
1069
|
+
\b Add \c{-w+all} and \c{-w-all} to enable or disable all suppressible
|
1070
|
+
warnings. See \k{opt-w}.
|
1071
|
+
|
1072
|
+
|
1073
|
+
\H{cl-0.98.xx} NASM 0.98 Series
|
1074
|
+
|
1075
|
+
The 0.98 series was the production versions of NASM from 1999 to 2007.
|
1076
|
+
|
1077
|
+
|
1078
|
+
\S{cl-0.98.39} Version 0.98.39
|
1079
|
+
|
1080
|
+
\b fix buffer overflow
|
1081
|
+
|
1082
|
+
\b fix outas86's \c{.bss} handling
|
1083
|
+
|
1084
|
+
\b "make spotless" no longer deletes config.h.in.
|
1085
|
+
|
1086
|
+
\b \c{%(el)if(n)idn} insensitivity to string quotes difference (#809300).
|
1087
|
+
|
1088
|
+
\b (nasm.c)\c{__OUTPUT_FORMAT__} changed to string value instead of symbol.
|
1089
|
+
|
1090
|
+
\S{cl-0.98.38} Version 0.98.38
|
1091
|
+
|
1092
|
+
|
1093
|
+
\b Add Makefile for 16-bit DOS binaries under OpenWatcom, and modify
|
1094
|
+
\c{mkdep.pl} to be able to generate completely pathless dependencies, as
|
1095
|
+
required by OpenWatcom wmake (it supports path searches, but not
|
1096
|
+
explicit paths.)
|
1097
|
+
|
1098
|
+
\b Fix the \c{STR} instruction.
|
1099
|
+
|
1100
|
+
\b Fix the ELF output format, which was broken under certain
|
1101
|
+
circumstances due to the addition of stabs support.
|
1102
|
+
|
1103
|
+
\b Quick-fix Borland format debug-info for \c{-f obj}
|
1104
|
+
|
1105
|
+
\b Fix for \c{%rep} with no arguments (#560568)
|
1106
|
+
|
1107
|
+
\b Fix concatenation of preprocessor function call (#794686)
|
1108
|
+
|
1109
|
+
\b Fix long label causes coredump (#677841)
|
1110
|
+
|
1111
|
+
\b Use autoheader as well as autoconf to keep configure from generating
|
1112
|
+
ridiculously long command lines.
|
1113
|
+
|
1114
|
+
\b Make sure that all of the formats which support debugging output
|
1115
|
+
actually will suppress debugging output when \c{-g} not specified.
|
1116
|
+
|
1117
|
+
\S{cl-0.98.37} Version 0.98.37
|
1118
|
+
|
1119
|
+
|
1120
|
+
\b Paths given in \c{-I} switch searched for \c{incbin}-ed as
|
1121
|
+
well as \c{%include}-ed files.
|
1122
|
+
|
1123
|
+
\b Added stabs debugging for the ELF output format, patch from
|
1124
|
+
Martin Wawro.
|
1125
|
+
|
1126
|
+
\b Fix \c{output/outbin.c} to allow origin > 80000000h.
|
1127
|
+
|
1128
|
+
\b Make \c{-U} switch work.
|
1129
|
+
|
1130
|
+
\b Fix the use of relative offsets with explicit prefixes, e.g.
|
1131
|
+
\c{a32 loop foo}.
|
1132
|
+
|
1133
|
+
\b Remove \c{backslash()}.
|
1134
|
+
|
1135
|
+
\b Fix the \c{SMSW} and \c{SLDT} instructions.
|
1136
|
+
|
1137
|
+
\b \c{-O2} and \c{-O3} are no longer aliases for \c{-O10} and \c{-O15}.
|
1138
|
+
If you mean the latter, please say so! :)
|
1139
|
+
|
1140
|
+
\S{cl-0.98.36} Version 0.98.36
|
1141
|
+
|
1142
|
+
|
1143
|
+
\b Update rdoff - librarian/archiver - common rec - docs!
|
1144
|
+
|
1145
|
+
\b Fix signed/unsigned problems.
|
1146
|
+
|
1147
|
+
\b Fix \c{JMP FAR label} and \c{CALL FAR label}.
|
1148
|
+
|
1149
|
+
\b Add new multisection support - map files - fix align bug
|
1150
|
+
|
1151
|
+
\b Fix sysexit, movhps/movlps reg,reg bugs in insns.dat
|
1152
|
+
|
1153
|
+
\b \c{Q} or \c{O} suffixes indicate octal
|
1154
|
+
|
1155
|
+
\b Support Prescott new instructions (PNI).
|
1156
|
+
|
1157
|
+
\b Cyrix \c{XSTORE} instruction.
|
1158
|
+
|
1159
|
+
|
1160
|
+
\S{cl-0.98.35} Version 0.98.35
|
1161
|
+
|
1162
|
+
\b Fix build failure on 16-bit DOS (Makefile.bc3 workaround for compiler bug.)
|
1163
|
+
|
1164
|
+
\b Fix dependencies and compiler warnings.
|
1165
|
+
|
1166
|
+
\b Add "const" in a number of places.
|
1167
|
+
|
1168
|
+
\b Add -X option to specify error reporting format (use -Xvc to
|
1169
|
+
integrate with Microsoft Visual Studio.)
|
1170
|
+
|
1171
|
+
\b Minor changes for code legibility.
|
1172
|
+
|
1173
|
+
\b Drop use of tmpnam() in rdoff (security fix.)
|
1174
|
+
|
1175
|
+
|
1176
|
+
\S{cl-0.98.34} Version 0.98.34
|
1177
|
+
|
1178
|
+
\b Correct additional address-size vs. operand-size confusions.
|
1179
|
+
|
1180
|
+
\b Generate dependencies for all Makefiles automatically.
|
1181
|
+
|
1182
|
+
\b Add support for unimplemented (but theoretically available)
|
1183
|
+
registers such as tr0 and cr5. Segment registers 6 and 7 are called
|
1184
|
+
segr6 and segr7 for the operations which they can be represented.
|
1185
|
+
|
1186
|
+
\b Correct some disassembler bugs related to redundant address-size prefixes.
|
1187
|
+
Some work still remains in this area.
|
1188
|
+
|
1189
|
+
\b Correctly generate an error for things like "SEG eax".
|
1190
|
+
|
1191
|
+
\b Add the JMPE instruction, enabled by "CPU IA64".
|
1192
|
+
|
1193
|
+
\b Correct compilation on newer gcc/glibc platforms.
|
1194
|
+
|
1195
|
+
\b Issue an error on things like "jmp far eax".
|
1196
|
+
|
1197
|
+
|
1198
|
+
\S{cl-0.98.33} Version 0.98.33
|
1199
|
+
|
1200
|
+
\b New __NASM_PATCHLEVEL__ and __NASM_VERSION_ID__ standard macros to
|
1201
|
+
round out the version-query macros. version.pl now understands
|
1202
|
+
X.YYplWW or X.YY.ZZplWW as a version number, equivalent to
|
1203
|
+
X.YY.ZZ.WW (or X.YY.0.WW, as appropriate).
|
1204
|
+
|
1205
|
+
\b New keyword "strict" to disable the optimization of specific
|
1206
|
+
operands.
|
1207
|
+
|
1208
|
+
\b Fix the handing of size overrides with JMP instructions
|
1209
|
+
(instructions such as "jmp dword foo".)
|
1210
|
+
|
1211
|
+
\b Fix the handling of "ABSOLUTE label", where "label" points into a
|
1212
|
+
relocatable segment.
|
1213
|
+
|
1214
|
+
\b Fix OBJ output format with lots of externs.
|
1215
|
+
|
1216
|
+
\b More documentation updates.
|
1217
|
+
|
1218
|
+
\b Add -Ov option to get verbose information about optimizations.
|
1219
|
+
|
1220
|
+
\b Undo a braindead change which broke \c{%elif} directives.
|
1221
|
+
|
1222
|
+
\b Makefile updates.
|
1223
|
+
|
1224
|
+
|
1225
|
+
\S{cl-0.98.32} Version 0.98.32
|
1226
|
+
|
1227
|
+
\b Fix NASM crashing when \c{%macro} directives were left unterminated.
|
1228
|
+
|
1229
|
+
\b Lots of documentation updates.
|
1230
|
+
|
1231
|
+
\b Complete rewrite of the PostScript/PDF documentation generator.
|
1232
|
+
|
1233
|
+
\b The MS Visual C++ Makefile was updated and corrected.
|
1234
|
+
|
1235
|
+
\b Recognize .rodata as a standard section name in ELF.
|
1236
|
+
|
1237
|
+
\b Fix some obsolete Perl4-isms in Perl scripts.
|
1238
|
+
|
1239
|
+
\b Fix configure.in to work with autoconf 2.5x.
|
1240
|
+
|
1241
|
+
\b Fix a couple of "make cleaner" misses.
|
1242
|
+
|
1243
|
+
\b Make the normal "./configure && make" work with Cygwin.
|
1244
|
+
|
1245
|
+
|
1246
|
+
\S{cl-0.98.31} Version 0.98.31
|
1247
|
+
|
1248
|
+
\b Correctly build in a separate object directory again.
|
1249
|
+
|
1250
|
+
\b Derive all references to the version number from the version file.
|
1251
|
+
|
1252
|
+
\b New standard macros __NASM_SUBMINOR__ and __NASM_VER__ macros.
|
1253
|
+
|
1254
|
+
\b Lots of Makefile updates and bug fixes.
|
1255
|
+
|
1256
|
+
\b New \c{%ifmacro} directive to test for multiline macros.
|
1257
|
+
|
1258
|
+
\b Documentation updates.
|
1259
|
+
|
1260
|
+
\b Fixes for 16-bit OBJ format output.
|
1261
|
+
|
1262
|
+
\b Changed the NASM environment variable to NASMENV.
|
1263
|
+
|
1264
|
+
|
1265
|
+
\S{cl-0.98.30} Version 0.98.30
|
1266
|
+
|
1267
|
+
\b Changed doc files a lot: completely removed old READMExx and
|
1268
|
+
Wishlist files, incorporating all information in CHANGES and TODO.
|
1269
|
+
|
1270
|
+
\b I waited a long time to rename zoutieee.c to (original) outieee.c
|
1271
|
+
|
1272
|
+
\b moved all output modules to output/ subdirectory.
|
1273
|
+
|
1274
|
+
\b Added 'make strip' target to strip debug info from nasm & ndisasm.
|
1275
|
+
|
1276
|
+
\b Added INSTALL file with installation instructions.
|
1277
|
+
|
1278
|
+
\b Added -v option description to nasm man.
|
1279
|
+
|
1280
|
+
\b Added dist makefile target to produce source distributions.
|
1281
|
+
|
1282
|
+
\b 16-bit support for ELF output format (GNU extension, but useful.)
|
1283
|
+
|
1284
|
+
|
1285
|
+
\S{cl-0.98.28} Version 0.98.28
|
1286
|
+
|
1287
|
+
\b Fastcooked this for Debian's Woody release:
|
1288
|
+
Frank applied the INCBIN bug patch to 0.98.25alt and called
|
1289
|
+
it 0.98.28 to not confuse poor little apt-get.
|
1290
|
+
|
1291
|
+
|
1292
|
+
\S{cl-0.98.26} Version 0.98.26
|
1293
|
+
|
1294
|
+
\b Reorganised files even better from 0.98.25alt
|
1295
|
+
|
1296
|
+
|
1297
|
+
\S{cl-0.98.25alt} Version 0.98.25alt
|
1298
|
+
|
1299
|
+
\b Prettified the source tree. Moved files to more reasonable places.
|
1300
|
+
|
1301
|
+
\b Added findleak.pl script to misc/ directory.
|
1302
|
+
|
1303
|
+
\b Attempted to fix doc.
|
1304
|
+
|
1305
|
+
|
1306
|
+
\S{cl-0.98.25} Version 0.98.25
|
1307
|
+
|
1308
|
+
\b Line continuation character \c{\\}.
|
1309
|
+
|
1310
|
+
\b Docs inadvertantly reverted - "dos packaging".
|
1311
|
+
|
1312
|
+
|
1313
|
+
\S{cl-0.98.24p1} Version 0.98.24p1
|
1314
|
+
|
1315
|
+
\b FIXME: Someone, document this please.
|
1316
|
+
|
1317
|
+
|
1318
|
+
\S{cl-0.98.24} Version 0.98.24
|
1319
|
+
|
1320
|
+
\b Documentation - Ndisasm doc added to Nasm.doc.
|
1321
|
+
|
1322
|
+
|
1323
|
+
\S{cl-0.98.23} Version 0.98.23
|
1324
|
+
|
1325
|
+
\b Attempted to remove rdoff version1
|
1326
|
+
|
1327
|
+
\b Lino Mastrodomenico's patches to preproc.c (%$$ bug?).
|
1328
|
+
|
1329
|
+
|
1330
|
+
\S{cl-0.98.22} Version 0.98.22
|
1331
|
+
|
1332
|
+
\b Update rdoff2 - attempt to remove v1.
|
1333
|
+
|
1334
|
+
|
1335
|
+
\S{cl-0.98.21} Version 0.98.21
|
1336
|
+
|
1337
|
+
\b Optimization fixes.
|
1338
|
+
|
1339
|
+
|
1340
|
+
\S{cl-0.98.20} Version 0.98.20
|
1341
|
+
|
1342
|
+
\b Optimization fixes.
|
1343
|
+
|
1344
|
+
|
1345
|
+
\S{cl-0.98.19} Version 0.98.19
|
1346
|
+
|
1347
|
+
\b H. J. Lu's patch back out.
|
1348
|
+
|
1349
|
+
|
1350
|
+
\S{cl-0.98.18} Version 0.98.18
|
1351
|
+
|
1352
|
+
\b Added ".rdata" to "-f win32".
|
1353
|
+
|
1354
|
+
|
1355
|
+
\S{cl-0.98.17} Version 0.98.17
|
1356
|
+
|
1357
|
+
\b H. J. Lu's "bogus elf" patch. (Red Hat problem?)
|
1358
|
+
|
1359
|
+
|
1360
|
+
\S{cl-0.98.16} Version 0.98.16
|
1361
|
+
|
1362
|
+
\b Fix whitespace before "[section ..." bug.
|
1363
|
+
|
1364
|
+
|
1365
|
+
\S{cl-0.98.15} Version 0.98.15
|
1366
|
+
|
1367
|
+
\b Rdoff changes (?).
|
1368
|
+
|
1369
|
+
\b Fix fixes to memory leaks.
|
1370
|
+
|
1371
|
+
|
1372
|
+
\S{cl-0.98.14} Version 0.98.14
|
1373
|
+
|
1374
|
+
\b Fix memory leaks.
|
1375
|
+
|
1376
|
+
|
1377
|
+
\S{cl-0.98.13} Version 0.98.13
|
1378
|
+
|
1379
|
+
\b There was no 0.98.13
|
1380
|
+
|
1381
|
+
|
1382
|
+
\S{cl-0.98.12} Version 0.98.12
|
1383
|
+
|
1384
|
+
\b Update optimization (new function of "-O1")
|
1385
|
+
|
1386
|
+
\b Changes to test/bintest.asm (?).
|
1387
|
+
|
1388
|
+
|
1389
|
+
\S{cl-0.98.11} Version 0.98.11
|
1390
|
+
|
1391
|
+
\b Optimization changes.
|
1392
|
+
|
1393
|
+
\b Ndisasm fixed.
|
1394
|
+
|
1395
|
+
|
1396
|
+
\S{cl-0.98.10} Version 0.98.10
|
1397
|
+
|
1398
|
+
\b There was no 0.98.10
|
1399
|
+
|
1400
|
+
|
1401
|
+
\S{cl-0.98.09} Version 0.98.09
|
1402
|
+
|
1403
|
+
\b Add multiple sections support to "-f bin".
|
1404
|
+
|
1405
|
+
\b Changed GLOBAL_TEMP_BASE in outelf.c from 6 to 15.
|
1406
|
+
|
1407
|
+
\b Add "-v" as an alias to the "-r" switch.
|
1408
|
+
|
1409
|
+
\b Remove "#ifdef" from Tasm compatibility options.
|
1410
|
+
|
1411
|
+
\b Remove redundant size-overrides on "mov ds, ex", etc.
|
1412
|
+
|
1413
|
+
\b Fixes to SSE2, other insns.dat (?).
|
1414
|
+
|
1415
|
+
\b Enable uppercase "I" and "P" switches.
|
1416
|
+
|
1417
|
+
\b Case insinsitive "seg" and "wrt".
|
1418
|
+
|
1419
|
+
\b Update install.sh (?).
|
1420
|
+
|
1421
|
+
\b Allocate tokens in blocks.
|
1422
|
+
|
1423
|
+
\b Improve "invalid effective address" messages.
|
1424
|
+
|
1425
|
+
|
1426
|
+
\S{cl-0.98.08} Version 0.98.08
|
1427
|
+
|
1428
|
+
\b Add "\c{%strlen}" and "\c{%substr}" macro operators
|
1429
|
+
|
1430
|
+
\b Fixed broken c16.mac.
|
1431
|
+
|
1432
|
+
\b Unterminated string error reported.
|
1433
|
+
|
1434
|
+
\b Fixed bugs as per 0.98bf
|
1435
|
+
|
1436
|
+
|
1437
|
+
\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
|
1438
|
+
|
1439
|
+
Changes from 0.98.07 release to 98.09b as of 28-Oct-2001
|
1440
|
+
|
1441
|
+
\b More closely compatible with 0.98 when -O0 is implied
|
1442
|
+
or specified. Not strictly identical, since backward
|
1443
|
+
branches in range of short offsets are recognized, and signed
|
1444
|
+
byte values with no explicit size specification will be
|
1445
|
+
assembled as a single byte.
|
1446
|
+
|
1447
|
+
\b More forgiving with the PUSH instruction. 0.98 requires
|
1448
|
+
a size to be specified always. 0.98.09b will imply the size
|
1449
|
+
from the current BITS setting (16 or 32).
|
1450
|
+
|
1451
|
+
\b Changed definition of the optimization flag:
|
1452
|
+
|
1453
|
+
\c -O0 strict two-pass assembly, JMP and Jcc are
|
1454
|
+
\c handled more like 0.98, except that back-
|
1455
|
+
\c ward JMPs are short, if possible.
|
1456
|
+
\c
|
1457
|
+
\c -O1 strict two-pass assembly, but forward
|
1458
|
+
\c branches are assembled with code guaranteed
|
1459
|
+
\c to reach; may produce larger code than
|
1460
|
+
\c -O0, but will produce successful assembly
|
1461
|
+
\c more often if branch offset sizes are not
|
1462
|
+
\c specified.
|
1463
|
+
\c
|
1464
|
+
\c -O2 multi-pass optimization, minimize branch
|
1465
|
+
\c offsets; also will minimize signed immed-
|
1466
|
+
\c iate bytes, overriding size specification.
|
1467
|
+
\c
|
1468
|
+
\c -O3 like -O2, but more passes taken, if needed
|
1469
|
+
|
1470
|
+
|
1471
|
+
\S{cl-0.98.07 released 01/28/01} Version 0.98.07 released 01/28/01
|
1472
|
+
|
1473
|
+
\b Added Stepane Denis' SSE2 instructions to a *working*
|
1474
|
+
version of the code - some earlier versions were based on
|
1475
|
+
broken code - sorry 'bout that. version "0.98.07"
|
1476
|
+
|
1477
|
+
\b Cosmetic modifications to nasm.c, nasm.h,
|
1478
|
+
AUTHORS, MODIFIED
|
1479
|
+
|
1480
|
+
|
1481
|
+
\S{cl-0.98.06f released 01/18/01} Version 0.98.06f released 01/18/01
|
1482
|
+
|
1483
|
+
|
1484
|
+
\b Add "metalbrain"s jecxz bug fix in insns.dat
|
1485
|
+
|
1486
|
+
\b Alter nasmdoc.src to match - version "0.98.06f"
|
1487
|
+
|
1488
|
+
|
1489
|
+
\S{cl-0.98.06e released 01/09/01} Version 0.98.06e released 01/09/01
|
1490
|
+
|
1491
|
+
|
1492
|
+
\b Removed the "outforms.h" file - it appears to be
|
1493
|
+
someone's old backup of "outform.h". version "0.98.06e"
|
1494
|
+
|
1495
|
+
\b fbk - finally added the fix for the "multiple %includes bug",
|
1496
|
+
known since 7/27/99 - reported originally (?) and sent to
|
1497
|
+
us by Austin Lunnen - he reports that John Fine had a fix
|
1498
|
+
within the day. Here it is...
|
1499
|
+
|
1500
|
+
\b Nelson Rush resigns from the group. Big thanks to Nelson for
|
1501
|
+
his leadership and enthusiasm in getting these changes
|
1502
|
+
incorporated into Nasm!
|
1503
|
+
|
1504
|
+
\b fbk - [list +], [list -] directives - ineptly implemented, should
|
1505
|
+
be re-written or removed, perhaps.
|
1506
|
+
|
1507
|
+
\b Brian Raiter / fbk - "elfso bug" fix - applied to aoutb format
|
1508
|
+
as well - testing might be desirable...
|
1509
|
+
|
1510
|
+
\b James Seter - -postfix, -prefix command line switches.
|
1511
|
+
|
1512
|
+
\b Yuri Zaporozhets - rdoff utility changes.
|
1513
|
+
|
1514
|
+
|
1515
|
+
\S{cl-0.98p1} Version 0.98p1
|
1516
|
+
|
1517
|
+
\b GAS-like palign (Panos Minos)
|
1518
|
+
|
1519
|
+
\b FIXME: Someone, fill this in with details
|
1520
|
+
|
1521
|
+
|
1522
|
+
\S{cl-0.98bf (bug-fixed)} Version 0.98bf (bug-fixed)
|
1523
|
+
|
1524
|
+
\b Fixed - elf and aoutb bug - shared libraries
|
1525
|
+
- multiple "%include" bug in "-f obj"
|
1526
|
+
- jcxz, jecxz bug
|
1527
|
+
- unrecognized option bug in ndisasm
|
1528
|
+
|
1529
|
+
\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
|
1530
|
+
|
1531
|
+
\b Added signed byte optimizations for the 0x81/0x83 class
|
1532
|
+
of instructions: ADC, ADD, AND, CMP, OR, SBB, SUB, XOR:
|
1533
|
+
when used as 'ADD reg16,imm' or 'ADD reg32,imm.' Also
|
1534
|
+
optimization of signed byte form of 'PUSH imm' and 'IMUL
|
1535
|
+
reg,imm'/'IMUL reg,reg,imm.' No size specification is needed.
|
1536
|
+
|
1537
|
+
\b Added multi-pass JMP and Jcc offset optimization. Offsets
|
1538
|
+
on forward references will preferentially use the short form,
|
1539
|
+
without the need to code a specific size (short or near) for
|
1540
|
+
the branch. Added instructions for 'Jcc label' to use the
|
1541
|
+
form 'Jnotcc $+3/JMP label', in cases where a short offset
|
1542
|
+
is out of bounds. If compiling for a 386 or higher CPU, then
|
1543
|
+
the 386 form of Jcc will be used instead.
|
1544
|
+
|
1545
|
+
\> This feature is controlled by a new command-line switch: "O",
|
1546
|
+
(upper case letter O). "-O0" reverts the assembler to no
|
1547
|
+
extra optimization passes, "-O1" allows up to 5 extra passes,
|
1548
|
+
and "-O2"(default), allows up to 10 extra optimization passes.
|
1549
|
+
|
1550
|
+
\b Added a new directive: 'cpu XXX', where XXX is any of:
|
1551
|
+
8086, 186, 286, 386, 486, 586, pentium, 686, PPro, P2, P3 or
|
1552
|
+
Katmai. All are case insensitive. All instructions will
|
1553
|
+
be selected only if they apply to the selected cpu or lower.
|
1554
|
+
Corrected a couple of bugs in cpu-dependence in 'insns.dat'.
|
1555
|
+
|
1556
|
+
\b Added to 'standard.mac', the "use16" and "use32" forms of
|
1557
|
+
the "bits 16/32" directive. This is nothing new, just conforms
|
1558
|
+
to a lot of other assemblers. (minor)
|
1559
|
+
|
1560
|
+
\b Changed label allocation from 320/32 (10000 labels @ 200K+)
|
1561
|
+
to 32/37 (1000 labels); makes running under DOS much easier.
|
1562
|
+
Since additional label space is allocated dynamically, this
|
1563
|
+
should have no effect on large programs with lots of labels.
|
1564
|
+
The 37 is a prime, believed to be better for hashing. (minor)
|
1565
|
+
|
1566
|
+
|
1567
|
+
\S{cl-0.98.03} Version 0.98.03
|
1568
|
+
|
1569
|
+
"Integrated patchfile 0.98-0.98.01. I call this version 0.98.03 for
|
1570
|
+
historical reasons: 0.98.02 was trashed." --John Coffman
|
1571
|
+
<johninsd@san.rr.com>, 27-Jul-2000
|
1572
|
+
|
1573
|
+
\b Kendall Bennett's SciTech MGL changes
|
1574
|
+
|
1575
|
+
\b Note that you must define "TASM_COMPAT" at compile-time
|
1576
|
+
to get the Tasm Ideal Mode compatibility.
|
1577
|
+
|
1578
|
+
\b All changes can be compiled in and out using the TASM_COMPAT macros,
|
1579
|
+
and when compiled without TASM_COMPAT defined we get the exact same
|
1580
|
+
binary as the unmodified 0.98 sources.
|
1581
|
+
|
1582
|
+
\b standard.mac, macros.c: Added macros to ignore TASM directives before
|
1583
|
+
first include
|
1584
|
+
|
1585
|
+
\b nasm.h: Added extern declaration for tasm_compatible_mode
|
1586
|
+
|
1587
|
+
\b nasm.c: Added global variable tasm_compatible_mode
|
1588
|
+
|
1589
|
+
\b Added command line switch for TASM compatible mode (-t)
|
1590
|
+
|
1591
|
+
\b Changed version command line to reflect when compiled with TASM additions
|
1592
|
+
|
1593
|
+
\b Added response file processing to allow all arguments on a single
|
1594
|
+
line (response file is @resp rather than -@resp for NASM format).
|
1595
|
+
|
1596
|
+
\b labels.c: Changes islocal() macro to support TASM style @@local labels.
|
1597
|
+
|
1598
|
+
\b Added islocalchar() macro to support TASM style @@local labels.
|
1599
|
+
|
1600
|
+
\b parser.c: Added support for TASM style memory references (ie: mov
|
1601
|
+
[DWORD eax],10 rather than the NASM style mov DWORD [eax],10).
|
1602
|
+
|
1603
|
+
\b preproc.c: Added new directives, \c{%arg}, \c{%local}, \c{%stacksize} to directives
|
1604
|
+
table
|
1605
|
+
|
1606
|
+
\b Added support for TASM style directives without a leading % symbol.
|
1607
|
+
|
1608
|
+
\b Integrated a block of changes from Andrew Zabolotny <bit@eltech.ru>:
|
1609
|
+
|
1610
|
+
\b A new keyword \c{%xdefine} and its case-insensitive counterpart \c{%ixdefine}.
|
1611
|
+
They work almost the same way as \c{%define} and \c{%idefine} but expand
|
1612
|
+
the definition immediately, not on the invocation. Something like a cross
|
1613
|
+
between \c{%define} and \c{%assign}. The "x" suffix stands for "eXpand", so
|
1614
|
+
"xdefine" can be deciphered as "expand-and-define". Thus you can do
|
1615
|
+
things like this:
|
1616
|
+
|
1617
|
+
\c %assign ofs 0
|
1618
|
+
\c
|
1619
|
+
\c %macro arg 1
|
1620
|
+
\c %xdefine %1 dword [esp+ofs]
|
1621
|
+
\c %assign ofs ofs+4
|
1622
|
+
\c %endmacro
|
1623
|
+
|
1624
|
+
\b Changed the place where the expansion of %$name macros are expanded.
|
1625
|
+
Now they are converted into ..@ctxnum.name form when detokenizing, so
|
1626
|
+
there are no quirks as before when using %$name arguments to macros,
|
1627
|
+
in macros etc. For example:
|
1628
|
+
|
1629
|
+
\c %macro abc 1
|
1630
|
+
\c %define %1 hello
|
1631
|
+
\c %endm
|
1632
|
+
\c
|
1633
|
+
\c abc %$here
|
1634
|
+
\c %$here
|
1635
|
+
|
1636
|
+
\> Now last line will be expanded into "hello" as expected. This also allows
|
1637
|
+
for lots of goodies, a good example are extended "proc" macros included
|
1638
|
+
in this archive.
|
1639
|
+
|
1640
|
+
\b Added a check for "cstk" in smacro_defined() before calling get_ctx() -
|
1641
|
+
this allows for things like:
|
1642
|
+
|
1643
|
+
\c %ifdef %$abc
|
1644
|
+
\c %endif
|
1645
|
+
|
1646
|
+
\> to work without warnings even in no context.
|
1647
|
+
|
1648
|
+
\b Added a check for "cstk" in %if*ctx and %elif*ctx directives -
|
1649
|
+
this allows to use \c{%ifctx} without excessive warnings. If there is
|
1650
|
+
no active context, \c{%ifctx} goes through "false" branch.
|
1651
|
+
|
1652
|
+
\b Removed "user error: " prefix with \c{%error} directive: it just clobbers the
|
1653
|
+
output and has absolutely no functionality. Besides, this allows to write
|
1654
|
+
macros that does not differ from built-in functions in any way.
|
1655
|
+
|
1656
|
+
\b Added expansion of string that is output by \c{%error} directive. Now you
|
1657
|
+
can do things like:
|
1658
|
+
|
1659
|
+
\c %define hello(x) Hello, x!
|
1660
|
+
\c
|
1661
|
+
\c %define %$name andy
|
1662
|
+
\c %error "hello(%$name)"
|
1663
|
+
|
1664
|
+
\> Same happened with \c{%include} directive.
|
1665
|
+
|
1666
|
+
\b Now all directives that expect an identifier will try to expand and
|
1667
|
+
concatenate everything without whitespaces in between before usage.
|
1668
|
+
For example, with "unfixed" nasm the commands
|
1669
|
+
|
1670
|
+
\c %define %$abc hello
|
1671
|
+
\c %define __%$abc goodbye
|
1672
|
+
\c __%$abc
|
1673
|
+
|
1674
|
+
\> would produce "incorrect" output: last line will expand to
|
1675
|
+
|
1676
|
+
\c hello goodbyehello
|
1677
|
+
|
1678
|
+
\> Not quite what you expected, eh? :-) The answer is that preprocessor
|
1679
|
+
treats the \c{%define} construct as if it would be
|
1680
|
+
|
1681
|
+
\c %define __ %$abc goodbye
|
1682
|
+
|
1683
|
+
\> (note the white space between __ and %$abc). After my "fix" it
|
1684
|
+
will "correctly" expand into
|
1685
|
+
|
1686
|
+
\c goodbye
|
1687
|
+
|
1688
|
+
\> as expected. Note that I use quotes around words "correct", "incorrect"
|
1689
|
+
etc because this is rather a feature not a bug; however current behaviour
|
1690
|
+
is more logical (and allows more advanced macro usage :-).
|
1691
|
+
|
1692
|
+
Same change was applied to:
|
1693
|
+
\c{%push},\c{%macro},\c{%imacro},\c{%define},\c{%idefine},\c{%xdefine},\c{%ixdefine},
|
1694
|
+
\c{%assign},\c{%iassign},\c{%undef}
|
1695
|
+
|
1696
|
+
\b A new directive [WARNING {+|-}warning-id] have been added. It works only
|
1697
|
+
if the assembly phase is enabled (i.e. it doesn't work with nasm -e).
|
1698
|
+
|
1699
|
+
\b A new warning type: macro-selfref. By default this warning is disabled;
|
1700
|
+
when enabled NASM warns when a macro self-references itself; for example
|
1701
|
+
the following source:
|
1702
|
+
|
1703
|
+
\c [WARNING macro-selfref]
|
1704
|
+
\c
|
1705
|
+
\c %macro push 1-*
|
1706
|
+
\c %rep %0
|
1707
|
+
\c push %1
|
1708
|
+
\c %rotate 1
|
1709
|
+
\c %endrep
|
1710
|
+
\c %endmacro
|
1711
|
+
\c
|
1712
|
+
\c push eax,ebx,ecx
|
1713
|
+
|
1714
|
+
\> will produce a warning, but if we remove the first line we won't see it
|
1715
|
+
anymore (which is The Right Thing To Do {tm} IMHO since C preprocessor
|
1716
|
+
eats such constructs without warnings at all).
|
1717
|
+
|
1718
|
+
\b Added a "error" routine to preprocessor which always will set ERR_PASS1
|
1719
|
+
bit in severity_code. This removes annoying repeated errors on first
|
1720
|
+
and second passes from preprocessor.
|
1721
|
+
|
1722
|
+
\b Added the %+ operator in single-line macros for concatenating two
|
1723
|
+
identifiers. Usage example:
|
1724
|
+
|
1725
|
+
\c %define _myfunc _otherfunc
|
1726
|
+
\c %define cextern(x) _ %+ x
|
1727
|
+
\c cextern (myfunc)
|
1728
|
+
|
1729
|
+
\> After first expansion, third line will become "_myfunc". After this
|
1730
|
+
expansion is performed again so it becomes "_otherunc".
|
1731
|
+
|
1732
|
+
\b Now if preprocessor is in a non-emitting state, no warning or error
|
1733
|
+
will be emitted. Example:
|
1734
|
+
|
1735
|
+
\c %if 1
|
1736
|
+
\c mov eax,ebx
|
1737
|
+
\c %else
|
1738
|
+
\c put anything you want between these two brackets,
|
1739
|
+
\c even macro-parameter references %1 or local
|
1740
|
+
\c labels %$zz or macro-local labels %%zz - no
|
1741
|
+
\c warning will be emitted.
|
1742
|
+
\c %endif
|
1743
|
+
|
1744
|
+
\b Context-local variables on expansion as a last resort are looked up
|
1745
|
+
in outer contexts. For example, the following piece:
|
1746
|
+
|
1747
|
+
\c %push outer
|
1748
|
+
\c %define %$a [esp]
|
1749
|
+
\c
|
1750
|
+
\c %push inner
|
1751
|
+
\c %$a
|
1752
|
+
\c %pop
|
1753
|
+
\c %pop
|
1754
|
+
|
1755
|
+
\> will expand correctly the fourth line to [esp]; if we'll define another
|
1756
|
+
%$a inside the "inner" context, it will take precedence over outer
|
1757
|
+
definition. However, this modification has been applied only to
|
1758
|
+
expand_smacro and not to smacro_define: as a consequence expansion
|
1759
|
+
looks in outer contexts, but \c{%ifdef} won't look in outer contexts.
|
1760
|
+
|
1761
|
+
\> This behaviour is needed because we don't want nested contexts to
|
1762
|
+
act on already defined local macros. Example:
|
1763
|
+
|
1764
|
+
\c %define %$arg1 [esp+4]
|
1765
|
+
\c test eax,eax
|
1766
|
+
\c if nz
|
1767
|
+
\c mov eax,%$arg1
|
1768
|
+
\c endif
|
1769
|
+
|
1770
|
+
\> In this example the "if" mmacro enters into the "if" context, so %$arg1
|
1771
|
+
is not valid anymore inside "if". Of course it could be worked around
|
1772
|
+
by using explicitely %$$arg1 but this is ugly IMHO.
|
1773
|
+
|
1774
|
+
\b Fixed memory leak in \c{%undef}. The origline wasn't freed before
|
1775
|
+
exiting on success.
|
1776
|
+
|
1777
|
+
\b Fixed trap in preprocessor when line expanded to empty set of tokens.
|
1778
|
+
This happens, for example, in the following case:
|
1779
|
+
|
1780
|
+
\c #define SOMETHING
|
1781
|
+
\c SOMETHING
|
1782
|
+
|
1783
|
+
|
1784
|
+
\S{cl-0.98} Version 0.98
|
1785
|
+
|
1786
|
+
All changes since NASM 0.98p3 have been produced by H. Peter Anvin <hpa@zytor.com>.
|
1787
|
+
|
1788
|
+
\b The documentation comment delimiter is \# not #.
|
1789
|
+
|
1790
|
+
\b Allow EQU definitions to refer to external labels; reported by
|
1791
|
+
Pedro Gimeno.
|
1792
|
+
|
1793
|
+
\b Re-enable support for RDOFF v1; reported by Pedro Gimeno.
|
1794
|
+
|
1795
|
+
\b Updated License file per OK from Simon and Julian.
|
1796
|
+
|
1797
|
+
|
1798
|
+
\S{cl-0.98p9} Version 0.98p9
|
1799
|
+
|
1800
|
+
\b Update documentation (although the instruction set reference will
|
1801
|
+
have to wait; I don't want to hold up the 0.98 release for it.)
|
1802
|
+
|
1803
|
+
\b Verified that the NASM implementation of the PEXTRW and PMOVMSKB
|
1804
|
+
instructions is correct. The encoding differs from what the Intel
|
1805
|
+
manuals document, but the Pentium III behaviour matches NASM, not
|
1806
|
+
the Intel manuals.
|
1807
|
+
|
1808
|
+
\b Fix handling of implicit sizes in PSHUFW and PINSRW, reported by
|
1809
|
+
Stefan Hoffmeister.
|
1810
|
+
|
1811
|
+
\b Resurrect the -s option, which was removed when changing the
|
1812
|
+
diagnostic output to stdout.
|
1813
|
+
|
1814
|
+
|
1815
|
+
\S{cl-0.98p8} Version 0.98p8
|
1816
|
+
|
1817
|
+
\b Fix for "DB" when NASM is running on a bigendian machine.
|
1818
|
+
|
1819
|
+
\b Invoke insns.pl once for each output script, making Makefile.in
|
1820
|
+
legal for "make -j".
|
1821
|
+
|
1822
|
+
\b Improve the Unix configure-based makefiles to make package
|
1823
|
+
creation easier.
|
1824
|
+
|
1825
|
+
\b Included an RPM .spec file for building RPM (RedHat Package Manager)
|
1826
|
+
packages on Linux or Unix systems.
|
1827
|
+
|
1828
|
+
\b Fix Makefile dependency problems.
|
1829
|
+
|
1830
|
+
\b Change src/rdsrc.pl to include sectioning information in info
|
1831
|
+
output; required for install-info to work.
|
1832
|
+
|
1833
|
+
\b Updated the RDOFF distribution to version 2 from Jules; minor
|
1834
|
+
massaging to make it compile in my environment.
|
1835
|
+
|
1836
|
+
\b Split doc files that can be built by anyone with a Perl interpreter off
|
1837
|
+
into a separate archive.
|
1838
|
+
|
1839
|
+
\b "Dress rehearsal" release!
|
1840
|
+
|
1841
|
+
|
1842
|
+
\S{cl-0.98p7} Version 0.98p7
|
1843
|
+
|
1844
|
+
\b Fixed opcodes with a third byte-sized immediate argument to not
|
1845
|
+
complain if given "byte" on the immediate.
|
1846
|
+
|
1847
|
+
\b Allow \c{%undef} to remove single-line macros with arguments. This
|
1848
|
+
matches the behaviour of #undef in the C preprocessor.
|
1849
|
+
|
1850
|
+
\b Allow -d, -u, -i and -p to be specified as -D, -U, -I and -P for
|
1851
|
+
compatibility with most C compilers and preprocessors. This allows
|
1852
|
+
Makefile options to be shared between cc and nasm, for example.
|
1853
|
+
|
1854
|
+
\b Minor cleanups.
|
1855
|
+
|
1856
|
+
\b Went through the list of Katmai instructions and hopefully fixed the
|
1857
|
+
(rather few) mistakes in it.
|
1858
|
+
|
1859
|
+
\b (Hopefully) fixed a number of disassembler bugs related to ambiguous
|
1860
|
+
instructions (disambiguated by -p) and SSE instructions with REP.
|
1861
|
+
|
1862
|
+
\b Fix for bug reported by Mark Junger: "call dword 0x12345678" should
|
1863
|
+
work and may add an OSP (affected CALL, JMP, Jcc).
|
1864
|
+
|
1865
|
+
\b Fix for environments when "stderr" isn't a compile-time constant.
|
1866
|
+
|
1867
|
+
|
1868
|
+
\S{cl-0.98p6} Version 0.98p6
|
1869
|
+
|
1870
|
+
|
1871
|
+
\b Took officially over coordination of the 0.98 release; so drop
|
1872
|
+
the p3.x notation. Skipped p4 and p5 to avoid confusion with John
|
1873
|
+
Fine's J4 and J5 releases.
|
1874
|
+
|
1875
|
+
\b Update the documentation; however, it still doesn't include
|
1876
|
+
documentation for the various new instructions. I somehow wonder if
|
1877
|
+
it makes sense to have an instruction set reference in the assembler
|
1878
|
+
manual when Intel et al have PDF versions of their manuals online.
|
1879
|
+
|
1880
|
+
\b Recognize "idt" or "centaur" for the -p option to ndisasm.
|
1881
|
+
|
1882
|
+
\b Changed error messages back to stderr where they belong, but add an
|
1883
|
+
-E option to redirect them elsewhere (the DOS shell cannot redirect
|
1884
|
+
stderr.)
|
1885
|
+
|
1886
|
+
\b -M option to generate Makefile dependencies (based on code from Alex
|
1887
|
+
Verstak.)
|
1888
|
+
|
1889
|
+
\b \c{%undef} preprocessor directive, and -u option, that undefines a
|
1890
|
+
single-line macro.
|
1891
|
+
|
1892
|
+
\b OS/2 Makefile (Mkfiles/Makefile.os2) for Borland under OS/2; from
|
1893
|
+
Chuck Crayne.
|
1894
|
+
|
1895
|
+
\b Various minor bugfixes (reported by):
|
1896
|
+
- Dangling \c{%s} in preproc.c (Martin Junker)
|
1897
|
+
|
1898
|
+
\b THERE ARE KNOWN BUGS IN SSE AND THE OTHER KATMAI INSTRUCTIONS. I am
|
1899
|
+
on a trip and didn't bring the Katmai instruction reference, so I
|
1900
|
+
can't work on them right now.
|
1901
|
+
|
1902
|
+
\b Updated the License file per agreement with Simon and Jules to
|
1903
|
+
include a GPL distribution clause.
|
1904
|
+
|
1905
|
+
|
1906
|
+
\S{cl-0.98p3.7} Version 0.98p3.7
|
1907
|
+
|
1908
|
+
\b (Hopefully) fixed the canned Makefiles to include the outrdf2 and
|
1909
|
+
zoutieee modules.
|
1910
|
+
|
1911
|
+
\b Renamed changes.asm to changed.asm.
|
1912
|
+
|
1913
|
+
|
1914
|
+
\S{cl-0.98p3.6} Version 0.98p3.6
|
1915
|
+
|
1916
|
+
\b Fixed a bunch of instructions that were added in 0.98p3.5 which had
|
1917
|
+
memory operands, and the address-size prefix was missing from the
|
1918
|
+
instruction pattern.
|
1919
|
+
|
1920
|
+
|
1921
|
+
\S{cl-0.98p3.5} Version 0.98p3.5
|
1922
|
+
|
1923
|
+
\b Merged in changes from John S. Fine's 0.98-J5 release. John's based
|
1924
|
+
0.98-J5 on my 0.98p3.3 release; this merges the changes.
|
1925
|
+
|
1926
|
+
\b Expanded the instructions flag field to a long so we can fit more
|
1927
|
+
flags; mark SSE (KNI) and AMD or Katmai-specific instructions as
|
1928
|
+
such.
|
1929
|
+
|
1930
|
+
\b Fix the "PRIV" flag on a bunch of instructions, and create new
|
1931
|
+
"PROT" flag for protected-mode-only instructions (orthogonal to if
|
1932
|
+
the instruction is privileged!) and new "SMM" flag for SMM-only
|
1933
|
+
instructions.
|
1934
|
+
|
1935
|
+
\b Added AMD-only SYSCALL and SYSRET instructions.
|
1936
|
+
|
1937
|
+
\b Make SSE actually work, and add new Katmai MMX instructions.
|
1938
|
+
|
1939
|
+
\b Added a -p (preferred vendor) option to ndisasm so that it can
|
1940
|
+
distinguish e.g. Cyrix opcodes also used in SSE. For example:
|
1941
|
+
|
1942
|
+
\c ndisasm -p cyrix aliased.bin
|
1943
|
+
\c 00000000 670F514310 paddsiw mm0,[ebx+0x10]
|
1944
|
+
\c 00000005 670F514320 paddsiw mm0,[ebx+0x20]
|
1945
|
+
\c ndisasm -p intel aliased.bin
|
1946
|
+
\c 00000000 670F514310 sqrtps xmm0,[ebx+0x10]
|
1947
|
+
\c 00000005 670F514320 sqrtps xmm0,[ebx+0x20]
|
1948
|
+
|
1949
|
+
\b Added a bunch of Cyrix-specific instructions.
|
1950
|
+
|
1951
|
+
|
1952
|
+
\S{cl-0.98p3.4} Version 0.98p3.4
|
1953
|
+
|
1954
|
+
\b Made at least an attempt to modify all the additional Makefiles (in
|
1955
|
+
the Mkfiles directory). I can't test it, but this was the best I
|
1956
|
+
could do.
|
1957
|
+
|
1958
|
+
\b DOS DJGPP+"Opus Make" Makefile from John S. Fine.
|
1959
|
+
|
1960
|
+
\b changes.asm changes from John S. Fine.
|
1961
|
+
|
1962
|
+
|
1963
|
+
\S{cl-0.98p3.3} Version 0.98p3.3
|
1964
|
+
|
1965
|
+
\b Patch from Conan Brink to allow nesting of \c{%rep} directives.
|
1966
|
+
|
1967
|
+
\b If we're going to allow INT01 as an alias for INT1/ICEBP (one of
|
1968
|
+
Jules 0.98p3 changes), then we should allow INT03 as an alias for INT3
|
1969
|
+
as well.
|
1970
|
+
|
1971
|
+
\b Updated changes.asm to include the latest changes.
|
1972
|
+
|
1973
|
+
\b Tried to clean up the <CR>s that had snuck in from a DOS/Windows
|
1974
|
+
environment into my Unix environment, and try to make sure than
|
1975
|
+
DOS/Windows users get them back.
|
1976
|
+
|
1977
|
+
\b We would silently generate broken tools if insns.dat wasn't sorted
|
1978
|
+
properly. Change insns.pl so that the order doesn't matter.
|
1979
|
+
|
1980
|
+
\b Fix bug in insns.pl (introduced by me) which would cause conditional
|
1981
|
+
instructions to have an extra "cc" in disassembly, e.g. "jnz"
|
1982
|
+
disassembled as "jccnz".
|
1983
|
+
|
1984
|
+
|
1985
|
+
\S{cl-0.98p3.2} Version 0.98p3.2
|
1986
|
+
|
1987
|
+
\b Merged in John S. Fine's changes from his 0.98-J4 prerelease; see
|
1988
|
+
http://www.csoft.net/cz/johnfine/
|
1989
|
+
|
1990
|
+
\b Changed previous "spotless" Makefile target (appropriate for distribution)
|
1991
|
+
to "distclean", and added "cleaner" target which is same as "clean"
|
1992
|
+
except deletes files generated by Perl scripts; "spotless" is union.
|
1993
|
+
|
1994
|
+
\b Removed BASIC programs from distribution. Get a Perl interpreter
|
1995
|
+
instead (see below.)
|
1996
|
+
|
1997
|
+
\b Calling this "pre-release 3.2" rather than "p3-hpa2" because of
|
1998
|
+
John's contributions.
|
1999
|
+
|
2000
|
+
\b Actually link in the IEEE output format (zoutieee.c); fix a bunch of
|
2001
|
+
compiler warnings in that file. Note I don't know what IEEE output
|
2002
|
+
is supposed to look like, so these changes were made "blind".
|
2003
|
+
|
2004
|
+
|
2005
|
+
\S{cl-0.98p3-hpa} Version 0.98p3-hpa
|
2006
|
+
|
2007
|
+
\b Merged nasm098p3.zip with nasm-0.97.tar.gz to create a fully
|
2008
|
+
buildable version for Unix systems (Makefile.in updates, etc.)
|
2009
|
+
|
2010
|
+
\b Changed insns.pl to create the instruction tables in nasm.h and
|
2011
|
+
names.c, so that a new instruction can be added by adding it *only*
|
2012
|
+
to insns.dat.
|
2013
|
+
|
2014
|
+
\b Added the following new instructions: SYSENTER, SYSEXIT, FXSAVE,
|
2015
|
+
FXRSTOR, UD1, UD2 (the latter two are two opcodes that Intel
|
2016
|
+
guarantee will never be used; one of them is documented as UD2 in
|
2017
|
+
Intel documentation, the other one just as "Undefined Opcode" --
|
2018
|
+
calling it UD1 seemed to make sense.)
|
2019
|
+
|
2020
|
+
\b MAX_SYMBOL was defined to be 9, but LOADALL286 and LOADALL386 are 10
|
2021
|
+
characters long. Now MAX_SYMBOL is derived from insns.dat.
|
2022
|
+
|
2023
|
+
\b A note on the BASIC programs included: forget them. insns.bas is
|
2024
|
+
already out of date. Get yourself a Perl interpreter for your
|
2025
|
+
platform of choice at
|
2026
|
+
\W{http://www.cpan.org/ports/index.html}{http://www.cpan.org/ports/index.html}.
|
2027
|
+
|
2028
|
+
|
2029
|
+
\S{cl-0.98p3} Version 0.98 pre-release 3
|
2030
|
+
|
2031
|
+
\b added response file support, improved command line handling, new layout
|
2032
|
+
help screen
|
2033
|
+
|
2034
|
+
\b fixed limit checking bug, 'OUT byte nn, reg' bug, and a couple of rdoff
|
2035
|
+
related bugs, updated Wishlist; 0.98 Prerelease 3.
|
2036
|
+
|
2037
|
+
|
2038
|
+
\S{cl-0.98p2} Version 0.98 pre-release 2
|
2039
|
+
|
2040
|
+
\b fixed bug in outcoff.c to do with truncating section names longer
|
2041
|
+
than 8 characters, referencing beyond end of string; 0.98 pre-release 2
|
2042
|
+
|
2043
|
+
|
2044
|
+
\S{cl-0.98p1} Version 0.98 pre-release 1
|
2045
|
+
|
2046
|
+
\b Fixed a bug whereby STRUC didn't work at all in RDF.
|
2047
|
+
|
2048
|
+
\b Fixed a problem with group specification in PUBDEFs in OBJ.
|
2049
|
+
|
2050
|
+
\b Improved ease of adding new output formats. Contribution due to
|
2051
|
+
Fox Cutter.
|
2052
|
+
|
2053
|
+
\b Fixed a bug in relocations in the `bin' format: was showing up when
|
2054
|
+
a relocatable reference crossed an 8192-byte boundary in any output
|
2055
|
+
section.
|
2056
|
+
|
2057
|
+
\b Fixed a bug in local labels: local-label lookups were inconsistent
|
2058
|
+
between passes one and two if an EQU occurred between the definition
|
2059
|
+
of a global label and the subsequent use of a local label local to
|
2060
|
+
that global.
|
2061
|
+
|
2062
|
+
\b Fixed a seg-fault in the preprocessor (again) which happened when
|
2063
|
+
you use a blank line as the first line of a multi-line macro
|
2064
|
+
definition and then defined a label on the same line as a call to
|
2065
|
+
that macro.
|
2066
|
+
|
2067
|
+
\b Fixed a stale-pointer bug in the handling of the NASM environment
|
2068
|
+
variable. Thanks to Thomas McWilliams.
|
2069
|
+
|
2070
|
+
\b ELF had a hard limit on the number of sections which caused
|
2071
|
+
segfaults when transgressed. Fixed.
|
2072
|
+
|
2073
|
+
\b Added ability for ndisasm to read from stdin by using `-' as the
|
2074
|
+
filename.
|
2075
|
+
|
2076
|
+
\b ndisasm wasn't outputting the TO keyword. Fixed.
|
2077
|
+
|
2078
|
+
\b Fixed error cascade on bogus expression in \c{%if} - an error in
|
2079
|
+
evaluation was causing the entire \c{%if} to be discarded, thus creating
|
2080
|
+
trouble later when the \c{%else} or \c{%endif} was encountered.
|
2081
|
+
|
2082
|
+
\b Forward reference tracking was instruction-granular not operand-
|
2083
|
+
granular, which was causing 286-specific code to be generated
|
2084
|
+
needlessly on code of the form `shr word [forwardref],1'. Thanks to
|
2085
|
+
Jim Hague for sending a patch.
|
2086
|
+
|
2087
|
+
\b All messages now appear on stdout, as sending them to stderr serves
|
2088
|
+
no useful purpose other than to make redirection difficult.
|
2089
|
+
|
2090
|
+
\b Fixed the problem with EQUs pointing to an external symbol - this
|
2091
|
+
now generates an error message.
|
2092
|
+
|
2093
|
+
\b Allowed multiple size prefixes to an operand, of which only the first
|
2094
|
+
is taken into account.
|
2095
|
+
|
2096
|
+
\b Incorporated John Fine's changes, including fixes of a large number
|
2097
|
+
of preprocessor bugs, some small problems in OBJ, and a reworking of
|
2098
|
+
label handling to define labels before their line is assembled, rather
|
2099
|
+
than after.
|
2100
|
+
|
2101
|
+
\b Reformatted a lot of the source code to be more readable. Included
|
2102
|
+
'coding.txt' as a guideline for how to format code for contributors.
|
2103
|
+
|
2104
|
+
\b Stopped nested \c{%reps} causing a panic - they now cause a slightly more
|
2105
|
+
friendly error message instead.
|
2106
|
+
|
2107
|
+
\b Fixed floating point constant problems (patch by Pedro Gimeno)
|
2108
|
+
|
2109
|
+
\b Fixed the return value of insn_size() not being checked for -1, indicating
|
2110
|
+
an error.
|
2111
|
+
|
2112
|
+
\b Incorporated 3Dnow! instructions.
|
2113
|
+
|
2114
|
+
\b Fixed the 'mov eax, eax + ebx' bug.
|
2115
|
+
|
2116
|
+
\b Fixed the GLOBAL EQU bug in ELF. Released developers release 3.
|
2117
|
+
|
2118
|
+
\b Incorporated John Fine's command line parsing changes
|
2119
|
+
|
2120
|
+
\b Incorporated David Lindauer's OMF debug support
|
2121
|
+
|
2122
|
+
\b Made changes for LCC 4.0 support (\c{__NASM_CDecl__}, removed register size
|
2123
|
+
specification warning when sizes agree).
|
2124
|
+
|
2125
|
+
|
2126
|
+
\H{cl-0.9x} NASM 0.9 Series
|
2127
|
+
|
2128
|
+
Revisions before 0.98.
|
2129
|
+
|
2130
|
+
|
2131
|
+
\S{cl-0.97} Version 0.97 released December 1997
|
2132
|
+
|
2133
|
+
\b This was entirely a bug-fix release to 0.96, which seems to have got
|
2134
|
+
cursed. Silly me.
|
2135
|
+
|
2136
|
+
\b Fixed stupid mistake in OBJ which caused `MOV EAX,<constant>' to
|
2137
|
+
fail. Caused by an error in the `MOV EAX,<segment>' support.
|
2138
|
+
|
2139
|
+
\b ndisasm hung at EOF when compiled with lcc on Linux because lcc on
|
2140
|
+
Linux somehow breaks feof(). ndisasm now does not rely on feof().
|
2141
|
+
|
2142
|
+
\b A heading in the documentation was missing due to a markup error in
|
2143
|
+
the indexing. Fixed.
|
2144
|
+
|
2145
|
+
\b Fixed failure to update all pointers on realloc() within extended-
|
2146
|
+
operand code in parser.c. Was causing wrong behaviour and seg faults
|
2147
|
+
on lines such as `dd 0.0,0.0,0.0,0.0,...'
|
2148
|
+
|
2149
|
+
\b Fixed a subtle preprocessor bug whereby invoking one multi-line
|
2150
|
+
macro on the first line of the expansion of another, when the second
|
2151
|
+
had been invoked with a label defined before it, didn't expand the
|
2152
|
+
inner macro.
|
2153
|
+
|
2154
|
+
\b Added internal.doc back in to the distribution archives - it was
|
2155
|
+
missing in 0.96 *blush*
|
2156
|
+
|
2157
|
+
\b Fixed bug causing 0.96 to be unable to assemble its own test files,
|
2158
|
+
specifically objtest.asm. *blush again*
|
2159
|
+
|
2160
|
+
\b Fixed seg-faults and bogus error messages caused by mismatching
|
2161
|
+
\c{%rep} and \c{%endrep} within multi-line macro definitions.
|
2162
|
+
|
2163
|
+
\b Fixed a problem with buffer overrun in OBJ, which was causing
|
2164
|
+
corruption at ends of long PUBDEF records.
|
2165
|
+
|
2166
|
+
\b Separated DOS archives into main-program and documentation to reduce
|
2167
|
+
download size.
|
2168
|
+
|
2169
|
+
|
2170
|
+
\S{cl-0.96} Version 0.96 released November 1997
|
2171
|
+
|
2172
|
+
\b Fixed a bug whereby, if `nasm sourcefile' would cause a filename
|
2173
|
+
collision warning and put output into `nasm.out', then `nasm
|
2174
|
+
sourcefile -o outputfile' still gave the warning even though the
|
2175
|
+
`-o' was honoured.
|
2176
|
+
Fixed name pollution under Digital UNIX: one of its header files
|
2177
|
+
defined R_SP, which broke the enum in nasm.h.
|
2178
|
+
|
2179
|
+
\b Fixed minor instruction table problems: FUCOM and FUCOMP didn't have
|
2180
|
+
two-operand forms; NDISASM didn't recognise the longer register
|
2181
|
+
forms of PUSH and POP (eg FF F3 for PUSH BX); TEST mem,imm32 was
|
2182
|
+
flagged as undocumented; the 32-bit forms of CMOV had 16-bit operand
|
2183
|
+
size prefixes; `AAD imm' and `AAM imm' are no longer flagged as
|
2184
|
+
undocumented because the Intel Architecture reference documents
|
2185
|
+
them.
|
2186
|
+
|
2187
|
+
\b Fixed a problem with the local-label mechanism, whereby strange
|
2188
|
+
types of symbol (EQUs, auto-defined OBJ segment base symbols)
|
2189
|
+
interfered with the `previous global label' value and screwed up
|
2190
|
+
local labels.
|
2191
|
+
|
2192
|
+
\b Fixed a bug whereby the stub preprocessor didn't communicate with
|
2193
|
+
the listing file generator, so that the -a and -l options in
|
2194
|
+
conjunction would produce a useless listing file.
|
2195
|
+
|
2196
|
+
\b Merged `os2' object file format back into `obj', after discovering
|
2197
|
+
that `obj' _also_ shouldn't have a link pass separator in a module
|
2198
|
+
containing a non-trivial MODEND. Flat segments are now declared
|
2199
|
+
using the FLAT attribute. `os2' is no longer a valid object format
|
2200
|
+
name: use `obj'.
|
2201
|
+
|
2202
|
+
\b Removed the fixed-size temporary storage in the evaluator. Very very
|
2203
|
+
long expressions (like `mov ax,1+1+1+1+...' for two hundred 1s or
|
2204
|
+
so) should now no longer crash NASM.
|
2205
|
+
|
2206
|
+
\b Fixed a bug involving segfaults on disassembly of MMX instructions,
|
2207
|
+
by changing the meaning of one of the operand-type flags in nasm.h.
|
2208
|
+
This may cause other apparently unrelated MMX problems; it needs to
|
2209
|
+
be tested thoroughly.
|
2210
|
+
|
2211
|
+
\b Fixed some buffer overrun problems with large OBJ output files.
|
2212
|
+
Thanks to DJ Delorie for the bug report and fix.
|
2213
|
+
|
2214
|
+
\b Made preprocess-only mode actually listen to the \c{%line} markers as it
|
2215
|
+
prints them, so that it can report errors more sanely.
|
2216
|
+
|
2217
|
+
\b Re-designed the evaluator to keep more sensible track of expressions
|
2218
|
+
involving forward references: can now cope with previously-nightmare
|
2219
|
+
situations such as:
|
2220
|
+
|
2221
|
+
\c mov ax,foo | bar
|
2222
|
+
\c foo equ 1
|
2223
|
+
\c bar equ 2
|
2224
|
+
|
2225
|
+
\b Added the ALIGN and ALIGNB standard macros.
|
2226
|
+
|
2227
|
+
\b Added PIC support in ELF: use of WRT to obtain the four extra
|
2228
|
+
relocation types needed.
|
2229
|
+
|
2230
|
+
\b Added the ability for output file formats to define their own
|
2231
|
+
extensions to the GLOBAL, COMMON and EXTERN directives.
|
2232
|
+
|
2233
|
+
\b Implemented common-variable alignment, and global-symbol type and
|
2234
|
+
size declarations, in ELF.
|
2235
|
+
|
2236
|
+
\b Implemented NEAR and FAR keywords for common variables, plus
|
2237
|
+
far-common element size specification, in OBJ.
|
2238
|
+
|
2239
|
+
\b Added a feature whereby EXTERNs and COMMONs in OBJ can be given a
|
2240
|
+
default WRT specification (either a segment or a group).
|
2241
|
+
|
2242
|
+
\b Transformed the Unix NASM archive into an auto-configuring package.
|
2243
|
+
|
2244
|
+
\b Added a sanity-check for people applying SEG to things which are
|
2245
|
+
already segment bases: this previously went unnoticed by the SEG
|
2246
|
+
processing and caused OBJ-driver panics later.
|
2247
|
+
|
2248
|
+
\b Added the ability, in OBJ format, to deal with `MOV EAX,<segment>'
|
2249
|
+
type references: OBJ doesn't directly support dword-size segment
|
2250
|
+
base fixups, but as long as the low two bytes of the constant term
|
2251
|
+
are zero, a word-size fixup can be generated instead and it will
|
2252
|
+
work.
|
2253
|
+
|
2254
|
+
\b Added the ability to specify sections' alignment requirements in
|
2255
|
+
Win32 object files and pure binary files.
|
2256
|
+
|
2257
|
+
\b Added preprocess-time expression evaluation: the \c{%assign} (and
|
2258
|
+
\c{%iassign}) directive and the bare \c{%if} (and \c{%elif}) conditional. Added
|
2259
|
+
relational operators to the evaluator, for use only in \c{%if}
|
2260
|
+
constructs: the standard relationals = < > <= >= <> (and C-like
|
2261
|
+
synonyms == and !=) plus low-precedence logical operators &&, ^^ and
|
2262
|
+
||.
|
2263
|
+
|
2264
|
+
\b Added a preprocessor repeat construct: \c{%rep} / \c{%exitrep} / \c{%endrep}.
|
2265
|
+
|
2266
|
+
\b Added the __FILE__ and __LINE__ standard macros.
|
2267
|
+
|
2268
|
+
\b Added a sanity check for number constants being greater than
|
2269
|
+
0xFFFFFFFF. The warning can be disabled.
|
2270
|
+
|
2271
|
+
\b Added the %0 token whereby a variadic multi-line macro can tell how
|
2272
|
+
many parameters it's been given in a specific invocation.
|
2273
|
+
|
2274
|
+
\b Added \c{%rotate}, allowing multi-line macro parameters to be cycled.
|
2275
|
+
|
2276
|
+
\b Added the `*' option for the maximum parameter count on multi-line
|
2277
|
+
macros, allowing them to take arbitrarily many parameters.
|
2278
|
+
|
2279
|
+
\b Added the ability for the user-level forms of EXTERN, GLOBAL and
|
2280
|
+
COMMON to take more than one argument.
|
2281
|
+
|
2282
|
+
\b Added the IMPORT and EXPORT directives in OBJ format, to deal with
|
2283
|
+
Windows DLLs.
|
2284
|
+
|
2285
|
+
\b Added some more preprocessor \c{%if} constructs: \c{%ifidn} / \c{%ifidni} (exact
|
2286
|
+
textual identity), and \c{%ifid} / \c{%ifnum} / \c{%ifstr} (token type testing).
|
2287
|
+
|
2288
|
+
\b Added the ability to distinguish SHL AX,1 (the 8086 version) from
|
2289
|
+
SHL AX,BYTE 1 (the 286-and-upwards version whose constant happens to
|
2290
|
+
be 1).
|
2291
|
+
|
2292
|
+
\b Added NetBSD/FreeBSD/OpenBSD's variant of a.out format, complete
|
2293
|
+
with PIC shared library features.
|
2294
|
+
|
2295
|
+
\b Changed NASM's idiosyncratic handling of FCLEX, FDISI, FENI, FINIT,
|
2296
|
+
FSAVE, FSTCW, FSTENV, and FSTSW to bring it into line with the
|
2297
|
+
otherwise accepted standard. The previous behaviour, though it was a
|
2298
|
+
deliberate feature, was a deliberate feature based on a
|
2299
|
+
misunderstanding. Apologies for the inconvenience.
|
2300
|
+
|
2301
|
+
\b Improved the flexibility of ABSOLUTE: you can now give it an
|
2302
|
+
expression rather than being restricted to a constant, and it can
|
2303
|
+
take relocatable arguments as well.
|
2304
|
+
|
2305
|
+
\b Added the ability for a variable to be declared as EXTERN multiple
|
2306
|
+
times, and the subsequent definitions are just ignored.
|
2307
|
+
|
2308
|
+
\b We now allow instruction prefixes (CS, DS, LOCK, REPZ etc) to be
|
2309
|
+
alone on a line (without a following instruction).
|
2310
|
+
|
2311
|
+
\b Improved sanity checks on whether the arguments to EXTERN, GLOBAL
|
2312
|
+
and COMMON are valid identifiers.
|
2313
|
+
|
2314
|
+
\b Added misc/exebin.mac to allow direct generation of .EXE files by
|
2315
|
+
hacking up an EXE header using DB and DW; also added test/binexe.asm
|
2316
|
+
to demonstrate the use of this. Thanks to Yann Guidon for
|
2317
|
+
contributing the EXE header code.
|
2318
|
+
|
2319
|
+
\b ndisasm forgot to check whether the input file had been successfully
|
2320
|
+
opened. Now it does. Doh!
|
2321
|
+
|
2322
|
+
\b Added the Cyrix extensions to the MMX instruction set.
|
2323
|
+
|
2324
|
+
\b Added a hinting mechanism to allow [EAX+EBX] and [EBX+EAX] to be
|
2325
|
+
assembled differently. This is important since [ESI+EBP] and
|
2326
|
+
[EBP+ESI] have different default base segment registers.
|
2327
|
+
|
2328
|
+
\b Added support for the PharLap OMF extension for 4096-byte segment
|
2329
|
+
alignment.
|
2330
|
+
|
2331
|
+
|
2332
|
+
\S{cl-0.95 released July 1997} Version 0.95 released July 1997
|
2333
|
+
|
2334
|
+
\b Fixed yet another ELF bug. This one manifested if the user relied on
|
2335
|
+
the default segment, and attempted to define global symbols without
|
2336
|
+
first explicitly declaring the target segment.
|
2337
|
+
|
2338
|
+
\b Added makefiles (for NASM and the RDF tools) to build Win32 console
|
2339
|
+
apps under Symantec C++. Donated by Mark Junker.
|
2340
|
+
|
2341
|
+
\b Added `macros.bas' and `insns.bas', QBasic versions of the Perl
|
2342
|
+
scripts that convert `standard.mac' to `macros.c' and convert
|
2343
|
+
`insns.dat' to `insnsa.c' and `insnsd.c'. Also thanks to Mark
|
2344
|
+
Junker.
|
2345
|
+
|
2346
|
+
\b Changed the diassembled forms of the conditional instructions so
|
2347
|
+
that JB is now emitted as JC, and other similar changes. Suggested
|
2348
|
+
list by Ulrich Doewich.
|
2349
|
+
|
2350
|
+
\b Added `@' to the list of valid characters to begin an identifier
|
2351
|
+
with.
|
2352
|
+
|
2353
|
+
\b Documentary changes, notably the addition of the `Common Problems'
|
2354
|
+
section in nasm.doc.
|
2355
|
+
|
2356
|
+
\b Fixed a bug relating to 32-bit PC-relative fixups in OBJ.
|
2357
|
+
|
2358
|
+
\b Fixed a bug in perm_copy() in labels.c which was causing exceptions
|
2359
|
+
in cleanup_labels() on some systems.
|
2360
|
+
|
2361
|
+
\b Positivity sanity check in TIMES argument changed from a warning to
|
2362
|
+
an error following a further complaint.
|
2363
|
+
|
2364
|
+
\b Changed the acceptable limits on byte and word operands to allow
|
2365
|
+
things like `~10111001b' to work.
|
2366
|
+
|
2367
|
+
\b Fixed a major problem in the preprocessor which caused seg-faults if
|
2368
|
+
macro definitions contained blank lines or comment-only lines.
|
2369
|
+
|
2370
|
+
\b Fixed inadequate error checking on the commas separating the
|
2371
|
+
arguments to `db', `dw' etc.
|
2372
|
+
|
2373
|
+
\b Fixed a crippling bug in the handling of macros with operand counts
|
2374
|
+
defined with a `+' modifier.
|
2375
|
+
|
2376
|
+
\b Fixed a bug whereby object file formats which stored the input file
|
2377
|
+
name in the output file (such as OBJ and COFF) weren't doing so
|
2378
|
+
correctly when the output file name was specified on the command
|
2379
|
+
line.
|
2380
|
+
|
2381
|
+
\b Removed [INC] and [INCLUDE] support for good, since they were
|
2382
|
+
obsolete anyway.
|
2383
|
+
|
2384
|
+
\b Fixed a bug in OBJ which caused all fixups to be output in 16-bit
|
2385
|
+
(old-format) FIXUPP records, rather than putting the 32-bit ones in
|
2386
|
+
FIXUPP32 (new-format) records.
|
2387
|
+
|
2388
|
+
\b Added, tentatively, OS/2 object file support (as a minor variant on
|
2389
|
+
OBJ).
|
2390
|
+
|
2391
|
+
\b Updates to Fox Cutter's Borland C makefile, Makefile.bc2.
|
2392
|
+
|
2393
|
+
\b Removed a spurious second fclose() on the output file.
|
2394
|
+
|
2395
|
+
\b Added the `-s' command line option to redirect all messages which
|
2396
|
+
would go to stderr (errors, help text) to stdout instead.
|
2397
|
+
|
2398
|
+
\b Added the `-w' command line option to selectively suppress some
|
2399
|
+
classes of assembly warning messages.
|
2400
|
+
|
2401
|
+
\b Added the `-p' pre-include and `-d' pre-define command-line options.
|
2402
|
+
|
2403
|
+
\b Added an include file search path: the `-i' command line option.
|
2404
|
+
|
2405
|
+
\b Fixed a silly little preprocessor bug whereby starting a line with a
|
2406
|
+
`%!' environment-variable reference caused an `unknown directive'
|
2407
|
+
error.
|
2408
|
+
|
2409
|
+
\b Added the long-awaited listing file support: the `-l' command line
|
2410
|
+
option.
|
2411
|
+
|
2412
|
+
\b Fixed a problem with OBJ format whereby, in the absence of any
|
2413
|
+
explicit segment definition, non-global symbols declared in the
|
2414
|
+
implicit default segment generated spurious EXTDEF records in the
|
2415
|
+
output.
|
2416
|
+
|
2417
|
+
\b Added the NASM environment variable.
|
2418
|
+
|
2419
|
+
\b From this version forward, Win32 console-mode binaries will be
|
2420
|
+
included in the DOS distribution in addition to the 16-bit binaries.
|
2421
|
+
Added Makefile.vc for this purpose.
|
2422
|
+
|
2423
|
+
\b Added `return 0;' to test/objlink.c to prevent compiler warnings.
|
2424
|
+
|
2425
|
+
\b Added the __NASM_MAJOR__ and __NASM_MINOR__ standard defines.
|
2426
|
+
|
2427
|
+
\b Added an alternative memory-reference syntax in which prefixing an
|
2428
|
+
operand with `&' is equivalent to enclosing it in square brackets,
|
2429
|
+
at the request of Fox Cutter.
|
2430
|
+
|
2431
|
+
\b Errors in pass two now cause the program to return a non-zero error
|
2432
|
+
code, which they didn't before.
|
2433
|
+
|
2434
|
+
\b Fixed the single-line macro cycle detection, which didn't work at
|
2435
|
+
all on macros with no parameters (caused an infinite loop). Also
|
2436
|
+
changed the behaviour of single-line macro cycle detection to work
|
2437
|
+
like cpp, so that macros like `extrn' as given in the documentation
|
2438
|
+
can be implemented.
|
2439
|
+
|
2440
|
+
\b Fixed the implementation of WRT, which was too restrictive in that
|
2441
|
+
you couldn't do `mov ax,[di+abc wrt dgroup]' because (di+abc) wasn't
|
2442
|
+
a relocatable reference.
|
2443
|
+
|
2444
|
+
|
2445
|
+
\S{cl-0.94 released April 1997} Version 0.94 released April 1997
|
2446
|
+
|
2447
|
+
|
2448
|
+
\b Major item: added the macro processor.
|
2449
|
+
|
2450
|
+
\b Added undocumented instructions SMI, IBTS, XBTS and LOADALL286. Also
|
2451
|
+
reorganised CMPXCHG instruction into early-486 and Pentium forms.
|
2452
|
+
Thanks to Thobias Jones for the information.
|
2453
|
+
|
2454
|
+
\b Fixed two more stupid bugs in ELF, which were causing `ld' to
|
2455
|
+
continue to seg-fault in a lot of non-trivial cases.
|
2456
|
+
|
2457
|
+
\b Fixed a seg-fault in the label manager.
|
2458
|
+
|
2459
|
+
\b Stopped FBLD and FBSTP from _requiring_ the TWORD keyword, which is
|
2460
|
+
the only option for BCD loads/stores in any case.
|
2461
|
+
|
2462
|
+
\b Ensured FLDCW, FSTCW and FSTSW can cope with the WORD keyword, if
|
2463
|
+
anyone bothers to provide it. Previously they complained unless no
|
2464
|
+
keyword at all was present.
|
2465
|
+
|
2466
|
+
\b Some forms of FDIV/FDIVR and FSUB/FSUBR were still inverted: a
|
2467
|
+
vestige of a bug that I thought had been fixed in 0.92. This was
|
2468
|
+
fixed, hopefully for good this time...
|
2469
|
+
|
2470
|
+
\b Another minor phase error (insofar as a phase error can _ever_ be
|
2471
|
+
minor) fixed, this one occurring in code of the form
|
2472
|
+
|
2473
|
+
\c rol ax,forward_reference
|
2474
|
+
\c forward_reference equ 1
|
2475
|
+
|
2476
|
+
\b The number supplied to TIMES is now sanity-checked for positivity,
|
2477
|
+
and also may be greater than 64K (which previously didn't work on
|
2478
|
+
16-bit systems).
|
2479
|
+
|
2480
|
+
\b Added Watcom C makefiles, and misc/pmw.bat, donated by Dominik Behr.
|
2481
|
+
|
2482
|
+
\b Added the INCBIN pseudo-opcode.
|
2483
|
+
|
2484
|
+
\b Due to the advent of the preprocessor, the [INCLUDE] and [INC]
|
2485
|
+
directives have become obsolete. They are still supported in this
|
2486
|
+
version, with a warning, but won't be in the next.
|
2487
|
+
|
2488
|
+
\b Fixed a bug in OBJ format, which caused incorrect object records to
|
2489
|
+
be output when absolute labels were made global.
|
2490
|
+
|
2491
|
+
\b Updates to RDOFF subdirectory, and changes to outrdf.c.
|
2492
|
+
|
2493
|
+
|
2494
|
+
\S{cl-0.93 released January 1997} Version 0.93 released January 1997
|
2495
|
+
|
2496
|
+
This release went out in a great hurry after semi-crippling bugs
|
2497
|
+
were found in 0.92.
|
2498
|
+
|
2499
|
+
\b Really \e{did} fix the stack overflows this time. *blush*
|
2500
|
+
|
2501
|
+
\b Had problems with EA instruction sizes changing between passes, when
|
2502
|
+
an offset contained a forward reference and so 4 bytes were
|
2503
|
+
allocated for the offset in pass one; by pass two the symbol had
|
2504
|
+
been defined and happened to be a small absolute value, so only 1
|
2505
|
+
byte got allocated, causing instruction size mismatch between passes
|
2506
|
+
and hence incorrect address calculations. Fixed.
|
2507
|
+
|
2508
|
+
\b Stupid bug in the revised ELF section generation fixed (associated
|
2509
|
+
string-table section for .symtab was hard-coded as 7, even when this
|
2510
|
+
didn't fit with the real section table). Was causing `ld' to
|
2511
|
+
seg-fault under Linux.
|
2512
|
+
|
2513
|
+
\b Included a new Borland C makefile, Makefile.bc2, donated by Fox
|
2514
|
+
Cutter <lmb@comtch.iea.com>.
|
2515
|
+
|
2516
|
+
|
2517
|
+
\S{cl-0.92 released January 1997} Version 0.92 released January 1997
|
2518
|
+
|
2519
|
+
\b The FDIVP/FDIVRP and FSUBP/FSUBRP pairs had been inverted: this was
|
2520
|
+
fixed. This also affected the LCC driver.
|
2521
|
+
|
2522
|
+
\b Fixed a bug regarding 32-bit effective addresses of the form
|
2523
|
+
\c{[other_register+ESP]}.
|
2524
|
+
|
2525
|
+
\b Documentary changes, notably documentation of the fact that Borland
|
2526
|
+
Win32 compilers use `obj' rather than `win32' object format.
|
2527
|
+
|
2528
|
+
\b Fixed the COMENT record in OBJ files, which was formatted
|
2529
|
+
incorrectly.
|
2530
|
+
|
2531
|
+
\b Fixed a bug causing segfaults in large RDF files.
|
2532
|
+
|
2533
|
+
\b OBJ format now strips initial periods from segment and group
|
2534
|
+
definitions, in order to avoid complications with the local label
|
2535
|
+
syntax.
|
2536
|
+
|
2537
|
+
\b Fixed a bug in disassembling far calls and jumps in NDISASM.
|
2538
|
+
|
2539
|
+
\b Added support for user-defined sections in COFF and ELF files.
|
2540
|
+
|
2541
|
+
\b Compiled the DOS binaries with a sensible amount of stack, to
|
2542
|
+
prevent stack overflows on any arithmetic expression containing
|
2543
|
+
parentheses.
|
2544
|
+
|
2545
|
+
\b Fixed a bug in handling of files that do not terminate in a newline.
|
2546
|
+
|
2547
|
+
|
2548
|
+
\S{cl-0.91 released November 1996} Version 0.91 released November 1996
|
2549
|
+
|
2550
|
+
\b Loads of bug fixes.
|
2551
|
+
|
2552
|
+
\b Support for RDF added.
|
2553
|
+
|
2554
|
+
\b Support for DBG debugging format added.
|
2555
|
+
|
2556
|
+
\b Support for 32-bit extensions to Microsoft OBJ format added.
|
2557
|
+
|
2558
|
+
\b Revised for Borland C: some variable names changed, makefile added.
|
2559
|
+
|
2560
|
+
\b LCC support revised to actually work.
|
2561
|
+
|
2562
|
+
\b JMP/CALL NEAR/FAR notation added.
|
2563
|
+
|
2564
|
+
\b `a16', `o16', `a32' and `o32' prefixes added.
|
2565
|
+
|
2566
|
+
\b Range checking on short jumps implemented.
|
2567
|
+
|
2568
|
+
\b MMX instruction support added.
|
2569
|
+
|
2570
|
+
\b Negative floating point constant support added.
|
2571
|
+
|
2572
|
+
\b Memory handling improved to bypass 64K barrier under DOS.
|
2573
|
+
|
2574
|
+
\b \c{$} prefix to force treatment of reserved words as identifiers added.
|
2575
|
+
|
2576
|
+
\b Default-size mechanism for object formats added.
|
2577
|
+
|
2578
|
+
\b Compile-time configurability added.
|
2579
|
+
|
2580
|
+
\b \c{#}, \c{@}, \c{~} and c\{?} are now valid characters in labels.
|
2581
|
+
|
2582
|
+
\b \c{-e} and \c{-k} options in NDISASM added.
|
2583
|
+
|
2584
|
+
|
2585
|
+
\S{cl-0.90 released October 1996} Version 0.90 released October 1996
|
2586
|
+
|
2587
|
+
First release version. First support for object file output. Other
|
2588
|
+
changes from previous version (0.3x) too numerous to document.
|