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,85 @@
|
|
|
1
|
+
;Cannot be automatically tested because it differs every time,
|
|
2
|
+
;I guess because of a date/time field.
|
|
3
|
+
|
|
4
|
+
; test source file for assembling to COFF
|
|
5
|
+
; build with (under DJGPP, for example):
|
|
6
|
+
; nasm -f coff cofftest.asm
|
|
7
|
+
; gcc -o cofftest cofftest.c cofftest.o
|
|
8
|
+
|
|
9
|
+
; This file should test the following:
|
|
10
|
+
; [1] Define and export a global text-section symbol
|
|
11
|
+
; [2] Define and export a global data-section symbol
|
|
12
|
+
; [3] Define and export a global BSS-section symbol
|
|
13
|
+
; [4] Define a non-global text-section symbol
|
|
14
|
+
; [5] Define a non-global data-section symbol
|
|
15
|
+
; [6] Define a non-global BSS-section symbol
|
|
16
|
+
; [7] Define a COMMON symbol
|
|
17
|
+
; [8] Define a NASM local label
|
|
18
|
+
; [9] Reference a NASM local label
|
|
19
|
+
; [10] Import an external symbol
|
|
20
|
+
; [11] Make a PC-relative call to an external symbol
|
|
21
|
+
; [12] Reference a text-section symbol in the text section
|
|
22
|
+
; [13] Reference a data-section symbol in the text section
|
|
23
|
+
; [14] Reference a BSS-section symbol in the text section
|
|
24
|
+
; [15] Reference a text-section symbol in the data section
|
|
25
|
+
; [16] Reference a data-section symbol in the data section
|
|
26
|
+
; [17] Reference a BSS-section symbol in the data section
|
|
27
|
+
|
|
28
|
+
BITS 32
|
|
29
|
+
GLOBAL _lrotate ; [1]
|
|
30
|
+
GLOBAL _greet ; [1]
|
|
31
|
+
GLOBAL _asmstr ; [2]
|
|
32
|
+
GLOBAL _textptr ; [2]
|
|
33
|
+
GLOBAL _selfptr ; [2]
|
|
34
|
+
GLOBAL _integer ; [3]
|
|
35
|
+
EXTERN _printf ; [10]
|
|
36
|
+
COMMON _commvar 4 ; [7]
|
|
37
|
+
|
|
38
|
+
SECTION .text
|
|
39
|
+
|
|
40
|
+
; prototype: long lrotate(long x, int num);
|
|
41
|
+
_lrotate: ; [1]
|
|
42
|
+
push ebp
|
|
43
|
+
mov ebp,esp
|
|
44
|
+
mov eax,[ebp+8]
|
|
45
|
+
mov ecx,[ebp+12]
|
|
46
|
+
.label rol eax,1 ; [4] [8]
|
|
47
|
+
loop .label ; [9] [12]
|
|
48
|
+
mov esp,ebp
|
|
49
|
+
pop ebp
|
|
50
|
+
ret
|
|
51
|
+
|
|
52
|
+
; prototype: void greet(void);
|
|
53
|
+
_greet mov eax,[_integer] ; [14]
|
|
54
|
+
inc eax
|
|
55
|
+
mov [localint],eax ; [14]
|
|
56
|
+
push dword [_commvar]
|
|
57
|
+
mov eax,[localptr] ; [13]
|
|
58
|
+
push dword [eax]
|
|
59
|
+
push dword [_integer] ; [1] [14]
|
|
60
|
+
push dword _printfstr ; [13]
|
|
61
|
+
call _printf ; [11]
|
|
62
|
+
add esp,16
|
|
63
|
+
ret
|
|
64
|
+
|
|
65
|
+
SECTION .data
|
|
66
|
+
|
|
67
|
+
; a string
|
|
68
|
+
_asmstr db 'hello, world', 0 ; [2]
|
|
69
|
+
|
|
70
|
+
; a string for Printf
|
|
71
|
+
_printfstr db "integer==%d, localint==%d, commvar=%d"
|
|
72
|
+
db 10, 0
|
|
73
|
+
|
|
74
|
+
; some pointers
|
|
75
|
+
localptr dd localint ; [5] [17]
|
|
76
|
+
_textptr dd _greet ; [15]
|
|
77
|
+
_selfptr dd _selfptr ; [16]
|
|
78
|
+
|
|
79
|
+
SECTION .bss
|
|
80
|
+
|
|
81
|
+
; an integer
|
|
82
|
+
_integer resd 1 ; [3]
|
|
83
|
+
|
|
84
|
+
; a local integer
|
|
85
|
+
localint resd 1 ; [6]
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* test source file for assembling to COFF
|
|
3
|
+
* build with (under DJGPP, for example):
|
|
4
|
+
* nasm -f coff cofftest.asm
|
|
5
|
+
* gcc -o cofftest cofftest.c cofftest.o
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#include <stdio.h>
|
|
9
|
+
#include <inttypes.h>
|
|
10
|
+
|
|
11
|
+
extern int lrotate(int32_t, int);
|
|
12
|
+
extern void greet(void);
|
|
13
|
+
extern int8_t asmstr[];
|
|
14
|
+
extern void *selfptr;
|
|
15
|
+
extern void *textptr;
|
|
16
|
+
extern int integer, commvar;
|
|
17
|
+
|
|
18
|
+
int main(void)
|
|
19
|
+
{
|
|
20
|
+
|
|
21
|
+
printf("Testing lrotate: should get 0x00400000, 0x00000001\n");
|
|
22
|
+
printf("lrotate(0x00040000, 4) = 0x%08lx\n", lrotate(0x40000, 4));
|
|
23
|
+
printf("lrotate(0x00040000, 14) = 0x%08lx\n", lrotate(0x40000, 14));
|
|
24
|
+
|
|
25
|
+
printf("This string should read `hello, world': `%s'\n", asmstr);
|
|
26
|
+
|
|
27
|
+
printf("The integers here should be 1234, 1235 and 4321:\n");
|
|
28
|
+
integer = 1234;
|
|
29
|
+
commvar = 4321;
|
|
30
|
+
greet();
|
|
31
|
+
|
|
32
|
+
printf("These pointers should be equal: %p and %p\n", &greet, textptr);
|
|
33
|
+
|
|
34
|
+
printf("So should these: %p and %p\n", selfptr, &selfptr);
|
|
35
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
;Testname=test; Arguments=-fbin -ocrc32.bin; Files=stdout stderr crc32.bin
|
|
2
|
+
|
|
3
|
+
bits 16
|
|
4
|
+
|
|
5
|
+
crc32 eax,cl
|
|
6
|
+
crc32 eax,byte [di]
|
|
7
|
+
crc32 eax,cx
|
|
8
|
+
crc32 eax,word [di]
|
|
9
|
+
crc32 eax,ecx
|
|
10
|
+
crc32 eax,dword [di]
|
|
11
|
+
|
|
12
|
+
bits 32
|
|
13
|
+
align 16
|
|
14
|
+
|
|
15
|
+
crc32 eax,cl
|
|
16
|
+
crc32 eax,byte [edi]
|
|
17
|
+
crc32 eax,cx
|
|
18
|
+
crc32 eax,word [edi]
|
|
19
|
+
crc32 eax,ecx
|
|
20
|
+
crc32 eax,dword [edi]
|
|
21
|
+
|
|
22
|
+
bits 64
|
|
23
|
+
align 16
|
|
24
|
+
|
|
25
|
+
crc32 eax,cl
|
|
26
|
+
crc32 eax,byte [rdi]
|
|
27
|
+
crc32 eax,r9b
|
|
28
|
+
crc32 eax,cx
|
|
29
|
+
crc32 eax,word [rdi]
|
|
30
|
+
crc32 eax,ecx
|
|
31
|
+
crc32 eax,dword [rdi]
|
|
32
|
+
crc32 rax,cl
|
|
33
|
+
crc32 rax,byte [rdi]
|
|
34
|
+
crc32 rax,r9b
|
|
35
|
+
crc32 rax,rcx
|
|
36
|
+
crc32 rax,qword [rdi]
|
|
37
|
+
crc32 rax,r9
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
;
|
|
2
|
+
; This is a macro to generate packed BCD constants.
|
|
3
|
+
; It is obsoleted by "dt" with a packed BCD value with a "p"
|
|
4
|
+
; suffix, but it is included here as a rest of nested %rep.
|
|
5
|
+
;
|
|
6
|
+
%macro dtbcd 1-*.nolist
|
|
7
|
+
%push dtbcd
|
|
8
|
+
%rep %0
|
|
9
|
+
%defstr %$abc %1
|
|
10
|
+
%substr %$sign %$abc 1
|
|
11
|
+
%if %$sign == '-'
|
|
12
|
+
%substr %$abc %$abc 2,-1
|
|
13
|
+
%xdefine %$sign 0x80
|
|
14
|
+
%elif %$sign == '+'
|
|
15
|
+
%substr %$abc %$abc 2,-1
|
|
16
|
+
%xdefine %$sign 0x00
|
|
17
|
+
%else
|
|
18
|
+
%xdefine %$sign 0x00
|
|
19
|
+
%endif
|
|
20
|
+
%strlen %$abclen %$abc
|
|
21
|
+
%defstr %$abclen_str %$abclen
|
|
22
|
+
%assign %$pos %$abclen
|
|
23
|
+
%assign %$bc 0
|
|
24
|
+
%assign %$ld -1
|
|
25
|
+
%rep %$abclen
|
|
26
|
+
%substr %$chr %$abc %$pos
|
|
27
|
+
%assign %$pos %$pos-1
|
|
28
|
+
%if %$chr >= '0' && %$chr <= '9'
|
|
29
|
+
%if %$ld < 0
|
|
30
|
+
%assign %$ld %$chr-'0'
|
|
31
|
+
%assign %$bc %$bc+1
|
|
32
|
+
%if %$bc > 9
|
|
33
|
+
%warning "too many digits in BCD constant"
|
|
34
|
+
%exitrep
|
|
35
|
+
%endif
|
|
36
|
+
%else
|
|
37
|
+
db %$ld+((%$chr-'0') << 4)
|
|
38
|
+
%assign %$ld -1
|
|
39
|
+
%endif
|
|
40
|
+
%elif %$chr == '_'
|
|
41
|
+
; Do nothing...
|
|
42
|
+
%else
|
|
43
|
+
%error "invalid character in BCD constant"
|
|
44
|
+
%exitrep
|
|
45
|
+
%endif
|
|
46
|
+
%endrep
|
|
47
|
+
%if %$ld >= 0
|
|
48
|
+
db %$ld
|
|
49
|
+
%endif
|
|
50
|
+
%rep 9-%$bc
|
|
51
|
+
db 0
|
|
52
|
+
%endrep
|
|
53
|
+
db %$sign
|
|
54
|
+
%rotate 1
|
|
55
|
+
%endrep
|
|
56
|
+
%pop
|
|
57
|
+
%endmacro
|
|
58
|
+
|
|
59
|
+
dtbcd 123, -456, +789
|
|
60
|
+
dt 123p, -456p, +789p
|
|
61
|
+
dtbcd 765432109876543210
|
|
62
|
+
dt 765432109876543210p
|
|
63
|
+
dtbcd -765432109876543210
|
|
64
|
+
dt -765432109876543210p
|
|
65
|
+
dtbcd +765_432_109_876_543_210
|
|
66
|
+
dt +765_432_109_876_543_210p
|
|
67
|
+
dtbcd -765_432_109_876_543_210
|
|
68
|
+
dt -765_432_109_876_543_210p
|
|
69
|
+
|
|
70
|
+
;; Both of these should warn...
|
|
71
|
+
dtbcd 8_765_432_109_876_543_210
|
|
72
|
+
dt 8_765_432_109_876_543_210p
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
; test source file for assembling to ELF64 shared library
|
|
2
|
+
; build with:
|
|
3
|
+
; nasm -f elf64 elf64so.asm
|
|
4
|
+
; ld -shared -o elf64so.so elf64so.o
|
|
5
|
+
; test with:
|
|
6
|
+
; gcc -o elf64so elftest64.c ./elf64so.so
|
|
7
|
+
; ./elf64so
|
|
8
|
+
|
|
9
|
+
; This file should test the following:
|
|
10
|
+
; [1] Define and export a global text-section symbol
|
|
11
|
+
; [2] Define and export a global data-section symbol
|
|
12
|
+
; [3] Define and export a global BSS-section symbol
|
|
13
|
+
; [4] Define a non-global text-section symbol
|
|
14
|
+
; [5] Define a non-global data-section symbol
|
|
15
|
+
; [6] Define a non-global BSS-section symbol
|
|
16
|
+
; [7] Define a COMMON symbol
|
|
17
|
+
; [8] Define a NASM local label
|
|
18
|
+
; [9] Reference a NASM local label
|
|
19
|
+
; [10] Import an external symbol
|
|
20
|
+
; [11] Make a PC-relative call to an external symbol
|
|
21
|
+
; [12] Reference a text-section symbol in the text section
|
|
22
|
+
; [13] Reference a data-section symbol in the text section
|
|
23
|
+
; [14] Reference a BSS-section symbol in the text section
|
|
24
|
+
; [15] Reference a text-section symbol in the data section
|
|
25
|
+
; [16] Reference a data-section symbol in the data section
|
|
26
|
+
; [17] Reference a BSS-section symbol in the data section
|
|
27
|
+
|
|
28
|
+
BITS 64
|
|
29
|
+
GLOBAL lrotate:function ; [1]
|
|
30
|
+
GLOBAL greet_s:function ; [1]
|
|
31
|
+
GLOBAL greet_m:function ; [1]
|
|
32
|
+
GLOBAL asmstr:data asmstr.end-asmstr ; [2]
|
|
33
|
+
GLOBAL textptr:data 8 ; [2]
|
|
34
|
+
GLOBAL selfptr:data 8 ; [2]
|
|
35
|
+
GLOBAL useless:data 8 ; [3]
|
|
36
|
+
GLOBAL integer:data 8 ; [3]
|
|
37
|
+
EXTERN printf ; [10]
|
|
38
|
+
COMMON commvar 8:8 ; [7]
|
|
39
|
+
EXTERN _GLOBAL_OFFSET_TABLE_
|
|
40
|
+
|
|
41
|
+
SECTION .text
|
|
42
|
+
|
|
43
|
+
; prototype: long lrotate(long x, int num);
|
|
44
|
+
lrotate: ; [1]
|
|
45
|
+
push rbp
|
|
46
|
+
mov rbp,rsp
|
|
47
|
+
mov rax,rdi
|
|
48
|
+
mov rcx,rsi
|
|
49
|
+
.label rol rax,1 ; [4] [8]
|
|
50
|
+
loop .label ; [9] [12]
|
|
51
|
+
mov rsp,rbp
|
|
52
|
+
pop rbp
|
|
53
|
+
ret
|
|
54
|
+
|
|
55
|
+
;; prototype: void greet_*(void);
|
|
56
|
+
;;
|
|
57
|
+
;; Arguments are: rdi - rsi - rdx - rcx - r8 - r9
|
|
58
|
+
;; Registers: rbx, rbp, r12-r15 are saved
|
|
59
|
+
;; greet_s() is Small PIC model, greet_m() is Medium PIC model
|
|
60
|
+
;; (Large model cannot be linked with other code)
|
|
61
|
+
;;
|
|
62
|
+
greet_s:
|
|
63
|
+
;; This instruction is useless, this is only a test...
|
|
64
|
+
cmp qword [rel integer wrt ..got],0
|
|
65
|
+
mov rax,[rel commvar wrt ..got] ; &commvar
|
|
66
|
+
mov rcx,[rax] ; commvar
|
|
67
|
+
mov rax,[rel integer wrt ..got] ; &integer
|
|
68
|
+
mov rsi,[rax]
|
|
69
|
+
lea rdx,[rsi+1]
|
|
70
|
+
mov [rel localint],rdx ; localint = integer+1
|
|
71
|
+
mov rax,[rel localptr] ; localptr
|
|
72
|
+
mov rdx,[rax] ; *localptr = localint
|
|
73
|
+
lea rdi,[rel printfstr]
|
|
74
|
+
xor eax,eax ; No fp arguments
|
|
75
|
+
jmp printf wrt ..plt ; [10]
|
|
76
|
+
|
|
77
|
+
greet_m:
|
|
78
|
+
push r15 ; Used by convention...
|
|
79
|
+
lea r15,[rel _GLOBAL_OFFSET_TABLE_]
|
|
80
|
+
mov rax,[rel commvar wrt ..got] ; &commvar
|
|
81
|
+
mov rcx,[rax] ; commvar
|
|
82
|
+
mov rax,[rel integer wrt ..got] ; &integer
|
|
83
|
+
mov rsi,[rax]
|
|
84
|
+
lea rdx,[rsi+1]
|
|
85
|
+
mov rax,localint wrt ..gotoff ; &localint - r15
|
|
86
|
+
mov [rax+r15],rdx ; localint = integer+1
|
|
87
|
+
mov rax,localptr wrt ..gotoff ; &localptr - r15
|
|
88
|
+
mov rax,[rax+r15] ; localptr
|
|
89
|
+
mov rdx,[rax] ; *localptr = localint
|
|
90
|
+
mov rdi,printfstr wrt ..gotoff ; &printfstr - r15
|
|
91
|
+
add rdi,r15 ; &printfstr
|
|
92
|
+
xor eax,eax ; No fp arguments
|
|
93
|
+
pop r15
|
|
94
|
+
jmp printf wrt ..plt ; [10]
|
|
95
|
+
|
|
96
|
+
SECTION .data
|
|
97
|
+
|
|
98
|
+
; a string
|
|
99
|
+
asmstr db 'hello, world', 0 ; [2]
|
|
100
|
+
.end:
|
|
101
|
+
|
|
102
|
+
; a string for Printf
|
|
103
|
+
printfstr db "integer=%ld, localint=%ld, commvar=%ld", 10, 0
|
|
104
|
+
|
|
105
|
+
; some pointers
|
|
106
|
+
localptr dq localint ; [5] [17]
|
|
107
|
+
textptr dq greet_s wrt ..sym ; [15]
|
|
108
|
+
selfptr dq selfptr wrt ..sym ; [16]
|
|
109
|
+
|
|
110
|
+
SECTION .bss
|
|
111
|
+
; a useless symbol
|
|
112
|
+
useless resq 1
|
|
113
|
+
|
|
114
|
+
; an integer
|
|
115
|
+
integer resq 1 ; [3]
|
|
116
|
+
|
|
117
|
+
; a local integer
|
|
118
|
+
localint resq 1 ; [6]
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
;Testname=unoptimized; Arguments=-O0 -felf -oelfso.o; Files=stdout stderr elfso.o
|
|
2
|
+
;Testname=optimized; Arguments=-Ox -felf -oelfso.o; Files=stdout stderr elfso.o
|
|
3
|
+
|
|
4
|
+
; test source file for assembling to ELF shared library
|
|
5
|
+
; build with:
|
|
6
|
+
; nasm -f elf elfso.asm
|
|
7
|
+
; ld -shared -o elfso.so elfso.o
|
|
8
|
+
; test with:
|
|
9
|
+
; gcc -o elfso elftest.c ./elfso.so
|
|
10
|
+
; ./elfso
|
|
11
|
+
; (assuming your gcc is ELF, and you're running bash)
|
|
12
|
+
|
|
13
|
+
; This file should test the following:
|
|
14
|
+
; [1] Define and export a global text-section symbol
|
|
15
|
+
; [2] Define and export a global data-section symbol
|
|
16
|
+
; [3] Define and export a global BSS-section symbol
|
|
17
|
+
; [4] Define a non-global text-section symbol
|
|
18
|
+
; [5] Define a non-global data-section symbol
|
|
19
|
+
; [6] Define a non-global BSS-section symbol
|
|
20
|
+
; [7] Define a COMMON symbol
|
|
21
|
+
; [8] Define a NASM local label
|
|
22
|
+
; [9] Reference a NASM local label
|
|
23
|
+
; [10] Import an external symbol
|
|
24
|
+
; [11] Make a PC-relative call to an external symbol
|
|
25
|
+
; [12] Reference a text-section symbol in the text section
|
|
26
|
+
; [13] Reference a data-section symbol in the text section
|
|
27
|
+
; [14] Reference a BSS-section symbol in the text section
|
|
28
|
+
; [15] Reference a text-section symbol in the data section
|
|
29
|
+
; [16] Reference a data-section symbol in the data section
|
|
30
|
+
; [17] Reference a BSS-section symbol in the data section
|
|
31
|
+
|
|
32
|
+
BITS 32
|
|
33
|
+
GLOBAL lrotate:function ; [1]
|
|
34
|
+
GLOBAL greet:function ; [1]
|
|
35
|
+
GLOBAL asmstr:data asmstr.end-asmstr ; [2]
|
|
36
|
+
GLOBAL textptr:data 4 ; [2]
|
|
37
|
+
GLOBAL selfptr:data 4 ; [2]
|
|
38
|
+
GLOBAL integer:data 4 ; [3]
|
|
39
|
+
EXTERN printf ; [10]
|
|
40
|
+
COMMON commvar 4:4 ; [7]
|
|
41
|
+
EXTERN _GLOBAL_OFFSET_TABLE_
|
|
42
|
+
|
|
43
|
+
SECTION .text
|
|
44
|
+
|
|
45
|
+
; prototype: long lrotate(long x, int num);
|
|
46
|
+
lrotate: ; [1]
|
|
47
|
+
push ebp
|
|
48
|
+
mov ebp,esp
|
|
49
|
+
mov eax,[ebp+8]
|
|
50
|
+
mov ecx,[ebp+12]
|
|
51
|
+
.label rol eax,1 ; [4] [8]
|
|
52
|
+
loop .label ; [9] [12]
|
|
53
|
+
mov esp,ebp
|
|
54
|
+
pop ebp
|
|
55
|
+
ret
|
|
56
|
+
|
|
57
|
+
; prototype: void greet(void);
|
|
58
|
+
greet push ebx ; we'll use EBX for GOT, so save it
|
|
59
|
+
call .getgot
|
|
60
|
+
.getgot: pop ebx
|
|
61
|
+
add ebx,_GLOBAL_OFFSET_TABLE_ + $$ - .getgot wrt ..gotpc
|
|
62
|
+
mov eax,[ebx+integer wrt ..got] ; [14]
|
|
63
|
+
mov eax,[eax]
|
|
64
|
+
inc eax
|
|
65
|
+
mov [ebx+localint wrt ..gotoff],eax ; [14]
|
|
66
|
+
mov eax,[ebx+commvar wrt ..got]
|
|
67
|
+
push dword [eax]
|
|
68
|
+
mov eax,[ebx+localptr wrt ..gotoff] ; [13]
|
|
69
|
+
push dword [eax]
|
|
70
|
+
mov eax,[ebx+integer wrt ..got] ; [1] [14]
|
|
71
|
+
push dword [eax]
|
|
72
|
+
lea eax,[ebx+printfstr wrt ..gotoff]
|
|
73
|
+
push eax ; [13]
|
|
74
|
+
call printf wrt ..plt ; [11]
|
|
75
|
+
add esp,16
|
|
76
|
+
pop ebx
|
|
77
|
+
ret
|
|
78
|
+
|
|
79
|
+
SECTION .data
|
|
80
|
+
|
|
81
|
+
; a string
|
|
82
|
+
asmstr db 'hello, world', 0 ; [2]
|
|
83
|
+
.end
|
|
84
|
+
|
|
85
|
+
; a string for Printf
|
|
86
|
+
printfstr db "integer==%d, localint==%d, commvar=%d"
|
|
87
|
+
db 10, 0
|
|
88
|
+
|
|
89
|
+
; some pointers
|
|
90
|
+
localptr dd localint ; [5] [17]
|
|
91
|
+
textptr dd greet wrt ..sym ; [15]
|
|
92
|
+
selfptr dd selfptr wrt ..sym ; [16]
|
|
93
|
+
|
|
94
|
+
SECTION .bss
|
|
95
|
+
|
|
96
|
+
; an integer
|
|
97
|
+
integer resd 1 ; [3]
|
|
98
|
+
|
|
99
|
+
; a local integer
|
|
100
|
+
localint resd 1 ; [6]
|