laag-nasm 2.13.03.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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,30 @@
|
|
|
1
|
+
; Demonstration of how to write an entire .EXE format program as a .OBJ
|
|
2
|
+
; file to be linked. Tested with the VAL free linker.
|
|
3
|
+
; To build:
|
|
4
|
+
; nasm -fobj objexe.asm
|
|
5
|
+
; val objexe.obj,objexe.exe;
|
|
6
|
+
; To test:
|
|
7
|
+
; objexe
|
|
8
|
+
; (should print `hello, world')
|
|
9
|
+
|
|
10
|
+
segment code
|
|
11
|
+
|
|
12
|
+
..start: mov ax,data
|
|
13
|
+
mov ds,ax
|
|
14
|
+
mov ax,stack
|
|
15
|
+
mov ss,ax
|
|
16
|
+
mov sp,stacktop
|
|
17
|
+
|
|
18
|
+
mov dx,hello
|
|
19
|
+
mov ah,9
|
|
20
|
+
int 0x21
|
|
21
|
+
|
|
22
|
+
mov ax,0x4c00
|
|
23
|
+
int 0x21
|
|
24
|
+
|
|
25
|
+
segment data
|
|
26
|
+
hello: db 'hello, world', 13, 10, '$'
|
|
27
|
+
|
|
28
|
+
segment stack stack
|
|
29
|
+
resb 64
|
|
30
|
+
stacktop:
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* test source file for assembling to Microsoft 16-bit .OBJ
|
|
3
|
+
* build with (16-bit Microsoft C):
|
|
4
|
+
* nasm -f obj objtest.asm
|
|
5
|
+
* cl /AL objtest.obj objlink.c
|
|
6
|
+
* other compilers should work too, provided they handle large
|
|
7
|
+
* model in the same way as MS C
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#include <stdio.h>
|
|
11
|
+
#include <inttypes.h>
|
|
12
|
+
|
|
13
|
+
int8_t text[] = "hello, world\n";
|
|
14
|
+
|
|
15
|
+
extern void function(int8_t *);
|
|
16
|
+
extern int bsssym, commvar;
|
|
17
|
+
extern void *selfptr;
|
|
18
|
+
extern void *selfptr2;
|
|
19
|
+
|
|
20
|
+
int main(void)
|
|
21
|
+
{
|
|
22
|
+
printf("these should be identical: %p, %p\n",
|
|
23
|
+
(int32_t)selfptr, (int32_t)&selfptr);
|
|
24
|
+
printf("these should be equivalent but different: %p, %p\n",
|
|
25
|
+
(int32_t)selfptr2, (int32_t)&selfptr2);
|
|
26
|
+
printf("you should see \"hello, world\" twice:\n");
|
|
27
|
+
bsssym = 0xF00D;
|
|
28
|
+
commvar = 0xD00F;
|
|
29
|
+
function(text);
|
|
30
|
+
printf("this should be 0xF00E: 0x%X\n", bsssym);
|
|
31
|
+
printf("this should be 0xD00E: 0x%X\n", commvar);
|
|
32
|
+
return 0;
|
|
33
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
;Testname=unoptimized; Arguments=-O0 -fobj -oobj.o; Files=stdout stderr obj.o
|
|
2
|
+
;Testname=optimized; Arguments=-Ox -fobj -oobj.o; Files=stdout stderr obj.o
|
|
3
|
+
|
|
4
|
+
; test source file for assembling to Microsoft 16-bit .OBJ
|
|
5
|
+
; build with (16-bit Microsoft C):
|
|
6
|
+
; nasm -f obj objtest.asm
|
|
7
|
+
; cl /AL objtest.obj objlink.c
|
|
8
|
+
; other compilers should work too, provided they handle large
|
|
9
|
+
; model in the same way as MS C
|
|
10
|
+
|
|
11
|
+
; This file should test the following:
|
|
12
|
+
; [1] Define and export a global symbol
|
|
13
|
+
; [2] Define a non-global symbol
|
|
14
|
+
; [3] Define a common symbol
|
|
15
|
+
; [4] Define a NASM local label
|
|
16
|
+
; [5] Reference a NASM local label
|
|
17
|
+
; [6] Import an external symbol
|
|
18
|
+
; [7] Make a PC-relative relocated reference
|
|
19
|
+
; [8] Reference a symbol in the same section as itself
|
|
20
|
+
; [9] Reference a symbol in a different segment from itself
|
|
21
|
+
; [10] Define a segment group
|
|
22
|
+
; [11] Take the offset of a symbol in a grouped segment w.r.t. its segment
|
|
23
|
+
; [12] Reserve uninitialised data space in a segment
|
|
24
|
+
; [13] Directly take the segment address of a segment
|
|
25
|
+
; [14] Directly take the segment address of a group
|
|
26
|
+
; [15] Use SEG on a non-external
|
|
27
|
+
; [16] Use SEG on an external
|
|
28
|
+
|
|
29
|
+
bits 16
|
|
30
|
+
|
|
31
|
+
global _bsssym ; [1]
|
|
32
|
+
global _function ; [1]
|
|
33
|
+
global _selfptr ; [1]
|
|
34
|
+
global _selfptr2 ; [1]
|
|
35
|
+
common _commvar 2 ; [3]
|
|
36
|
+
extern _printf ; [6]
|
|
37
|
+
|
|
38
|
+
group mygroup mybss mydata ; [10]
|
|
39
|
+
group mygroup2 mycode mycode2 ; [10]
|
|
40
|
+
|
|
41
|
+
segment mycode private
|
|
42
|
+
|
|
43
|
+
_function push bp
|
|
44
|
+
mov bp,sp
|
|
45
|
+
push ds
|
|
46
|
+
mov ax,mygroup ; [14]
|
|
47
|
+
mov ds,ax
|
|
48
|
+
inc word [_bsssym] ; [9]
|
|
49
|
+
mov ax,seg _commvar
|
|
50
|
+
mov ds,ax
|
|
51
|
+
dec word [_commvar]
|
|
52
|
+
pop ds
|
|
53
|
+
mov ax,[bp+6]
|
|
54
|
+
mov dx,[bp+8]
|
|
55
|
+
push dx
|
|
56
|
+
push ax
|
|
57
|
+
push dx
|
|
58
|
+
push ax
|
|
59
|
+
call far [cs:.printf] ; [5] [8]
|
|
60
|
+
pop ax
|
|
61
|
+
pop ax
|
|
62
|
+
call trampoline ; [7]
|
|
63
|
+
pop ax
|
|
64
|
+
pop ax
|
|
65
|
+
mov sp,bp
|
|
66
|
+
pop bp
|
|
67
|
+
retf
|
|
68
|
+
|
|
69
|
+
.printf dw _printf, seg _printf ; [2] [4] [16]
|
|
70
|
+
|
|
71
|
+
segment mycode2 private
|
|
72
|
+
|
|
73
|
+
trampoline: pop ax
|
|
74
|
+
push cs
|
|
75
|
+
push ax
|
|
76
|
+
jmp far _printf
|
|
77
|
+
|
|
78
|
+
segment mybss private
|
|
79
|
+
|
|
80
|
+
_bsssym resw 64 ; [12]
|
|
81
|
+
|
|
82
|
+
segment mydata private
|
|
83
|
+
|
|
84
|
+
_selfptr dw _selfptr, seg _selfptr ; [8] [15]
|
|
85
|
+
_selfptr2 dw _selfptr2 wrt mydata, mydata ; [11] [13]
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
;Testname=O0; Arguments=-O0 -fbin -ooptimization.bin; Files=stdout stderr optimization.bin
|
|
2
|
+
;Testname=O1; Arguments=-O1 -fbin -ooptimization.bin; Files=stdout stderr optimization.bin
|
|
3
|
+
;Testname=Ox; Arguments=-Ox -fbin -ooptimization.bin; Files=stdout stderr optimization.bin
|
|
4
|
+
|
|
5
|
+
BITS 32
|
|
6
|
+
|
|
7
|
+
; Simple
|
|
8
|
+
jmp foo
|
|
9
|
+
times 124 nop
|
|
10
|
+
foo:
|
|
11
|
+
|
|
12
|
+
; Must start short to converge optimally
|
|
13
|
+
jmp car
|
|
14
|
+
times 127 nop
|
|
15
|
+
car:
|
|
16
|
+
|
|
17
|
+
; Always near
|
|
18
|
+
jmp cdr
|
|
19
|
+
times 128 nop
|
|
20
|
+
cdr:
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
; Simple
|
|
24
|
+
add eax, quux2 - quux1
|
|
25
|
+
quux1:
|
|
26
|
+
times 127 nop
|
|
27
|
+
quux2:
|
|
28
|
+
|
|
29
|
+
; Must start short
|
|
30
|
+
corge1:
|
|
31
|
+
add eax, corge2 - corge1
|
|
32
|
+
times 127 - 3 nop
|
|
33
|
+
corge2:
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
; Simple
|
|
37
|
+
lea eax, [bolug2-bolug1]
|
|
38
|
+
bolug1:
|
|
39
|
+
times 127 nop
|
|
40
|
+
bolug2:
|
|
41
|
+
|
|
42
|
+
; Must start short
|
|
43
|
+
calog1:
|
|
44
|
+
lea eax, [calog2-calog1]
|
|
45
|
+
times 127 - 3 nop
|
|
46
|
+
calog2:
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
; Simple
|
|
50
|
+
lea eax, [eax+dolug2-dolug1]
|
|
51
|
+
dolug1:
|
|
52
|
+
times 127 nop
|
|
53
|
+
dolug2:
|
|
54
|
+
|
|
55
|
+
; Must start short
|
|
56
|
+
ealog1:
|
|
57
|
+
lea eax, [eax+ealog2-ealog1]
|
|
58
|
+
times 127 - 3 nop
|
|
59
|
+
ealog2:
|
|
60
|
+
|
|
61
|
+
; Must stay long!
|
|
62
|
+
lea eax, [eax+folug2-folug1]
|
|
63
|
+
folug1:
|
|
64
|
+
times 128 nop
|
|
65
|
+
folug2:
|
|
66
|
+
|
|
67
|
+
; Must stay long!
|
|
68
|
+
galog1:
|
|
69
|
+
lea eax, [eax+galog2-galog1]
|
|
70
|
+
times 128 - 3 nop
|
|
71
|
+
galog2:
|
|
72
|
+
|
|
73
|
+
; Sbyte tests...
|
|
74
|
+
onetwentysix equ 126
|
|
75
|
+
onetwentynine equ 129
|
|
76
|
+
|
|
77
|
+
add eax,onetwentyseven ; sbyte (forward)
|
|
78
|
+
add eax,onetwentyeight ; not sbyte (forward)
|
|
79
|
+
add eax,onetwentyseven ; sbyte (forward)
|
|
80
|
+
add eax,onetwentysix ; sbyte (backward)
|
|
81
|
+
add eax,onetwentynine ; not sbyte (backward)
|
|
82
|
+
add ecx,onetwentyseven ; sbyte (forward)
|
|
83
|
+
add ecx,onetwentyeight ; not sbyte (forward)
|
|
84
|
+
add ecx,onetwentyseven ; sbyte (forward)
|
|
85
|
+
add ecx,onetwentysix ; sbyte (backward)
|
|
86
|
+
add ecx,onetwentynine ; not sbyte (backward)
|
|
87
|
+
|
|
88
|
+
onetwentyseven equ 127
|
|
89
|
+
onetwentyeight equ 128
|
|
90
|
+
|
|
91
|
+
; Simple
|
|
92
|
+
add eax, holug2-holug1
|
|
93
|
+
holug1:
|
|
94
|
+
times 127 nop
|
|
95
|
+
holug2:
|
|
96
|
+
|
|
97
|
+
; Must start short
|
|
98
|
+
ialog1:
|
|
99
|
+
add eax, ialog2-ialog1
|
|
100
|
+
times 127 - 3 nop
|
|
101
|
+
ialog2:
|
|
102
|
+
|
|
103
|
+
; Do not confuse forward references and segmentless addresses!
|
|
104
|
+
jmp 12345
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
;Testname=elf64; Arguments=-Ox -felf64 -oorg.o; Files=stdout stderr org.o
|
|
2
|
+
;Testname=win64; Arguments=-Ox -fwin64 -oorg.o; Files=stdout stderr org.o
|
|
3
|
+
|
|
4
|
+
;
|
|
5
|
+
; Simple test of a 64-bit org directive
|
|
6
|
+
;
|
|
7
|
+
bits 64
|
|
8
|
+
org 0xffffffffffff0000
|
|
9
|
+
|
|
10
|
+
hello: jmp there
|
|
11
|
+
nop
|
|
12
|
+
nop
|
|
13
|
+
there:
|
|
14
|
+
add rax,[rsp+rbx]
|
|
15
|
+
inc eax
|
|
16
|
+
|
|
17
|
+
section .data
|
|
18
|
+
there_ptr dq there
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
bits 32
|
|
2
|
+
foo: ; Backwards reference
|
|
3
|
+
mov eax,[foo - $]
|
|
4
|
+
mov ebx,[ebx + foo - $]
|
|
5
|
+
mov ecx,foo - $
|
|
6
|
+
mov edx,foo - bar
|
|
7
|
+
|
|
8
|
+
mov eax,[bar - $]
|
|
9
|
+
mov ebx,[ebx + bar - $]
|
|
10
|
+
mov ecx,bar - $
|
|
11
|
+
mov edx,bar - foo
|
|
12
|
+
|
|
13
|
+
mov eax,[baz - $]
|
|
14
|
+
mov ebx,[ebx + baz - $]
|
|
15
|
+
mov esi,[baz - bar]
|
|
16
|
+
mov ecx,baz - $
|
|
17
|
+
mov edx,baz - bar
|
|
18
|
+
|
|
19
|
+
bits 64
|
|
20
|
+
default rel
|
|
21
|
+
|
|
22
|
+
times 16 nop
|
|
23
|
+
|
|
24
|
+
mov eax,[foo]
|
|
25
|
+
mov eax,[foo - $]
|
|
26
|
+
mov eax,[abs foo - $]
|
|
27
|
+
mov ebx,[rbx + foo - $]
|
|
28
|
+
mov ecx,foo - $
|
|
29
|
+
mov edx,foo - bar
|
|
30
|
+
|
|
31
|
+
mov eax,[bar]
|
|
32
|
+
mov eax,[bar - $]
|
|
33
|
+
mov eax,[abs bar - $]
|
|
34
|
+
mov ebx,[rbx + bar - $]
|
|
35
|
+
mov ecx,bar - $
|
|
36
|
+
mov edx,bar - foo
|
|
37
|
+
|
|
38
|
+
mov eax,[baz]
|
|
39
|
+
mov eax,[baz - $]
|
|
40
|
+
mov eax,[abs baz - $]
|
|
41
|
+
mov ebx,[rbx + baz - $]
|
|
42
|
+
mov esi,[baz - bar]
|
|
43
|
+
mov esi,[abs baz - bar]
|
|
44
|
+
mov ecx,baz - $
|
|
45
|
+
mov edx,baz - bar
|
|
46
|
+
|
|
47
|
+
bar: ; Forwards reference
|
|
48
|
+
hlt
|
|
49
|
+
|
|
50
|
+
section ".data"
|
|
51
|
+
baz: ; Other-segment reference
|
|
52
|
+
dd 0
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/perl
|
|
2
|
+
#
|
|
3
|
+
# Generate a test case for label lookup performance
|
|
4
|
+
#
|
|
5
|
+
|
|
6
|
+
($len) = @ARGV;
|
|
7
|
+
$len = 100000 unless ($len);
|
|
8
|
+
|
|
9
|
+
print "\tbits 32\n";
|
|
10
|
+
print "\tsection .data\n";
|
|
11
|
+
print "\n";
|
|
12
|
+
|
|
13
|
+
for ($i = 0; $i < $len; $i++) {
|
|
14
|
+
print "l$i:\n";
|
|
15
|
+
for ($j = 0; $j < 8; $j++) {
|
|
16
|
+
print "\tdd l", int(rand($i+1)), "\n";
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/perl
|
|
2
|
+
#
|
|
3
|
+
# Generate a test case for macro lookup performance
|
|
4
|
+
#
|
|
5
|
+
|
|
6
|
+
($len) = @ARGV;
|
|
7
|
+
$len = 100000 unless ($len);
|
|
8
|
+
|
|
9
|
+
print "\tbits 32\n";
|
|
10
|
+
print "\tsection .data\n";
|
|
11
|
+
print "\n";
|
|
12
|
+
|
|
13
|
+
for ($i = 0; $i < $len; $i++) {
|
|
14
|
+
print "%define m$i $i\n";
|
|
15
|
+
for ($j = 0; $j < 8; $j++) {
|
|
16
|
+
print "\tdd m", int(rand($i+1)), "\n";
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/perl
|
|
2
|
+
#
|
|
3
|
+
# Generate a test case for token lookup performance
|
|
4
|
+
#
|
|
5
|
+
|
|
6
|
+
@insns = qw(add sub adc sbb and or xor mov);
|
|
7
|
+
@regs = qw(eax ebx ecx edx esp ebp esi edi);
|
|
8
|
+
|
|
9
|
+
srand(0);
|
|
10
|
+
sub pickone(@) {
|
|
11
|
+
return $_[int(rand(scalar @_))];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
($len) = @ARGV;
|
|
15
|
+
$len = 1000000 unless ($len);
|
|
16
|
+
|
|
17
|
+
print "\tbits 32\n";
|
|
18
|
+
print "\n";
|
|
19
|
+
|
|
20
|
+
for ($i = 0; $i < $len; $i++) {
|
|
21
|
+
print "\t", pickone(@insns), " ",
|
|
22
|
+
pickone(@regs), ",", pickone(@regs), "\n";
|
|
23
|
+
}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
#!/usr/bin/perl
|
|
2
|
+
#Perform tests on nasm
|
|
3
|
+
|
|
4
|
+
use strict;
|
|
5
|
+
use warnings;
|
|
6
|
+
|
|
7
|
+
use Getopt::Long qw(GetOptions);
|
|
8
|
+
use Pod::Usage qw(pod2usage);
|
|
9
|
+
|
|
10
|
+
use File::Basename qw(fileparse);
|
|
11
|
+
use File::Compare qw(compare compare_text);
|
|
12
|
+
use File::Copy qw(move);
|
|
13
|
+
use File::Path qw(mkpath rmtree);
|
|
14
|
+
|
|
15
|
+
#sub debugprint { print (pop() . "\n"); }
|
|
16
|
+
sub debugprint { }
|
|
17
|
+
|
|
18
|
+
my $globalresult = 0;
|
|
19
|
+
|
|
20
|
+
#Process one testfile
|
|
21
|
+
sub perform {
|
|
22
|
+
my ($clean, $diff, $golden, $nasm, $quiet, $testpath) = @_;
|
|
23
|
+
my ($stdoutfile, $stderrfile) = ("stdout", "stderr");
|
|
24
|
+
|
|
25
|
+
my ($testname, $ignoredpath, $ignoredsuffix) = fileparse($testpath, ".asm");
|
|
26
|
+
debugprint $testname;
|
|
27
|
+
|
|
28
|
+
my $outputdir = $golden ? "golden" : "testresults";
|
|
29
|
+
|
|
30
|
+
mkdir "$outputdir" unless -d "$outputdir";
|
|
31
|
+
|
|
32
|
+
if ($clean) {
|
|
33
|
+
rmtree "$outputdir/$testname";
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if(-d "$outputdir/$testname") {
|
|
38
|
+
rmtree "$outputdir/$testname";
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
open(TESTFILE, '<', $testpath) or (warn "Can't open $testpath\n", return);
|
|
42
|
+
TEST:
|
|
43
|
+
while(<TESTFILE>) {
|
|
44
|
+
#See if there is a test case
|
|
45
|
+
last unless /Testname=(.*);\s*Arguments=(.*);\s*Files=(.*)/;
|
|
46
|
+
my ($subname, $arguments, $files) = ($1, $2, $3);
|
|
47
|
+
debugprint("$subname | $arguments | $files");
|
|
48
|
+
|
|
49
|
+
#Call nasm with this test case
|
|
50
|
+
system("$nasm $arguments $testpath > $stdoutfile 2> $stderrfile");
|
|
51
|
+
debugprint("$nasm $arguments $testpath > $stdoutfile 2> $stderrfile ----> $?");
|
|
52
|
+
|
|
53
|
+
#Move the output to the test dir
|
|
54
|
+
mkpath("$outputdir/$testname/$subname");
|
|
55
|
+
foreach(split / /,$files) {
|
|
56
|
+
if (-f $_) {
|
|
57
|
+
move($_, "$outputdir/$testname/$subname/$_") or die $!
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
unlink ("$stdoutfile", "$stderrfile"); #Just to be sure
|
|
61
|
+
|
|
62
|
+
if($golden) {
|
|
63
|
+
print "Test $testname/$subname created.\n" unless $quiet;
|
|
64
|
+
} else {
|
|
65
|
+
#Compare them with the golden files
|
|
66
|
+
my $result = 0;
|
|
67
|
+
my @failedfiles = ();
|
|
68
|
+
foreach(split / /, $files) {
|
|
69
|
+
if(-f "$outputdir/$testname/$subname/$_") {
|
|
70
|
+
my $temp;
|
|
71
|
+
if($_ eq $stdoutfile or $_ eq $stderrfile) {
|
|
72
|
+
#Compare stdout and stderr in text mode so line ending changes won't matter
|
|
73
|
+
$temp = compare_text("$outputdir/$testname/$subname/$_", "golden/$testname/$subname/$_",
|
|
74
|
+
sub { my ($a, $b) = @_;
|
|
75
|
+
$a =~ s/\r//g;
|
|
76
|
+
$b =~ s/\r//g;
|
|
77
|
+
$a ne $b; } );
|
|
78
|
+
} else {
|
|
79
|
+
$temp = compare("$outputdir/$testname/$subname/$_", "golden/$testname/$subname/$_");
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if($temp == 1) {
|
|
83
|
+
#different
|
|
84
|
+
$result = 1;
|
|
85
|
+
$globalresult = 1;
|
|
86
|
+
push @failedfiles, $_;
|
|
87
|
+
} elsif($temp == -1) {
|
|
88
|
+
#error
|
|
89
|
+
print "Can't compare at $testname/$subname file $_\n";
|
|
90
|
+
next TEST;
|
|
91
|
+
}
|
|
92
|
+
} elsif (-f "golden/$testname/$subname/$_") {
|
|
93
|
+
#File exists in golden but not in output
|
|
94
|
+
$result = 1;
|
|
95
|
+
$globalresult = 1;
|
|
96
|
+
push @failedfiles, $_;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if($result == 0) {
|
|
101
|
+
print "Test $testname/$subname succeeded.\n" unless $quiet;
|
|
102
|
+
} elsif ($result == 1) {
|
|
103
|
+
print "Test $testname/$subname failed on @failedfiles.\n";
|
|
104
|
+
if($diff) {
|
|
105
|
+
for(@failedfiles) {
|
|
106
|
+
if($_ eq $stdoutfile or $_ eq $stderrfile) {
|
|
107
|
+
system "diff -u golden/$testname/$subname/$_ $outputdir/$testname/$subname/$_";
|
|
108
|
+
print "\n";
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
} else {
|
|
113
|
+
die "Impossible result";
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
close(TESTFILE);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
my $nasm;
|
|
121
|
+
my $clean = 0;
|
|
122
|
+
my $diff = 0;
|
|
123
|
+
my $golden = 0;
|
|
124
|
+
my $help = 0;
|
|
125
|
+
my $verbose = 0;
|
|
126
|
+
|
|
127
|
+
GetOptions('clean' => \$clean,
|
|
128
|
+
'diff'=> \$diff,
|
|
129
|
+
'golden' => \$golden,
|
|
130
|
+
'help' => \$help,
|
|
131
|
+
'verbose' => \$verbose,
|
|
132
|
+
'nasm=s' => \$nasm
|
|
133
|
+
) or pod2usage();
|
|
134
|
+
|
|
135
|
+
pod2usage() if $help;
|
|
136
|
+
die "Please specify either --nasm or --clean. Use --help for help.\n"
|
|
137
|
+
unless $nasm or $clean;
|
|
138
|
+
die "Please specify the test files, e.g. *.asm\n" unless @ARGV;
|
|
139
|
+
|
|
140
|
+
unless (!defined $nasm or -x $nasm) {
|
|
141
|
+
warn "Warning: $nasm may not be executable. Expect problems.\n\n";
|
|
142
|
+
sleep 5;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
perform($clean, $diff, $golden, $nasm, ! $verbose, $_) foreach @ARGV;
|
|
146
|
+
exit $globalresult;
|
|
147
|
+
|
|
148
|
+
__END__
|
|
149
|
+
|
|
150
|
+
=head1 NAME
|
|
151
|
+
|
|
152
|
+
performtest.pl - NASM regression tester based on golden files
|
|
153
|
+
|
|
154
|
+
=head1 SYNOPSIS
|
|
155
|
+
|
|
156
|
+
performtest.pl [options] [testfile.asm ...]
|
|
157
|
+
|
|
158
|
+
Runs NASM on the specified test files and compare the results
|
|
159
|
+
with "golden" output files.
|
|
160
|
+
|
|
161
|
+
Options:
|
|
162
|
+
--clean Clean up test results (or golden files with --golden)
|
|
163
|
+
--diff Execute diff when stdout or stderr don't match
|
|
164
|
+
--golden Create golden files
|
|
165
|
+
--help Get this help
|
|
166
|
+
--nasm=file Specify the file name for the NASM executable, e.g. ../nasm
|
|
167
|
+
--verbose Get more output
|
|
168
|
+
|
|
169
|
+
If --clean is not specified, --nasm is required.
|
|
170
|
+
|
|
171
|
+
testfile.asm ...:
|
|
172
|
+
One or more files that NASM should be tested with,
|
|
173
|
+
often *.asm in the test directory.
|
|
174
|
+
It should contain one or more option lines at the start,
|
|
175
|
+
in the following format:
|
|
176
|
+
|
|
177
|
+
;Testname=<testname>; Arguments=<arguments to nasm>; Files=<output files>
|
|
178
|
+
|
|
179
|
+
If no such lines are found at the start, the file is skipped.
|
|
180
|
+
testname should ideally describe the arguments, eg. unoptimized for -O0.
|
|
181
|
+
arguments can be an optimization level (-O), an output format (-f),
|
|
182
|
+
an output file specifier (-o) etc.
|
|
183
|
+
The output files should be a space seperated list of files that will
|
|
184
|
+
be checked for regressions. This should often be the output file
|
|
185
|
+
and the special files stdout and stderr.
|
|
186
|
+
|
|
187
|
+
Any mismatch could be a regression,
|
|
188
|
+
but it doesn't have to be. COFF files have a timestamp which
|
|
189
|
+
makes this method useless. ELF files have a comment section
|
|
190
|
+
with the current version of NASM, so they will change each version number.
|
|
191
|
+
|
|
192
|
+
=cut
|