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,284 @@
|
|
|
1
|
+
#!/usr/bin/perl
|
|
2
|
+
## --------------------------------------------------------------------------
|
|
3
|
+
##
|
|
4
|
+
## Copyright 1996-2014 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
|
+
# Generate a perfect hash for token parsing
|
|
37
|
+
#
|
|
38
|
+
# Usage: tokenhash.pl insns.dat regs.dat tokens.dat
|
|
39
|
+
#
|
|
40
|
+
|
|
41
|
+
require 'phash.ph';
|
|
42
|
+
|
|
43
|
+
my($output, $insns_dat, $regs_dat, $tokens_dat) = @ARGV;
|
|
44
|
+
|
|
45
|
+
%tokens = ();
|
|
46
|
+
@tokendata = ();
|
|
47
|
+
|
|
48
|
+
#
|
|
49
|
+
# List of condition codes
|
|
50
|
+
#
|
|
51
|
+
@conditions = ('a', 'ae', 'b', 'be', 'c', 'e', 'g', 'ge', 'l', 'le',
|
|
52
|
+
'na', 'nae', 'nb', 'nbe', 'nc', 'ne', 'ng', 'nge', 'nl',
|
|
53
|
+
'nle', 'no', 'np', 'ns', 'nz', 'o', 'p', 'pe', 'po', 's', 'z');
|
|
54
|
+
|
|
55
|
+
#
|
|
56
|
+
# Read insns.dat
|
|
57
|
+
#
|
|
58
|
+
open(ID, '<', $insns_dat) or die "$0: cannot open $insns_dat: $!\n";
|
|
59
|
+
while (defined($line = <ID>)) {
|
|
60
|
+
if ($line =~ /^([A-Z0-9_]+)(|cc)\s/) {
|
|
61
|
+
$insn = $1.$2;
|
|
62
|
+
($token = $1) =~ tr/A-Z/a-z/;
|
|
63
|
+
|
|
64
|
+
if ($2 eq '') {
|
|
65
|
+
# Single instruction token
|
|
66
|
+
if (!defined($tokens{$token})) {
|
|
67
|
+
$tokens{$token} = scalar @tokendata;
|
|
68
|
+
push(@tokendata, "\"${token}\", TOKEN_INSN, C_none, 0, I_${insn}");
|
|
69
|
+
}
|
|
70
|
+
} else {
|
|
71
|
+
# Conditional instruction
|
|
72
|
+
foreach $cc (@conditions) {
|
|
73
|
+
if (!defined($tokens{$token.$cc})) {
|
|
74
|
+
$tokens{$token.$cc} = scalar @tokendata;
|
|
75
|
+
push(@tokendata, "\"${token}${cc}\", TOKEN_INSN, C_\U$cc\E, 0, I_${insn}");
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
close(ID);
|
|
82
|
+
|
|
83
|
+
#
|
|
84
|
+
# Read regs.dat
|
|
85
|
+
#
|
|
86
|
+
open(RD, '<', $regs_dat) or die "$0: cannot open $regs_dat: $!\n";
|
|
87
|
+
while (defined($line = <RD>)) {
|
|
88
|
+
if ($line =~ /^([a-z0-9_-]+)\s*\S+\s*\S+\s*[0-9]+\s*(\S*)/) {
|
|
89
|
+
$reg = $1;
|
|
90
|
+
$reg_flag = $2;
|
|
91
|
+
|
|
92
|
+
if ($reg =~ /^(.*[^0-9])([0-9]+)\-([0-9]+)(|[^0-9].*)$/) {
|
|
93
|
+
$nregs = $3-$2+1;
|
|
94
|
+
$reg = $1.$2.$4;
|
|
95
|
+
$reg_nr = $2;
|
|
96
|
+
$reg_prefix = $1;
|
|
97
|
+
$reg_suffix = $4;
|
|
98
|
+
} else {
|
|
99
|
+
$nregs = 1;
|
|
100
|
+
undef $reg_prefix, $reg_suffix;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
while ($nregs--) {
|
|
104
|
+
if (defined($tokens{$reg})) {
|
|
105
|
+
die "Duplicate definition: $reg\n";
|
|
106
|
+
}
|
|
107
|
+
$tokens{$reg} = scalar @tokendata;
|
|
108
|
+
if ($reg_flag eq '') {
|
|
109
|
+
push(@tokendata, "\"${reg}\", TOKEN_REG, 0, 0, R_\U${reg}\E");
|
|
110
|
+
} else {
|
|
111
|
+
push(@tokendata, "\"${reg}\", TOKEN_REG, 0, ${reg_flag}, R_\U${reg}\E");
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (defined($reg_prefix)) {
|
|
115
|
+
$reg_nr++;
|
|
116
|
+
$reg = sprintf("%s%u%s", $reg_prefix, $reg_nr, $reg_suffix);
|
|
117
|
+
} else {
|
|
118
|
+
# Not a dashed sequence
|
|
119
|
+
die if ($nregs);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
close(RD);
|
|
125
|
+
|
|
126
|
+
#
|
|
127
|
+
# Read tokens.dat
|
|
128
|
+
#
|
|
129
|
+
open(TD, '<', $tokens_dat) or die "$0: cannot open $tokens_dat: $!\n";
|
|
130
|
+
while (defined($line = <TD>)) {
|
|
131
|
+
if ($line =~ /^\%\s+(.*)$/) {
|
|
132
|
+
$pattern = $1;
|
|
133
|
+
} elsif ($line =~ /^([a-z0-9_-]+)/) {
|
|
134
|
+
$token = $1;
|
|
135
|
+
|
|
136
|
+
if (defined($tokens{$token})) {
|
|
137
|
+
die "Duplicate definition: $token\n";
|
|
138
|
+
}
|
|
139
|
+
$tokens{$token} = scalar @tokendata;
|
|
140
|
+
|
|
141
|
+
$data = $pattern;
|
|
142
|
+
if ($data =~ /^(.*)\{(.*)\}(.*)$/) {
|
|
143
|
+
my $head = $1, $tail = $3;
|
|
144
|
+
my $px = $2;
|
|
145
|
+
|
|
146
|
+
$px =~ s/\*/(.*)/g;
|
|
147
|
+
if ($token =~ /$px/i) {
|
|
148
|
+
$data = $head."\U$1".$tail;
|
|
149
|
+
} else {
|
|
150
|
+
die "$0: token $token doesn't match $px\n";
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
$data =~ s/\*/\U$token/g;
|
|
155
|
+
|
|
156
|
+
push(@tokendata, "\"$token\", $data");
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
close(TD);
|
|
160
|
+
|
|
161
|
+
if ($output eq 'h') {
|
|
162
|
+
#
|
|
163
|
+
# tokens.h
|
|
164
|
+
#
|
|
165
|
+
|
|
166
|
+
$max_len = 0;
|
|
167
|
+
foreach $token (keys(%tokens)) {
|
|
168
|
+
if (length($token) > $max_len) {
|
|
169
|
+
$max_len = length($token);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
print "/*\n";
|
|
174
|
+
print " * This file is generated from insns.dat, regs.dat and token.dat\n";
|
|
175
|
+
print " * by tokhash.pl; do not edit.\n";
|
|
176
|
+
print " */\n";
|
|
177
|
+
print "\n";
|
|
178
|
+
|
|
179
|
+
print "#ifndef NASM_TOKENS_H\n";
|
|
180
|
+
print "#define NASM_TOKENS_H\n";
|
|
181
|
+
print "\n";
|
|
182
|
+
print "#define MAX_KEYWORD $max_len /* length of longest keyword */\n";
|
|
183
|
+
print "\n";
|
|
184
|
+
print "#endif /* NASM_TOKENS_H */\n";
|
|
185
|
+
} elsif ($output eq 'c') {
|
|
186
|
+
#
|
|
187
|
+
# tokhash.c
|
|
188
|
+
#
|
|
189
|
+
|
|
190
|
+
@hashinfo = gen_perfect_hash(\%tokens);
|
|
191
|
+
if (!@hashinfo) {
|
|
192
|
+
die "$0: no hash found\n";
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
# Paranoia...
|
|
196
|
+
verify_hash_table(\%tokens, \@hashinfo);
|
|
197
|
+
|
|
198
|
+
($n, $sv, $g) = @hashinfo;
|
|
199
|
+
$sv2 = $sv+2;
|
|
200
|
+
|
|
201
|
+
die if ($n & ($n-1));
|
|
202
|
+
|
|
203
|
+
print "/*\n";
|
|
204
|
+
print " * This file is generated from insns.dat, regs.dat and token.dat\n";
|
|
205
|
+
print " * by tokhash.pl; do not edit.\n";
|
|
206
|
+
print " */\n";
|
|
207
|
+
print "\n";
|
|
208
|
+
|
|
209
|
+
print "#include \"compiler.h\"\n";
|
|
210
|
+
print "#include <string.h>\n";
|
|
211
|
+
print "#include \"nasm.h\"\n";
|
|
212
|
+
print "#include \"hashtbl.h\"\n";
|
|
213
|
+
print "#include \"insns.h\"\n";
|
|
214
|
+
print "#include \"stdscan.h\"\n";
|
|
215
|
+
print "\n";
|
|
216
|
+
|
|
217
|
+
# These somewhat odd sizes and ordering thereof are due to the
|
|
218
|
+
# relative ranges of the types; this makes it fit in 16 bytes on
|
|
219
|
+
# 64-bit machines and 12 bytes on 32-bit machines.
|
|
220
|
+
print "struct tokendata {\n";
|
|
221
|
+
print " const char *string;\n";
|
|
222
|
+
print " int16_t tokentype;\n";
|
|
223
|
+
print " int8_t aux;\n";
|
|
224
|
+
print " int8_t tokflag;\n";
|
|
225
|
+
print " int32_t num;\n";
|
|
226
|
+
print "};\n";
|
|
227
|
+
print "\n";
|
|
228
|
+
|
|
229
|
+
print "int nasm_token_hash(const char *token, struct tokenval *tv)\n";
|
|
230
|
+
print "{\n";
|
|
231
|
+
|
|
232
|
+
# Put a large value in unused slots. This makes it extremely unlikely
|
|
233
|
+
# that any combination that involves unused slot will pass the range test.
|
|
234
|
+
# This speeds up rejection of unrecognized tokens, i.e. identifiers.
|
|
235
|
+
print "#define UNUSED (65535/3)\n";
|
|
236
|
+
|
|
237
|
+
print " static const int16_t hash1[$n] = {\n";
|
|
238
|
+
for ($i = 0; $i < $n; $i++) {
|
|
239
|
+
my $h = ${$g}[$i*2+0];
|
|
240
|
+
print " ", defined($h) ? $h : 'UNUSED', ",\n";
|
|
241
|
+
}
|
|
242
|
+
print " };\n";
|
|
243
|
+
|
|
244
|
+
print " static const int16_t hash2[$n] = {\n";
|
|
245
|
+
for ($i = 0; $i < $n; $i++) {
|
|
246
|
+
my $h = ${$g}[$i*2+1];
|
|
247
|
+
print " ", defined($h) ? $h : 'UNUSED', ",\n";
|
|
248
|
+
}
|
|
249
|
+
print " };\n";
|
|
250
|
+
|
|
251
|
+
printf " static const struct tokendata tokendata[%d] = {\n", scalar(@tokendata);
|
|
252
|
+
foreach $d (@tokendata) {
|
|
253
|
+
print " { ", $d, " },\n";
|
|
254
|
+
}
|
|
255
|
+
print " };\n";
|
|
256
|
+
|
|
257
|
+
print " uint32_t k1, k2;\n";
|
|
258
|
+
print " uint64_t crc;\n";
|
|
259
|
+
# For correct overflow behavior, "ix" should be unsigned of the same
|
|
260
|
+
# width as the hash arrays.
|
|
261
|
+
print " uint16_t ix;\n";
|
|
262
|
+
print " const struct tokendata *data;\n";
|
|
263
|
+
print "\n";
|
|
264
|
+
printf " tv->t_flag = 0;\n";
|
|
265
|
+
printf " crc = crc64(UINT64_C(0x%08x%08x), token);\n",
|
|
266
|
+
$$sv[0], $$sv[1];
|
|
267
|
+
print " k1 = (uint32_t)crc;\n";
|
|
268
|
+
print " k2 = (uint32_t)(crc >> 32);\n";
|
|
269
|
+
print "\n";
|
|
270
|
+
printf " ix = hash1[k1 & 0x%x] + hash2[k2 & 0x%x];\n", $n-1, $n-1;
|
|
271
|
+
printf " if (ix >= %d)\n", scalar(@tokendata);
|
|
272
|
+
print " return tv->t_type = TOKEN_ID;\n";
|
|
273
|
+
print "\n";
|
|
274
|
+
print " data = &tokendata[ix];\n";
|
|
275
|
+
|
|
276
|
+
print " if (strcmp(data->string, token))\n";
|
|
277
|
+
print " return tv->t_type = TOKEN_ID;\n";
|
|
278
|
+
print "\n";
|
|
279
|
+
print " tv->t_integer = data->num;\n";
|
|
280
|
+
print " tv->t_inttwo = data->aux;\n";
|
|
281
|
+
print " tv->t_flag = data->tokflag;\n";
|
|
282
|
+
print " return tv->t_type = data->tokentype;\n";
|
|
283
|
+
print "}\n";
|
|
284
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/* ----------------------------------------------------------------------- *
|
|
2
|
+
*
|
|
3
|
+
* Copyright 1996-2016 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
|
+
* common.c - code common to nasm and ndisasm
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
#include "compiler.h"
|
|
39
|
+
#include "nasm.h"
|
|
40
|
+
#include "nasmlib.h"
|
|
41
|
+
#include "insns.h"
|
|
42
|
+
|
|
43
|
+
/*
|
|
44
|
+
* The current bit size of the CPU
|
|
45
|
+
*/
|
|
46
|
+
int globalbits = 0;
|
|
47
|
+
/*
|
|
48
|
+
* Common list of prefix names; ideally should be auto-generated
|
|
49
|
+
* from tokens.dat
|
|
50
|
+
*/
|
|
51
|
+
const char *prefix_name(int token)
|
|
52
|
+
{
|
|
53
|
+
static const char *prefix_names[] = {
|
|
54
|
+
"a16", "a32", "a64", "asp", "lock", "o16", "o32", "o64", "osp",
|
|
55
|
+
"rep", "repe", "repne", "repnz", "repz", "times", "wait",
|
|
56
|
+
"xacquire", "xrelease", "bnd"
|
|
57
|
+
};
|
|
58
|
+
unsigned int prefix = token-PREFIX_ENUM_START;
|
|
59
|
+
|
|
60
|
+
if (prefix >= ARRAY_SIZE(prefix_names))
|
|
61
|
+
return NULL;
|
|
62
|
+
|
|
63
|
+
return prefix_names[prefix];
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/*
|
|
67
|
+
* initialized data bytes length from opcode
|
|
68
|
+
*/
|
|
69
|
+
int idata_bytes(enum opcode opcode)
|
|
70
|
+
{
|
|
71
|
+
switch (opcode) {
|
|
72
|
+
case I_DB:
|
|
73
|
+
return 1;
|
|
74
|
+
case I_DW:
|
|
75
|
+
return 2;
|
|
76
|
+
case I_DD:
|
|
77
|
+
return 4;
|
|
78
|
+
case I_DQ:
|
|
79
|
+
return 8;
|
|
80
|
+
case I_DT:
|
|
81
|
+
return 10;
|
|
82
|
+
case I_DO:
|
|
83
|
+
return 16;
|
|
84
|
+
case I_DY:
|
|
85
|
+
return 32;
|
|
86
|
+
case I_DZ:
|
|
87
|
+
return 64;
|
|
88
|
+
case I_none:
|
|
89
|
+
return -1;
|
|
90
|
+
default:
|
|
91
|
+
return 0;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/*
|
|
96
|
+
* Uninitialized data bytes length from opcode
|
|
97
|
+
*/
|
|
98
|
+
int resv_bytes(enum opcode opcode)
|
|
99
|
+
{
|
|
100
|
+
switch (opcode) {
|
|
101
|
+
case I_RESB:
|
|
102
|
+
return 1;
|
|
103
|
+
case I_RESW:
|
|
104
|
+
return 2;
|
|
105
|
+
case I_RESD:
|
|
106
|
+
return 4;
|
|
107
|
+
case I_RESQ:
|
|
108
|
+
return 8;
|
|
109
|
+
case I_REST:
|
|
110
|
+
return 10;
|
|
111
|
+
case I_RESO:
|
|
112
|
+
return 16;
|
|
113
|
+
case I_RESY:
|
|
114
|
+
return 32;
|
|
115
|
+
case I_RESZ:
|
|
116
|
+
return 64;
|
|
117
|
+
case I_none:
|
|
118
|
+
return -1;
|
|
119
|
+
default:
|
|
120
|
+
return 0;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/* ----------------------------------------------------------------------- *
|
|
2
|
+
*
|
|
3
|
+
* Copyright 2016 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
|
+
* config/msvc.h
|
|
36
|
+
*
|
|
37
|
+
* Compiler definitions for Microsoft Visual C++;
|
|
38
|
+
* instead of config.h.in. See config.h.in for the
|
|
39
|
+
* variables which can be defined here.
|
|
40
|
+
*
|
|
41
|
+
* MSDN seems to have information back to Visual Studio 2003, so aim
|
|
42
|
+
* for compatibility that far back.
|
|
43
|
+
*
|
|
44
|
+
* Relevant _MSC_VER values:
|
|
45
|
+
* 1310 - Visual Studio 2003
|
|
46
|
+
* 1400 - Visual Studio 2005
|
|
47
|
+
* 1500 - Visual Studio 2008
|
|
48
|
+
* 1600 - Visual Studio 2010
|
|
49
|
+
* 1700 - Visual Studio 2012
|
|
50
|
+
* 1800 - Visual Studio 2013
|
|
51
|
+
* 1900 - Visual Studio 2015
|
|
52
|
+
* 1910 - Visual Studio 2017
|
|
53
|
+
*/
|
|
54
|
+
|
|
55
|
+
#ifndef NASM_CONFIG_MSVC_H
|
|
56
|
+
#define NASM_CONFIG_MSVC_H
|
|
57
|
+
|
|
58
|
+
/* Define to 1 if you have the <fcntl.h> header file. */
|
|
59
|
+
#define HAVE_FCNTL_H 1
|
|
60
|
+
|
|
61
|
+
/* Define to 1 if you have the <inttypes.h> header file. */
|
|
62
|
+
#if _MSC_VER >= 1800
|
|
63
|
+
# define HAVE_INTTYPES_H 1
|
|
64
|
+
#endif
|
|
65
|
+
|
|
66
|
+
/* Define to 1 if you have the <io.h> header file. */
|
|
67
|
+
#define HAVE_IO_H 1
|
|
68
|
+
|
|
69
|
+
/* Define to 1 if you have the <stdlib.h> header file. */
|
|
70
|
+
#define HAVE_STDLIB_H 1
|
|
71
|
+
|
|
72
|
+
/* Define to 1 if you have the <string.h> header file. */
|
|
73
|
+
#define HAVE_STRING_H 1
|
|
74
|
+
|
|
75
|
+
/* Define to 1 if you have the <sys/stat.h> header file. */
|
|
76
|
+
#define HAVE_SYS_STAT_H 1
|
|
77
|
+
|
|
78
|
+
/* Define to 1 if you have the <sys/types.h> header file. */
|
|
79
|
+
#define HAVE_SYS_TYPES_H 1
|
|
80
|
+
|
|
81
|
+
/* Define to 1 if you have the `access' function. */
|
|
82
|
+
#define HAVE_ACCESS 1
|
|
83
|
+
#if _MSC_VER < 1400
|
|
84
|
+
# define access _access
|
|
85
|
+
#endif
|
|
86
|
+
|
|
87
|
+
/* Define to 1 if you have the `fileno' function. */
|
|
88
|
+
#define HAVE_FILENO 1
|
|
89
|
+
#if _MSC_VER < 1400
|
|
90
|
+
# define fileno _fileno
|
|
91
|
+
#endif
|
|
92
|
+
|
|
93
|
+
/* Define to 1 if you have the `snprintf' function. */
|
|
94
|
+
#define HAVE_SNPRINTF 1
|
|
95
|
+
#if _MSC_VER < 1900
|
|
96
|
+
# define snprintf _snprinf
|
|
97
|
+
#endif
|
|
98
|
+
|
|
99
|
+
/* Define to 1 if you have the `_chsize' function. */
|
|
100
|
+
#define HAVE__CHSIZE 1
|
|
101
|
+
|
|
102
|
+
/* Define to 1 if you have the `_chsize_s' function. */
|
|
103
|
+
#if _MSC_VER >= 1400
|
|
104
|
+
# define HAVE__CHSIZE_S 1
|
|
105
|
+
#endif
|
|
106
|
+
|
|
107
|
+
/* Define to 1 if you have the `_filelengthi64' function. */
|
|
108
|
+
#define HAVE__FILELENGTHI64 1
|
|
109
|
+
|
|
110
|
+
/* Define to 1 if you have the `_fseeki64' function. */
|
|
111
|
+
#define HAVE__FSEEKI64 1
|
|
112
|
+
|
|
113
|
+
/* Define to 1 if you have the `_fullpath' function. */
|
|
114
|
+
#define HAVE__FULLPATH 1
|
|
115
|
+
|
|
116
|
+
/* Define to 1 if the system has the type `struct _stati64'. */
|
|
117
|
+
#define HAVE_STRUCT__STATI64
|
|
118
|
+
|
|
119
|
+
/* Define to 1 if you have the `_stati64' function. */
|
|
120
|
+
#define HAVE__STATI64 1
|
|
121
|
+
|
|
122
|
+
/* Define to 1 if you have the `_fstati64' function. */
|
|
123
|
+
#define HAVE__FSTATI64 1
|
|
124
|
+
|
|
125
|
+
/* Define to 1 if stdbool.h conforms to C99. */
|
|
126
|
+
#if _MSC_VER >= 1800
|
|
127
|
+
# define HAVE_STDBOOL_H 1
|
|
128
|
+
#endif
|
|
129
|
+
|
|
130
|
+
/* Define to 1 if you have the `stricmp' function. */
|
|
131
|
+
#define HAVE_STRICMP 1
|
|
132
|
+
/* Define to 1 if you have the declaration of `stricmp', and to 0 if you
|
|
133
|
+
don't. */
|
|
134
|
+
#define HAVE_DECL_STRICMP 1
|
|
135
|
+
#if _MSC_VER < 1400
|
|
136
|
+
# define stricmp _stricmp
|
|
137
|
+
#endif
|
|
138
|
+
|
|
139
|
+
/* Define to 1 if you have the `strnicmp' function. */
|
|
140
|
+
#define HAVE_STRNICMP 1
|
|
141
|
+
/* Define to 1 if you have the declaration of `strnicmp', and to 0 if you
|
|
142
|
+
don't. */
|
|
143
|
+
#define HAVE_DECL_STRNICMP 1
|
|
144
|
+
#if _MSC_VER < 1400
|
|
145
|
+
# define strnicmp _strnicmp
|
|
146
|
+
#endif
|
|
147
|
+
|
|
148
|
+
#if _MSC_VER >= 1400
|
|
149
|
+
/* Define to 1 if you have the `strnlen' function. */
|
|
150
|
+
# define HAVE_STRNLEN 1
|
|
151
|
+
/* Define to 1 if you have the declaration of `strnlen', and to 0 if you
|
|
152
|
+
don't. */
|
|
153
|
+
# define HAVE_DECL_STRNLEN 1
|
|
154
|
+
#endif
|
|
155
|
+
|
|
156
|
+
/* Define to 1 if the system has the type `uintptr_t'. */
|
|
157
|
+
#if _MSC_VER >= 1900
|
|
158
|
+
# define HAVE_UINTPTR_T 1
|
|
159
|
+
#else
|
|
160
|
+
/* Define to the type of an unsigned integer type wide enough to hold a
|
|
161
|
+
pointer, if such a type exists, and if the system does not define it. */
|
|
162
|
+
# define uintptr_t size_t
|
|
163
|
+
#endif
|
|
164
|
+
|
|
165
|
+
/* Define to 1 if you have the `vsnprintf' function. */
|
|
166
|
+
#define HAVE_VSNPRINTF 1
|
|
167
|
+
#if _MSC_VER < 1400
|
|
168
|
+
# define vsnprint _vsnprintf
|
|
169
|
+
#endif
|
|
170
|
+
|
|
171
|
+
/* Define to 1 if the system has the type `_Bool'. */
|
|
172
|
+
#if _MSC_VER >= 1900
|
|
173
|
+
# define HAVE__BOOL 1
|
|
174
|
+
#endif
|
|
175
|
+
|
|
176
|
+
/* Define to 1 if you have the ANSI C header files. */
|
|
177
|
+
#define STDC_HEADERS 1
|
|
178
|
+
|
|
179
|
+
/* Define to 1 if your processor stores words with the least significant byte
|
|
180
|
+
first (like Intel and VAX, unlike Motorola and SPARC). */
|
|
181
|
+
#define WORDS_LITTLEENDIAN 1
|
|
182
|
+
|
|
183
|
+
/* Define to `__inline__' or `__inline' if that's what the C compiler
|
|
184
|
+
calls it, or to nothing if 'inline' is not supported under any name. */
|
|
185
|
+
#define inline __inline
|
|
186
|
+
|
|
187
|
+
/* Define to the equivalent of the C99 'restrict' keyword, or to
|
|
188
|
+
nothing if this is not supported. Do not define if restrict is
|
|
189
|
+
supported directly. */
|
|
190
|
+
#define restrict __restrict
|
|
191
|
+
|
|
192
|
+
#endif /* NASM_CONFIG_MSVC_H */
|