laag-nasm 2.13.03.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +57 -0
- data/LICENSE.txt +29 -0
- data/README.org +34 -0
- data/ext/laag/nasm/extconf.rb +16 -0
- data/laag-nasm.gemspec +20 -0
- data/lib/laag/nasm.rb +29 -0
- data/patches/Makefile.in.patch +13 -0
- data/vendor/repo.or.cz/nasm/.gitignore +102 -0
- data/vendor/repo.or.cz/nasm/AUTHORS +137 -0
- data/vendor/repo.or.cz/nasm/CHANGES +2 -0
- data/vendor/repo.or.cz/nasm/ChangeLog +2905 -0
- data/vendor/repo.or.cz/nasm/INSTALL +102 -0
- data/vendor/repo.or.cz/nasm/LICENSE +29 -0
- data/vendor/repo.or.cz/nasm/Makefile.in +855 -0
- data/vendor/repo.or.cz/nasm/Mkfiles/README +46 -0
- data/vendor/repo.or.cz/nasm/Mkfiles/msvc.mak +732 -0
- data/vendor/repo.or.cz/nasm/Mkfiles/openwcom.mak +706 -0
- data/vendor/repo.or.cz/nasm/README +23 -0
- data/vendor/repo.or.cz/nasm/SubmittingPatches +116 -0
- data/vendor/repo.or.cz/nasm/TODO +376 -0
- data/vendor/repo.or.cz/nasm/aclocal.m4 +139 -0
- data/vendor/repo.or.cz/nasm/asm/assemble.c +2957 -0
- data/vendor/repo.or.cz/nasm/asm/assemble.h +54 -0
- data/vendor/repo.or.cz/nasm/asm/directiv.c +566 -0
- data/vendor/repo.or.cz/nasm/asm/directiv.dat +92 -0
- data/vendor/repo.or.cz/nasm/asm/error.c +202 -0
- data/vendor/repo.or.cz/nasm/asm/eval.c +1014 -0
- data/vendor/repo.or.cz/nasm/asm/eval.h +49 -0
- data/vendor/repo.or.cz/nasm/asm/exprdump.c +79 -0
- data/vendor/repo.or.cz/nasm/asm/exprlib.c +200 -0
- data/vendor/repo.or.cz/nasm/asm/float.c +952 -0
- data/vendor/repo.or.cz/nasm/asm/float.h +54 -0
- data/vendor/repo.or.cz/nasm/asm/labels.c +540 -0
- data/vendor/repo.or.cz/nasm/asm/listing.c +346 -0
- data/vendor/repo.or.cz/nasm/asm/listing.h +113 -0
- data/vendor/repo.or.cz/nasm/asm/nasm.c +1855 -0
- data/vendor/repo.or.cz/nasm/asm/parser.c +1167 -0
- data/vendor/repo.or.cz/nasm/asm/parser.h +45 -0
- data/vendor/repo.or.cz/nasm/asm/phash.pl +109 -0
- data/vendor/repo.or.cz/nasm/asm/pptok.dat +96 -0
- data/vendor/repo.or.cz/nasm/asm/pptok.pl +271 -0
- data/vendor/repo.or.cz/nasm/asm/pragma.c +218 -0
- data/vendor/repo.or.cz/nasm/asm/preproc-nop.c +188 -0
- data/vendor/repo.or.cz/nasm/asm/preproc.c +5459 -0
- data/vendor/repo.or.cz/nasm/asm/preproc.h +55 -0
- data/vendor/repo.or.cz/nasm/asm/quote.c +479 -0
- data/vendor/repo.or.cz/nasm/asm/quote.h +44 -0
- data/vendor/repo.or.cz/nasm/asm/rdstrnum.c +68 -0
- data/vendor/repo.or.cz/nasm/asm/segalloc.c +51 -0
- data/vendor/repo.or.cz/nasm/asm/stdscan.c +345 -0
- data/vendor/repo.or.cz/nasm/asm/stdscan.h +49 -0
- data/vendor/repo.or.cz/nasm/asm/strfunc.c +359 -0
- data/vendor/repo.or.cz/nasm/asm/tokens.dat +135 -0
- data/vendor/repo.or.cz/nasm/asm/tokhash.pl +284 -0
- data/vendor/repo.or.cz/nasm/autogen.sh +9 -0
- data/vendor/repo.or.cz/nasm/common/common.c +122 -0
- data/vendor/repo.or.cz/nasm/config/msvc.h +192 -0
- data/vendor/repo.or.cz/nasm/config/unknown.h +51 -0
- data/vendor/repo.or.cz/nasm/config/watcom.h +74 -0
- data/vendor/repo.or.cz/nasm/configure.ac +253 -0
- data/vendor/repo.or.cz/nasm/contrib/MSVC6.txt +25 -0
- data/vendor/repo.or.cz/nasm/contrib/VSrules/nasm.README +16 -0
- data/vendor/repo.or.cz/nasm/contrib/VSrules/nasm.rules +79 -0
- data/vendor/repo.or.cz/nasm/disasm/disasm.c +1735 -0
- data/vendor/repo.or.cz/nasm/disasm/disasm.h +49 -0
- data/vendor/repo.or.cz/nasm/disasm/ndisasm.c +397 -0
- data/vendor/repo.or.cz/nasm/disasm/sync.c +132 -0
- data/vendor/repo.or.cz/nasm/disasm/sync.h +45 -0
- data/vendor/repo.or.cz/nasm/doc/Makefile.in +86 -0
- data/vendor/repo.or.cz/nasm/doc/README +20 -0
- data/vendor/repo.or.cz/nasm/doc/afmmetrics.ph +102 -0
- data/vendor/repo.or.cz/nasm/doc/changes.src +2588 -0
- data/vendor/repo.or.cz/nasm/doc/findfont.ph +180 -0
- data/vendor/repo.or.cz/nasm/doc/genps.pl +1294 -0
- data/vendor/repo.or.cz/nasm/doc/inslist.pl +108 -0
- data/vendor/repo.or.cz/nasm/doc/internal.doc +290 -0
- data/vendor/repo.or.cz/nasm/doc/local.css +1 -0
- data/vendor/repo.or.cz/nasm/doc/nasmdoc.css +150 -0
- data/vendor/repo.or.cz/nasm/doc/nasmdoc.src +8309 -0
- data/vendor/repo.or.cz/nasm/doc/nasmlogo.eps +212 -0
- data/vendor/repo.or.cz/nasm/doc/nasmlogw.png +0 -0
- data/vendor/repo.or.cz/nasm/doc/psfonts.ph +53 -0
- data/vendor/repo.or.cz/nasm/doc/pspdf.pl +98 -0
- data/vendor/repo.or.cz/nasm/doc/pswidth.ph +25 -0
- data/vendor/repo.or.cz/nasm/doc/rdsrc.pl +1111 -0
- data/vendor/repo.or.cz/nasm/doc/ttfmetrics.ph +63 -0
- data/vendor/repo.or.cz/nasm/headers/c +33 -0
- data/vendor/repo.or.cz/nasm/headers/doc +33 -0
- data/vendor/repo.or.cz/nasm/headers/mac +33 -0
- data/vendor/repo.or.cz/nasm/headers/perl +33 -0
- data/vendor/repo.or.cz/nasm/include/compiler.h +277 -0
- data/vendor/repo.or.cz/nasm/include/disp8.h +45 -0
- data/vendor/repo.or.cz/nasm/include/error.h +135 -0
- data/vendor/repo.or.cz/nasm/include/hashtbl.h +85 -0
- data/vendor/repo.or.cz/nasm/include/iflag.h +173 -0
- data/vendor/repo.or.cz/nasm/include/insns.h +76 -0
- data/vendor/repo.or.cz/nasm/include/labels.h +60 -0
- data/vendor/repo.or.cz/nasm/include/md5.h +21 -0
- data/vendor/repo.or.cz/nasm/include/nasm.h +1246 -0
- data/vendor/repo.or.cz/nasm/include/nasmint.h +219 -0
- data/vendor/repo.or.cz/nasm/include/nasmlib.h +524 -0
- data/vendor/repo.or.cz/nasm/include/opflags.h +271 -0
- data/vendor/repo.or.cz/nasm/include/perfhash.h +52 -0
- data/vendor/repo.or.cz/nasm/include/raa.h +46 -0
- data/vendor/repo.or.cz/nasm/include/rbtree.h +51 -0
- data/vendor/repo.or.cz/nasm/include/rdoff.h +169 -0
- data/vendor/repo.or.cz/nasm/include/saa.h +94 -0
- data/vendor/repo.or.cz/nasm/include/strlist.h +55 -0
- data/vendor/repo.or.cz/nasm/include/tables.h +70 -0
- data/vendor/repo.or.cz/nasm/include/ver.h +47 -0
- data/vendor/repo.or.cz/nasm/install-sh +250 -0
- data/vendor/repo.or.cz/nasm/macros/altreg.mac +107 -0
- data/vendor/repo.or.cz/nasm/macros/fp.mac +54 -0
- data/vendor/repo.or.cz/nasm/macros/ifunc.mac +48 -0
- data/vendor/repo.or.cz/nasm/macros/macros.pl +294 -0
- data/vendor/repo.or.cz/nasm/macros/smartalign.mac +189 -0
- data/vendor/repo.or.cz/nasm/macros/standard.mac +226 -0
- data/vendor/repo.or.cz/nasm/misc/Doxyfile +752 -0
- data/vendor/repo.or.cz/nasm/misc/Nindent +18 -0
- data/vendor/repo.or.cz/nasm/misc/README +2 -0
- data/vendor/repo.or.cz/nasm/misc/c16.mac +82 -0
- data/vendor/repo.or.cz/nasm/misc/c32.mac +52 -0
- data/vendor/repo.or.cz/nasm/misc/crcgen.c +44 -0
- data/vendor/repo.or.cz/nasm/misc/exebin.mac +57 -0
- data/vendor/repo.or.cz/nasm/misc/exebin2.mac +114 -0
- data/vendor/repo.or.cz/nasm/misc/fmtinsns.pl +40 -0
- data/vendor/repo.or.cz/nasm/misc/genfma.pl +63 -0
- data/vendor/repo.or.cz/nasm/misc/hints.txt +26 -0
- data/vendor/repo.or.cz/nasm/misc/magic +6 -0
- data/vendor/repo.or.cz/nasm/misc/myC32.mac +121 -0
- data/vendor/repo.or.cz/nasm/misc/nasm.sl +320 -0
- data/vendor/repo.or.cz/nasm/misc/nasmstab +296 -0
- data/vendor/repo.or.cz/nasm/misc/omfdump.c +517 -0
- data/vendor/repo.or.cz/nasm/misc/pmw.bat +9 -0
- data/vendor/repo.or.cz/nasm/misc/proc32.ash +441 -0
- data/vendor/repo.or.cz/nasm/misc/scitech.mac +1223 -0
- data/vendor/repo.or.cz/nasm/misc/xcrcgen.c +80 -0
- data/vendor/repo.or.cz/nasm/nasm.spec.in +83 -0
- data/vendor/repo.or.cz/nasm/nasm.spec.sed +3 -0
- data/vendor/repo.or.cz/nasm/nasm.txt +306 -0
- data/vendor/repo.or.cz/nasm/nasmlib/badenum.c +43 -0
- data/vendor/repo.or.cz/nasm/nasmlib/bsi.c +77 -0
- data/vendor/repo.or.cz/nasm/nasmlib/crc64.c +189 -0
- data/vendor/repo.or.cz/nasm/nasmlib/file.c +259 -0
- data/vendor/repo.or.cz/nasm/nasmlib/file.h +128 -0
- data/vendor/repo.or.cz/nasm/nasmlib/filename.c +69 -0
- data/vendor/repo.or.cz/nasm/nasmlib/hashtbl.c +232 -0
- data/vendor/repo.or.cz/nasm/nasmlib/ilog2.c +168 -0
- data/vendor/repo.or.cz/nasm/nasmlib/malloc.c +108 -0
- data/vendor/repo.or.cz/nasm/nasmlib/md5c.c +247 -0
- data/vendor/repo.or.cz/nasm/nasmlib/mmap.c +139 -0
- data/vendor/repo.or.cz/nasm/nasmlib/path.c +186 -0
- data/vendor/repo.or.cz/nasm/nasmlib/perfhash.c +55 -0
- data/vendor/repo.or.cz/nasm/nasmlib/perfhash.pl +362 -0
- data/vendor/repo.or.cz/nasm/nasmlib/raa.c +173 -0
- data/vendor/repo.or.cz/nasm/nasmlib/rbtree.c +119 -0
- data/vendor/repo.or.cz/nasm/nasmlib/readnum.c +172 -0
- data/vendor/repo.or.cz/nasm/nasmlib/realpath.c +135 -0
- data/vendor/repo.or.cz/nasm/nasmlib/saa.c +431 -0
- data/vendor/repo.or.cz/nasm/nasmlib/srcfile.c +128 -0
- data/vendor/repo.or.cz/nasm/nasmlib/string.c +242 -0
- data/vendor/repo.or.cz/nasm/nasmlib/strlist.c +100 -0
- data/vendor/repo.or.cz/nasm/nasmlib/ver.c +51 -0
- data/vendor/repo.or.cz/nasm/nasmlib/zerobuf.c +42 -0
- data/vendor/repo.or.cz/nasm/ndisasm.txt +94 -0
- data/vendor/repo.or.cz/nasm/nsis/NASMMultiUser.nsh +478 -0
- data/vendor/repo.or.cz/nasm/nsis/getpearch.pl +76 -0
- data/vendor/repo.or.cz/nasm/nsis/nasm-un.ico +0 -0
- data/vendor/repo.or.cz/nasm/nsis/nasm.ico +0 -0
- data/vendor/repo.or.cz/nasm/nsis/nasm.nsi +241 -0
- data/vendor/repo.or.cz/nasm/output/codeview.c +814 -0
- data/vendor/repo.or.cz/nasm/output/dwarf.h +566 -0
- data/vendor/repo.or.cz/nasm/output/elf.h +537 -0
- data/vendor/repo.or.cz/nasm/output/legacy.c +112 -0
- data/vendor/repo.or.cz/nasm/output/nulldbg.c +93 -0
- data/vendor/repo.or.cz/nasm/output/nullout.c +51 -0
- data/vendor/repo.or.cz/nasm/output/outaout.c +954 -0
- data/vendor/repo.or.cz/nasm/output/outaout.mac +37 -0
- data/vendor/repo.or.cz/nasm/output/outas86.c +650 -0
- data/vendor/repo.or.cz/nasm/output/outas86.mac +37 -0
- data/vendor/repo.or.cz/nasm/output/outbin.c +1713 -0
- data/vendor/repo.or.cz/nasm/output/outbin.mac +40 -0
- data/vendor/repo.or.cz/nasm/output/outcoff.c +1242 -0
- data/vendor/repo.or.cz/nasm/output/outcoff.mac +43 -0
- data/vendor/repo.or.cz/nasm/output/outdbg.c +425 -0
- data/vendor/repo.or.cz/nasm/output/outelf.c +3370 -0
- data/vendor/repo.or.cz/nasm/output/outelf.h +156 -0
- data/vendor/repo.or.cz/nasm/output/outelf.mac +41 -0
- data/vendor/repo.or.cz/nasm/output/outform.c +120 -0
- data/vendor/repo.or.cz/nasm/output/outform.h +379 -0
- data/vendor/repo.or.cz/nasm/output/outieee.c +1528 -0
- data/vendor/repo.or.cz/nasm/output/outlib.c +58 -0
- data/vendor/repo.or.cz/nasm/output/outlib.h +63 -0
- data/vendor/repo.or.cz/nasm/output/outmacho.c +2387 -0
- data/vendor/repo.or.cz/nasm/output/outmacho.mac +49 -0
- data/vendor/repo.or.cz/nasm/output/outobj.c +2725 -0
- data/vendor/repo.or.cz/nasm/output/outobj.mac +49 -0
- data/vendor/repo.or.cz/nasm/output/outrdf.mac +40 -0
- data/vendor/repo.or.cz/nasm/output/outrdf2.c +791 -0
- data/vendor/repo.or.cz/nasm/output/outrdf2.mac +43 -0
- data/vendor/repo.or.cz/nasm/output/pecoff.h +532 -0
- data/vendor/repo.or.cz/nasm/output/stabs.h +144 -0
- data/vendor/repo.or.cz/nasm/perllib/crc64.ph +158 -0
- data/vendor/repo.or.cz/nasm/perllib/gensv.pl +34 -0
- data/vendor/repo.or.cz/nasm/perllib/phash.ph +200 -0
- data/vendor/repo.or.cz/nasm/perllib/random_sv_vectors.ph +67 -0
- data/vendor/repo.or.cz/nasm/rdoff/README +185 -0
- data/vendor/repo.or.cz/nasm/rdoff/collectn.c +44 -0
- data/vendor/repo.or.cz/nasm/rdoff/collectn.h +22 -0
- data/vendor/repo.or.cz/nasm/rdoff/doc/Makefile +37 -0
- data/vendor/repo.or.cz/nasm/rdoff/doc/rdoff.texi +137 -0
- data/vendor/repo.or.cz/nasm/rdoff/doc/v1-v2.txt +62 -0
- data/vendor/repo.or.cz/nasm/rdoff/hash.c +122 -0
- data/vendor/repo.or.cz/nasm/rdoff/hash.h +17 -0
- data/vendor/repo.or.cz/nasm/rdoff/ldrdf.1 +41 -0
- data/vendor/repo.or.cz/nasm/rdoff/ldrdf.c +1395 -0
- data/vendor/repo.or.cz/nasm/rdoff/ldsegs.h +59 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2bin.1 +65 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2bin.c +431 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2com.1 +1 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2ihx.1 +1 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2ith.1 +1 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdf2srec.1 +1 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdfdump.1 +24 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdfdump.c +347 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdflib.1 +39 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdflib.c +434 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdfload.c +213 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdfload.h +29 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdfutils.h +165 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdlar.c +492 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdlar.h +34 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdlib.c +290 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdlib.h +62 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdoff.c +621 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdx.1 +21 -0
- data/vendor/repo.or.cz/nasm/rdoff/rdx.c +90 -0
- data/vendor/repo.or.cz/nasm/rdoff/segtab.c +172 -0
- data/vendor/repo.or.cz/nasm/rdoff/segtab.h +45 -0
- data/vendor/repo.or.cz/nasm/rdoff/symtab.c +159 -0
- data/vendor/repo.or.cz/nasm/rdoff/symtab.h +55 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/Makefile +10 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/makelib.sh +14 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdfseg.asm +20 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdfseg2.asm +12 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdftest1.asm +54 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdftest2.asm +33 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdtlib.asm +48 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/rdtmain.asm +47 -0
- data/vendor/repo.or.cz/nasm/rdoff/test/testlib.asm +18 -0
- data/vendor/repo.or.cz/nasm/stdlib/snprintf.c +29 -0
- data/vendor/repo.or.cz/nasm/stdlib/strlcpy.c +51 -0
- data/vendor/repo.or.cz/nasm/stdlib/strnlen.c +46 -0
- data/vendor/repo.or.cz/nasm/stdlib/vsnprintf.c +51 -0
- data/vendor/repo.or.cz/nasm/test/Makefile +106 -0
- data/vendor/repo.or.cz/nasm/test/_file_.asm +5 -0
- data/vendor/repo.or.cz/nasm/test/_version.asm +2 -0
- data/vendor/repo.or.cz/nasm/test/a32offs.asm +9 -0
- data/vendor/repo.or.cz/nasm/test/absolute.asm +40 -0
- data/vendor/repo.or.cz/nasm/test/addr64x.asm +18 -0
- data/vendor/repo.or.cz/nasm/test/align13.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/align13s.asm +20 -0
- data/vendor/repo.or.cz/nasm/test/alonesym-obj.asm +166 -0
- data/vendor/repo.or.cz/nasm/test/andbyte.asm +15 -0
- data/vendor/repo.or.cz/nasm/test/aoutso.asm +99 -0
- data/vendor/repo.or.cz/nasm/test/aouttest.asm +86 -0
- data/vendor/repo.or.cz/nasm/test/aouttest.c +36 -0
- data/vendor/repo.or.cz/nasm/test/avx.asm +46 -0
- data/vendor/repo.or.cz/nasm/test/avx005.asm +529 -0
- data/vendor/repo.or.cz/nasm/test/avx2.asm +1608 -0
- data/vendor/repo.or.cz/nasm/test/avx512cd.asm +106 -0
- data/vendor/repo.or.cz/nasm/test/avx512er.asm +144 -0
- data/vendor/repo.or.cz/nasm/test/avx512f.asm +7000 -0
- data/vendor/repo.or.cz/nasm/test/avx512pf.asm +88 -0
- data/vendor/repo.or.cz/nasm/test/bcd.asm +23 -0
- data/vendor/repo.or.cz/nasm/test/binexe.asm +35 -0
- data/vendor/repo.or.cz/nasm/test/bintest.asm +59 -0
- data/vendor/repo.or.cz/nasm/test/bisect.sh +22 -0
- data/vendor/repo.or.cz/nasm/test/br1879590.asm +25 -0
- data/vendor/repo.or.cz/nasm/test/br2003451.asm +17 -0
- data/vendor/repo.or.cz/nasm/test/br2030823.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/br2148476.asm +221 -0
- data/vendor/repo.or.cz/nasm/test/br2222615.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/br2496848.asm +42 -0
- data/vendor/repo.or.cz/nasm/test/br3005117.asm +26 -0
- data/vendor/repo.or.cz/nasm/test/br3026808.asm +20 -0
- data/vendor/repo.or.cz/nasm/test/br3028880.asm +8 -0
- data/vendor/repo.or.cz/nasm/test/br3041451.asm +59 -0
- data/vendor/repo.or.cz/nasm/test/br3058845.asm +14 -0
- data/vendor/repo.or.cz/nasm/test/br3066383.asm +70 -0
- data/vendor/repo.or.cz/nasm/test/br3074517.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/br3092924.asm +25 -0
- data/vendor/repo.or.cz/nasm/test/br3104312.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/br3109604.asm +9 -0
- data/vendor/repo.or.cz/nasm/test/br3174983.asm +9 -0
- data/vendor/repo.or.cz/nasm/test/br3187743.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/br3189064.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/br3200749.asm +9 -0
- data/vendor/repo.or.cz/nasm/test/br3385573.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/br3392252.asm +43 -0
- data/vendor/repo.or.cz/nasm/test/br3392259.asm +8 -0
- data/vendor/repo.or.cz/nasm/test/br3392363.asm +4 -0
- data/vendor/repo.or.cz/nasm/test/br3392392.asm +16 -0
- data/vendor/repo.or.cz/nasm/test/br3392396.asm +5 -0
- data/vendor/repo.or.cz/nasm/test/br3392411.asm +22 -0
- data/vendor/repo.or.cz/nasm/test/br3392418.asm +3 -0
- data/vendor/repo.or.cz/nasm/test/br3392439.asm +25 -0
- data/vendor/repo.or.cz/nasm/test/br3392442.asm +6 -0
- data/vendor/repo.or.cz/nasm/test/br560575.asm +17 -0
- data/vendor/repo.or.cz/nasm/test/br560873.asm +27 -0
- data/vendor/repo.or.cz/nasm/test/br890790.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/br890790_i.asm +1 -0
- data/vendor/repo.or.cz/nasm/test/br978756.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/changed.asm +383 -0
- data/vendor/repo.or.cz/nasm/test/cofftest.asm +85 -0
- data/vendor/repo.or.cz/nasm/test/cofftest.c +35 -0
- data/vendor/repo.or.cz/nasm/test/crc32.asm +37 -0
- data/vendor/repo.or.cz/nasm/test/cv8struc.asm +14 -0
- data/vendor/repo.or.cz/nasm/test/dtbcd.asm +72 -0
- data/vendor/repo.or.cz/nasm/test/elf64so.asm +118 -0
- data/vendor/repo.or.cz/nasm/test/elfso.asm +100 -0
- data/vendor/repo.or.cz/nasm/test/elftest.asm +87 -0
- data/vendor/repo.or.cz/nasm/test/elftest.c +38 -0
- data/vendor/repo.or.cz/nasm/test/elftest64.c +43 -0
- data/vendor/repo.or.cz/nasm/test/elif.asm +39 -0
- data/vendor/repo.or.cz/nasm/test/expimp.asm +90 -0
- data/vendor/repo.or.cz/nasm/test/far64.asm +10 -0
- data/vendor/repo.or.cz/nasm/test/float.asm +186 -0
- data/vendor/repo.or.cz/nasm/test/float8.asm +135 -0
- data/vendor/repo.or.cz/nasm/test/floatb.asm +35 -0
- data/vendor/repo.or.cz/nasm/test/floatexp.asm +382 -0
- data/vendor/repo.or.cz/nasm/test/floatize.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/floattest.asm +28 -0
- data/vendor/repo.or.cz/nasm/test/floatx.asm +525 -0
- data/vendor/repo.or.cz/nasm/test/fpu.asm +127 -0
- data/vendor/repo.or.cz/nasm/test/fwdopt.asm +133 -0
- data/vendor/repo.or.cz/nasm/test/fwdoptpp.asm +150 -0
- data/vendor/repo.or.cz/nasm/test/gas2nasm.py +104 -0
- data/vendor/repo.or.cz/nasm/test/gather.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/gotoff64.asm +25 -0
- data/vendor/repo.or.cz/nasm/test/hexfp.asm +25 -0
- data/vendor/repo.or.cz/nasm/test/hle.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/ifelse.asm +46 -0
- data/vendor/repo.or.cz/nasm/test/ifenv.asm +31 -0
- data/vendor/repo.or.cz/nasm/test/ifmacro.asm +413 -0
- data/vendor/repo.or.cz/nasm/test/iftoken.asm +317 -0
- data/vendor/repo.or.cz/nasm/test/iftoken.pl +32 -0
- data/vendor/repo.or.cz/nasm/test/ilog2.asm +271 -0
- data/vendor/repo.or.cz/nasm/test/imacro.asm +8 -0
- data/vendor/repo.or.cz/nasm/test/imm.asm +23 -0
- data/vendor/repo.or.cz/nasm/test/imm64.asm +61 -0
- data/vendor/repo.or.cz/nasm/test/immwarn.asm +91 -0
- data/vendor/repo.or.cz/nasm/test/imul.asm +117 -0
- data/vendor/repo.or.cz/nasm/test/inc1.asm +6 -0
- data/vendor/repo.or.cz/nasm/test/inc2.asm +8 -0
- data/vendor/repo.or.cz/nasm/test/incbin.asm +7 -0
- data/vendor/repo.or.cz/nasm/test/incbin.data +2 -0
- data/vendor/repo.or.cz/nasm/test/inctest.asm +15 -0
- data/vendor/repo.or.cz/nasm/test/insnlbl.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/invlpga.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/jmp64.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/lar_lsl.asm +124 -0
- data/vendor/repo.or.cz/nasm/test/larlsl.asm +23 -0
- data/vendor/repo.or.cz/nasm/test/lnxhello.asm +54 -0
- data/vendor/repo.or.cz/nasm/test/local.asm +19 -0
- data/vendor/repo.or.cz/nasm/test/loopoffs.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/lwp.asm +213 -0
- data/vendor/repo.or.cz/nasm/test/macro-defaults.asm +64 -0
- data/vendor/repo.or.cz/nasm/test/macroerr.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/macroerr.inc +3 -0
- data/vendor/repo.or.cz/nasm/test/mmxsize.asm +38 -0
- data/vendor/repo.or.cz/nasm/test/movd.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/movd64.asm +15 -0
- data/vendor/repo.or.cz/nasm/test/movimm.asm +28 -0
- data/vendor/repo.or.cz/nasm/test/movnti.asm +10 -0
- data/vendor/repo.or.cz/nasm/test/mpx-64.asm +120 -0
- data/vendor/repo.or.cz/nasm/test/mpx.asm +89 -0
- data/vendor/repo.or.cz/nasm/test/multisection.asm +96 -0
- data/vendor/repo.or.cz/nasm/test/nasmformat.asm +17 -0
- data/vendor/repo.or.cz/nasm/test/new +9 -0
- data/vendor/repo.or.cz/nasm/test/newrdwr.asm +24 -0
- data/vendor/repo.or.cz/nasm/test/nop.asm +17 -0
- data/vendor/repo.or.cz/nasm/test/nullfile.asm +4 -0
- data/vendor/repo.or.cz/nasm/test/objexe.asm +30 -0
- data/vendor/repo.or.cz/nasm/test/objlink.c +33 -0
- data/vendor/repo.or.cz/nasm/test/objtest.asm +85 -0
- data/vendor/repo.or.cz/nasm/test/optimization.asm +104 -0
- data/vendor/repo.or.cz/nasm/test/org.asm +18 -0
- data/vendor/repo.or.cz/nasm/test/paste.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/pcrel.asm +52 -0
- data/vendor/repo.or.cz/nasm/test/perf/label.pl +18 -0
- data/vendor/repo.or.cz/nasm/test/perf/macro.pl +18 -0
- data/vendor/repo.or.cz/nasm/test/perf/token.pl +23 -0
- data/vendor/repo.or.cz/nasm/test/performtest.pl +192 -0
- data/vendor/repo.or.cz/nasm/test/pextrw.asm +3 -0
- data/vendor/repo.or.cz/nasm/test/pinsr16.asm +53 -0
- data/vendor/repo.or.cz/nasm/test/pinsr32.asm +53 -0
- data/vendor/repo.or.cz/nasm/test/pinsr64.asm +68 -0
- data/vendor/repo.or.cz/nasm/test/popcnt.asm +32 -0
- data/vendor/repo.or.cz/nasm/test/ppindirect.asm +42 -0
- data/vendor/repo.or.cz/nasm/test/pragma.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/prefix66.asm +28 -0
- data/vendor/repo.or.cz/nasm/test/ptr.asm +4 -0
- data/vendor/repo.or.cz/nasm/test/pushseg.asm +17 -0
- data/vendor/repo.or.cz/nasm/test/r13.asm +15 -0
- data/vendor/repo.or.cz/nasm/test/radix.asm +54 -0
- data/vendor/repo.or.cz/nasm/test/rdpid.asm +21 -0
- data/vendor/repo.or.cz/nasm/test/reldef.asm +57 -0
- data/vendor/repo.or.cz/nasm/test/relocs.asm +20 -0
- data/vendor/repo.or.cz/nasm/test/riprel.asm +5357 -0
- data/vendor/repo.or.cz/nasm/test/riprel.pl +29 -0
- data/vendor/repo.or.cz/nasm/test/riprel2.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/sha-64.asm +30 -0
- data/vendor/repo.or.cz/nasm/test/sha.asm +31 -0
- data/vendor/repo.or.cz/nasm/test/smartalign16.asm +36 -0
- data/vendor/repo.or.cz/nasm/test/smartalign32.asm +36 -0
- data/vendor/repo.or.cz/nasm/test/smartalign64.asm +36 -0
- data/vendor/repo.or.cz/nasm/test/splitea.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/sreg.asm +65 -0
- data/vendor/repo.or.cz/nasm/test/strlen.asm +5 -0
- data/vendor/repo.or.cz/nasm/test/struc.asm +33 -0
- data/vendor/repo.or.cz/nasm/test/test67.asm +38 -0
- data/vendor/repo.or.cz/nasm/test/testdos.asm +13 -0
- data/vendor/repo.or.cz/nasm/test/testnos3.asm +973 -0
- data/vendor/repo.or.cz/nasm/test/time.asm +11 -0
- data/vendor/repo.or.cz/nasm/test/times.asm +21 -0
- data/vendor/repo.or.cz/nasm/test/timesneg.asm +3 -0
- data/vendor/repo.or.cz/nasm/test/tmap.nas +1447 -0
- data/vendor/repo.or.cz/nasm/test/uscore.asm +15 -0
- data/vendor/repo.or.cz/nasm/test/utf.asm +82 -0
- data/vendor/repo.or.cz/nasm/test/vaesenc.asm +22 -0
- data/vendor/repo.or.cz/nasm/test/vex.asm +9 -0
- data/vendor/repo.or.cz/nasm/test/vgather.asm +76 -0
- data/vendor/repo.or.cz/nasm/test/vmread.asm +26 -0
- data/vendor/repo.or.cz/nasm/test/weirdpaste.asm +29 -0
- data/vendor/repo.or.cz/nasm/test/xchg.asm +96 -0
- data/vendor/repo.or.cz/nasm/test/xcrypt.asm +24 -0
- data/vendor/repo.or.cz/nasm/test/xmm0.asm +12 -0
- data/vendor/repo.or.cz/nasm/test/zerobyte.asm +22 -0
- data/vendor/repo.or.cz/nasm/tools/cleanfile +176 -0
- data/vendor/repo.or.cz/nasm/tools/cleanpatch +258 -0
- data/vendor/repo.or.cz/nasm/tools/mkdep.pl +261 -0
- data/vendor/repo.or.cz/nasm/tools/release +105 -0
- data/vendor/repo.or.cz/nasm/tools/syncfiles.pl +137 -0
- data/vendor/repo.or.cz/nasm/tools/tag-release +58 -0
- data/vendor/repo.or.cz/nasm/version +1 -0
- data/vendor/repo.or.cz/nasm/version.pl +189 -0
- data/vendor/repo.or.cz/nasm/x86/disp8.c +131 -0
- data/vendor/repo.or.cz/nasm/x86/insns-iflags.ph +280 -0
- data/vendor/repo.or.cz/nasm/x86/insns.dat +5371 -0
- data/vendor/repo.or.cz/nasm/x86/insns.pl +1043 -0
- data/vendor/repo.or.cz/nasm/x86/regs.dat +138 -0
- data/vendor/repo.or.cz/nasm/x86/regs.pl +204 -0
- metadata +520 -0
@@ -0,0 +1,144 @@
|
|
1
|
+
/* ----------------------------------------------------------------------- *
|
2
|
+
*
|
3
|
+
* Copyright 1996-2010 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
|
+
#ifndef STABS_H_
|
35
|
+
#define STABS_H_
|
36
|
+
|
37
|
+
#include <ctype.h>
|
38
|
+
|
39
|
+
#include "compiler.h"
|
40
|
+
#include "nasmlib.h"
|
41
|
+
#include "nasm.h"
|
42
|
+
|
43
|
+
/* offsets */
|
44
|
+
enum stab_offsets {
|
45
|
+
STAB_strdxoff = 0,
|
46
|
+
STAB_typeoff = 4,
|
47
|
+
STAB_otheroff = 5,
|
48
|
+
STAB_descoff = 6,
|
49
|
+
STAB_valoff = 8,
|
50
|
+
STAB_stabsize = 12
|
51
|
+
};
|
52
|
+
|
53
|
+
/* stab/non-stab types */
|
54
|
+
enum stab_types {
|
55
|
+
N_UNDF = 0x00,
|
56
|
+
N_ABS = 0x02,
|
57
|
+
N_ABS_EXT = 0x03,
|
58
|
+
N_TEXT = 0x04,
|
59
|
+
N_TEXT_EXT = 0x05,
|
60
|
+
N_DATA = 0x06,
|
61
|
+
N_DATA_EXT = 0x07,
|
62
|
+
N_BSS = 0x08,
|
63
|
+
N_BSS_EXT = 0x09,
|
64
|
+
N_FN_SEQ = 0x0c,
|
65
|
+
N_INDR = 0x0a,
|
66
|
+
N_COMM = 0x12,
|
67
|
+
N_SETA = 0x14,
|
68
|
+
N_SETA_EXT = 0x15,
|
69
|
+
N_SETT = 0x16,
|
70
|
+
N_SETT_EXT = 0x17,
|
71
|
+
N_SETD = 0x18,
|
72
|
+
N_SETD_EXT = 0x19,
|
73
|
+
N_SETB = 0x1a,
|
74
|
+
N_SETB_EXT = 0x1b,
|
75
|
+
N_SETV = 0x1c,
|
76
|
+
N_SETV_EXT = 0x1d,
|
77
|
+
N_WARNING = 0x1e,
|
78
|
+
N_FN = 0x1f,
|
79
|
+
N_GSYM = 0x20,
|
80
|
+
N_FNAME = 0x22,
|
81
|
+
N_FUN = 0x24,
|
82
|
+
N_STSYM = 0x26,
|
83
|
+
N_LCSYM = 0x28,
|
84
|
+
N_MAIN = 0x2a,
|
85
|
+
N_ROSYM = 0x2c,
|
86
|
+
N_BNSYM = 0x2e,
|
87
|
+
N_PC = 0x30,
|
88
|
+
N_NSYMS = 0x32,
|
89
|
+
N_NOMAP = 0x34,
|
90
|
+
N_OBJ = 0x38,
|
91
|
+
N_OPT = 0x3c,
|
92
|
+
N_RSYM = 0x40,
|
93
|
+
N_M2C = 0x42,
|
94
|
+
N_SLINE = 0x44,
|
95
|
+
N_DSLINE = 0x46,
|
96
|
+
N_BSLINE = 0x48,
|
97
|
+
N_BROWS = 0x48,
|
98
|
+
N_DEFD = 0x4a,
|
99
|
+
N_FLINE = 0x4c,
|
100
|
+
N_ENSYM = 0x4e,
|
101
|
+
N_EHDECL = 0x50,
|
102
|
+
N_MOD2 = 0x50,
|
103
|
+
N_CATCH = 0x54,
|
104
|
+
N_SSYM = 0x60,
|
105
|
+
N_ENDM = 0x62,
|
106
|
+
N_SO = 0x64, /* ID for main source file */
|
107
|
+
N_OSO = 0x66,
|
108
|
+
N_ALIAS = 0x6c,
|
109
|
+
N_LSYM = 0x80,
|
110
|
+
N_BINCL = 0x82,
|
111
|
+
N_SOL = 0x84, /* ID for sub-source file */
|
112
|
+
N_PSYM = 0xa0,
|
113
|
+
N_EINCL = 0xa2,
|
114
|
+
N_ENTRY = 0xa4,
|
115
|
+
N_LBRAC = 0xc0,
|
116
|
+
N_EXCL = 0xc2,
|
117
|
+
N_SCOPE = 0xc4,
|
118
|
+
N_PATCH = 0xd0,
|
119
|
+
N_RBRAC = 0xe0,
|
120
|
+
N_BCOMM = 0xe2,
|
121
|
+
N_ECOMM = 0xe4,
|
122
|
+
N_ECOML = 0xe8,
|
123
|
+
N_WITH = 0xea,
|
124
|
+
N_NBTEXT = 0xf0,
|
125
|
+
N_NBDATA = 0xf2,
|
126
|
+
N_NBBSS = 0xf4,
|
127
|
+
N_NBSTS = 0xf6,
|
128
|
+
N_NBLCS = 0xf8,
|
129
|
+
N_LENG = 0xfe
|
130
|
+
};
|
131
|
+
|
132
|
+
enum stab_source_file {
|
133
|
+
N_SO_AS = 0x01,
|
134
|
+
N_SO_C = 0x02,
|
135
|
+
N_SO_ANSI_C = 0x03,
|
136
|
+
N_SO_CC = 0x04,
|
137
|
+
N_SO_FORTRAN = 0x05,
|
138
|
+
N_SO_PASCAL = 0x06,
|
139
|
+
N_SO_FORTRAN90 = 0x07,
|
140
|
+
N_SO_OBJC = 0x32,
|
141
|
+
N_SO_OBJCPLUS = 0x33
|
142
|
+
};
|
143
|
+
|
144
|
+
#endif /* STABS_H_ */
|
@@ -0,0 +1,158 @@
|
|
1
|
+
# -*- perl -*-
|
2
|
+
#
|
3
|
+
# Pure Perl implementation of the same CRC64 implementation used
|
4
|
+
# elsewhere in NASM.
|
5
|
+
#
|
6
|
+
# Note: Perl may have 32- or 64-bit integers; we need to handle both
|
7
|
+
# without overflowing into floating point (yuck), so handle them as
|
8
|
+
# pairs of 32-bit numbers. Ordering is BIGENDIAN.
|
9
|
+
#
|
10
|
+
|
11
|
+
@crc64_tab = (
|
12
|
+
[0x00000000, 0x00000000], [0x7ad870c8, 0x30358979],
|
13
|
+
[0xf5b0e190, 0x606b12f2], [0x8f689158, 0x505e9b8b],
|
14
|
+
[0xc038e573, 0x9841b68f], [0xbae095bb, 0xa8743ff6],
|
15
|
+
[0x358804e3, 0xf82aa47d], [0x4f50742b, 0xc81f2d04],
|
16
|
+
[0xab28ecb4, 0x6814fe75], [0xd1f09c7c, 0x5821770c],
|
17
|
+
[0x5e980d24, 0x087fec87], [0x24407dec, 0x384a65fe],
|
18
|
+
[0x6b1009c7, 0xf05548fa], [0x11c8790f, 0xc060c183],
|
19
|
+
[0x9ea0e857, 0x903e5a08], [0xe478989f, 0xa00bd371],
|
20
|
+
[0x7d08ff3b, 0x88be6f81], [0x07d08ff3, 0xb88be6f8],
|
21
|
+
[0x88b81eab, 0xe8d57d73], [0xf2606e63, 0xd8e0f40a],
|
22
|
+
[0xbd301a48, 0x10ffd90e], [0xc7e86a80, 0x20ca5077],
|
23
|
+
[0x4880fbd8, 0x7094cbfc], [0x32588b10, 0x40a14285],
|
24
|
+
[0xd620138f, 0xe0aa91f4], [0xacf86347, 0xd09f188d],
|
25
|
+
[0x2390f21f, 0x80c18306], [0x594882d7, 0xb0f40a7f],
|
26
|
+
[0x1618f6fc, 0x78eb277b], [0x6cc08634, 0x48deae02],
|
27
|
+
[0xe3a8176c, 0x18803589], [0x997067a4, 0x28b5bcf0],
|
28
|
+
[0xfa11fe77, 0x117cdf02], [0x80c98ebf, 0x2149567b],
|
29
|
+
[0x0fa11fe7, 0x7117cdf0], [0x75796f2f, 0x41224489],
|
30
|
+
[0x3a291b04, 0x893d698d], [0x40f16bcc, 0xb908e0f4],
|
31
|
+
[0xcf99fa94, 0xe9567b7f], [0xb5418a5c, 0xd963f206],
|
32
|
+
[0x513912c3, 0x79682177], [0x2be1620b, 0x495da80e],
|
33
|
+
[0xa489f353, 0x19033385], [0xde51839b, 0x2936bafc],
|
34
|
+
[0x9101f7b0, 0xe12997f8], [0xebd98778, 0xd11c1e81],
|
35
|
+
[0x64b11620, 0x8142850a], [0x1e6966e8, 0xb1770c73],
|
36
|
+
[0x8719014c, 0x99c2b083], [0xfdc17184, 0xa9f739fa],
|
37
|
+
[0x72a9e0dc, 0xf9a9a271], [0x08719014, 0xc99c2b08],
|
38
|
+
[0x4721e43f, 0x0183060c], [0x3df994f7, 0x31b68f75],
|
39
|
+
[0xb29105af, 0x61e814fe], [0xc8497567, 0x51dd9d87],
|
40
|
+
[0x2c31edf8, 0xf1d64ef6], [0x56e99d30, 0xc1e3c78f],
|
41
|
+
[0xd9810c68, 0x91bd5c04], [0xa3597ca0, 0xa188d57d],
|
42
|
+
[0xec09088b, 0x6997f879], [0x96d17843, 0x59a27100],
|
43
|
+
[0x19b9e91b, 0x09fcea8b], [0x636199d3, 0x39c963f2],
|
44
|
+
[0xdf7adabd, 0x7a6e2d6f], [0xa5a2aa75, 0x4a5ba416],
|
45
|
+
[0x2aca3b2d, 0x1a053f9d], [0x50124be5, 0x2a30b6e4],
|
46
|
+
[0x1f423fce, 0xe22f9be0], [0x659a4f06, 0xd21a1299],
|
47
|
+
[0xeaf2de5e, 0x82448912], [0x902aae96, 0xb271006b],
|
48
|
+
[0x74523609, 0x127ad31a], [0x0e8a46c1, 0x224f5a63],
|
49
|
+
[0x81e2d799, 0x7211c1e8], [0xfb3aa751, 0x42244891],
|
50
|
+
[0xb46ad37a, 0x8a3b6595], [0xceb2a3b2, 0xba0eecec],
|
51
|
+
[0x41da32ea, 0xea507767], [0x3b024222, 0xda65fe1e],
|
52
|
+
[0xa2722586, 0xf2d042ee], [0xd8aa554e, 0xc2e5cb97],
|
53
|
+
[0x57c2c416, 0x92bb501c], [0x2d1ab4de, 0xa28ed965],
|
54
|
+
[0x624ac0f5, 0x6a91f461], [0x1892b03d, 0x5aa47d18],
|
55
|
+
[0x97fa2165, 0x0afae693], [0xed2251ad, 0x3acf6fea],
|
56
|
+
[0x095ac932, 0x9ac4bc9b], [0x7382b9fa, 0xaaf135e2],
|
57
|
+
[0xfcea28a2, 0xfaafae69], [0x8632586a, 0xca9a2710],
|
58
|
+
[0xc9622c41, 0x02850a14], [0xb3ba5c89, 0x32b0836d],
|
59
|
+
[0x3cd2cdd1, 0x62ee18e6], [0x460abd19, 0x52db919f],
|
60
|
+
[0x256b24ca, 0x6b12f26d], [0x5fb35402, 0x5b277b14],
|
61
|
+
[0xd0dbc55a, 0x0b79e09f], [0xaa03b592, 0x3b4c69e6],
|
62
|
+
[0xe553c1b9, 0xf35344e2], [0x9f8bb171, 0xc366cd9b],
|
63
|
+
[0x10e32029, 0x93385610], [0x6a3b50e1, 0xa30ddf69],
|
64
|
+
[0x8e43c87e, 0x03060c18], [0xf49bb8b6, 0x33338561],
|
65
|
+
[0x7bf329ee, 0x636d1eea], [0x012b5926, 0x53589793],
|
66
|
+
[0x4e7b2d0d, 0x9b47ba97], [0x34a35dc5, 0xab7233ee],
|
67
|
+
[0xbbcbcc9d, 0xfb2ca865], [0xc113bc55, 0xcb19211c],
|
68
|
+
[0x5863dbf1, 0xe3ac9dec], [0x22bbab39, 0xd3991495],
|
69
|
+
[0xadd33a61, 0x83c78f1e], [0xd70b4aa9, 0xb3f20667],
|
70
|
+
[0x985b3e82, 0x7bed2b63], [0xe2834e4a, 0x4bd8a21a],
|
71
|
+
[0x6debdf12, 0x1b863991], [0x1733afda, 0x2bb3b0e8],
|
72
|
+
[0xf34b3745, 0x8bb86399], [0x8993478d, 0xbb8deae0],
|
73
|
+
[0x06fbd6d5, 0xebd3716b], [0x7c23a61d, 0xdbe6f812],
|
74
|
+
[0x3373d236, 0x13f9d516], [0x49aba2fe, 0x23cc5c6f],
|
75
|
+
[0xc6c333a6, 0x7392c7e4], [0xbc1b436e, 0x43a74e9d],
|
76
|
+
[0x95ac9329, 0xac4bc9b5], [0xef74e3e1, 0x9c7e40cc],
|
77
|
+
[0x601c72b9, 0xcc20db47], [0x1ac40271, 0xfc15523e],
|
78
|
+
[0x5594765a, 0x340a7f3a], [0x2f4c0692, 0x043ff643],
|
79
|
+
[0xa02497ca, 0x54616dc8], [0xdafce702, 0x6454e4b1],
|
80
|
+
[0x3e847f9d, 0xc45f37c0], [0x445c0f55, 0xf46abeb9],
|
81
|
+
[0xcb349e0d, 0xa4342532], [0xb1eceec5, 0x9401ac4b],
|
82
|
+
[0xfebc9aee, 0x5c1e814f], [0x8464ea26, 0x6c2b0836],
|
83
|
+
[0x0b0c7b7e, 0x3c7593bd], [0x71d40bb6, 0x0c401ac4],
|
84
|
+
[0xe8a46c12, 0x24f5a634], [0x927c1cda, 0x14c02f4d],
|
85
|
+
[0x1d148d82, 0x449eb4c6], [0x67ccfd4a, 0x74ab3dbf],
|
86
|
+
[0x289c8961, 0xbcb410bb], [0x5244f9a9, 0x8c8199c2],
|
87
|
+
[0xdd2c68f1, 0xdcdf0249], [0xa7f41839, 0xecea8b30],
|
88
|
+
[0x438c80a6, 0x4ce15841], [0x3954f06e, 0x7cd4d138],
|
89
|
+
[0xb63c6136, 0x2c8a4ab3], [0xcce411fe, 0x1cbfc3ca],
|
90
|
+
[0x83b465d5, 0xd4a0eece], [0xf96c151d, 0xe49567b7],
|
91
|
+
[0x76048445, 0xb4cbfc3c], [0x0cdcf48d, 0x84fe7545],
|
92
|
+
[0x6fbd6d5e, 0xbd3716b7], [0x15651d96, 0x8d029fce],
|
93
|
+
[0x9a0d8cce, 0xdd5c0445], [0xe0d5fc06, 0xed698d3c],
|
94
|
+
[0xaf85882d, 0x2576a038], [0xd55df8e5, 0x15432941],
|
95
|
+
[0x5a3569bd, 0x451db2ca], [0x20ed1975, 0x75283bb3],
|
96
|
+
[0xc49581ea, 0xd523e8c2], [0xbe4df122, 0xe51661bb],
|
97
|
+
[0x3125607a, 0xb548fa30], [0x4bfd10b2, 0x857d7349],
|
98
|
+
[0x04ad6499, 0x4d625e4d], [0x7e751451, 0x7d57d734],
|
99
|
+
[0xf11d8509, 0x2d094cbf], [0x8bc5f5c1, 0x1d3cc5c6],
|
100
|
+
[0x12b59265, 0x35897936], [0x686de2ad, 0x05bcf04f],
|
101
|
+
[0xe70573f5, 0x55e26bc4], [0x9ddd033d, 0x65d7e2bd],
|
102
|
+
[0xd28d7716, 0xadc8cfb9], [0xa85507de, 0x9dfd46c0],
|
103
|
+
[0x273d9686, 0xcda3dd4b], [0x5de5e64e, 0xfd965432],
|
104
|
+
[0xb99d7ed1, 0x5d9d8743], [0xc3450e19, 0x6da80e3a],
|
105
|
+
[0x4c2d9f41, 0x3df695b1], [0x36f5ef89, 0x0dc31cc8],
|
106
|
+
[0x79a59ba2, 0xc5dc31cc], [0x037deb6a, 0xf5e9b8b5],
|
107
|
+
[0x8c157a32, 0xa5b7233e], [0xf6cd0afa, 0x9582aa47],
|
108
|
+
[0x4ad64994, 0xd625e4da], [0x300e395c, 0xe6106da3],
|
109
|
+
[0xbf66a804, 0xb64ef628], [0xc5bed8cc, 0x867b7f51],
|
110
|
+
[0x8aeeace7, 0x4e645255], [0xf036dc2f, 0x7e51db2c],
|
111
|
+
[0x7f5e4d77, 0x2e0f40a7], [0x05863dbf, 0x1e3ac9de],
|
112
|
+
[0xe1fea520, 0xbe311aaf], [0x9b26d5e8, 0x8e0493d6],
|
113
|
+
[0x144e44b0, 0xde5a085d], [0x6e963478, 0xee6f8124],
|
114
|
+
[0x21c64053, 0x2670ac20], [0x5b1e309b, 0x16452559],
|
115
|
+
[0xd476a1c3, 0x461bbed2], [0xaeaed10b, 0x762e37ab],
|
116
|
+
[0x37deb6af, 0x5e9b8b5b], [0x4d06c667, 0x6eae0222],
|
117
|
+
[0xc26e573f, 0x3ef099a9], [0xb8b627f7, 0x0ec510d0],
|
118
|
+
[0xf7e653dc, 0xc6da3dd4], [0x8d3e2314, 0xf6efb4ad],
|
119
|
+
[0x0256b24c, 0xa6b12f26], [0x788ec284, 0x9684a65f],
|
120
|
+
[0x9cf65a1b, 0x368f752e], [0xe62e2ad3, 0x06bafc57],
|
121
|
+
[0x6946bb8b, 0x56e467dc], [0x139ecb43, 0x66d1eea5],
|
122
|
+
[0x5ccebf68, 0xaecec3a1], [0x2616cfa0, 0x9efb4ad8],
|
123
|
+
[0xa97e5ef8, 0xcea5d153], [0xd3a62e30, 0xfe90582a],
|
124
|
+
[0xb0c7b7e3, 0xc7593bd8], [0xca1fc72b, 0xf76cb2a1],
|
125
|
+
[0x45775673, 0xa732292a], [0x3faf26bb, 0x9707a053],
|
126
|
+
[0x70ff5290, 0x5f188d57], [0x0a272258, 0x6f2d042e],
|
127
|
+
[0x854fb300, 0x3f739fa5], [0xff97c3c8, 0x0f4616dc],
|
128
|
+
[0x1bef5b57, 0xaf4dc5ad], [0x61372b9f, 0x9f784cd4],
|
129
|
+
[0xee5fbac7, 0xcf26d75f], [0x9487ca0f, 0xff135e26],
|
130
|
+
[0xdbd7be24, 0x370c7322], [0xa10fceec, 0x0739fa5b],
|
131
|
+
[0x2e675fb4, 0x576761d0], [0x54bf2f7c, 0x6752e8a9],
|
132
|
+
[0xcdcf48d8, 0x4fe75459], [0xb7173810, 0x7fd2dd20],
|
133
|
+
[0x387fa948, 0x2f8c46ab], [0x42a7d980, 0x1fb9cfd2],
|
134
|
+
[0x0df7adab, 0xd7a6e2d6], [0x772fdd63, 0xe7936baf],
|
135
|
+
[0xf8474c3b, 0xb7cdf024], [0x829f3cf3, 0x87f8795d],
|
136
|
+
[0x66e7a46c, 0x27f3aa2c], [0x1c3fd4a4, 0x17c62355],
|
137
|
+
[0x935745fc, 0x4798b8de], [0xe98f3534, 0x77ad31a7],
|
138
|
+
[0xa6df411f, 0xbfb21ca3], [0xdc0731d7, 0x8f8795da],
|
139
|
+
[0x536fa08f, 0xdfd90e51], [0x29b7d047, 0xefec8728]
|
140
|
+
);
|
141
|
+
|
142
|
+
sub crc64($$) {
|
143
|
+
my ($cv, $str) = @_;
|
144
|
+
my $c;
|
145
|
+
my @cc = @$cv;
|
146
|
+
$cc[0] %= 4294967296;
|
147
|
+
$cc[1] %= 4294967296;
|
148
|
+
|
149
|
+
foreach $c (unpack("C*", $str)) {
|
150
|
+
my @ct = @{$crc64_tab[($cc[1] & 0xff) ^ $c]};
|
151
|
+
|
152
|
+
$cc[1] = $ct[1] ^
|
153
|
+
((($cc[1] & 0xffffff00) >> 8) | (($cc[0] & 0xff) << 24));
|
154
|
+
$cc[0] = $ct[0] ^ (($cc[0] & 0xffffff00) >> 8);
|
155
|
+
}
|
156
|
+
|
157
|
+
return @cc;
|
158
|
+
}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#!/usr/bin/perl
|
2
|
+
#
|
3
|
+
# Generate a list of rotation vectors so we always use the same set.
|
4
|
+
# This needs to be run on a platform with /dev/urandom.
|
5
|
+
#
|
6
|
+
|
7
|
+
($n) = @ARGV;
|
8
|
+
|
9
|
+
sysopen(UR, '/dev/urandom', O_RDONLY) or die;
|
10
|
+
|
11
|
+
$maxlen = 78;
|
12
|
+
|
13
|
+
print "\@random_sv_vectors = (\n";
|
14
|
+
$outl = ' ';
|
15
|
+
|
16
|
+
for ($i = 0; $i < $n; $i++) {
|
17
|
+
|
18
|
+
die if (sysread(UR, $x8, 8) != 8);
|
19
|
+
@n = unpack("V*", $x8);
|
20
|
+
|
21
|
+
$xl = sprintf(" [0x%08x, 0x%08x]%s",
|
22
|
+
$n[0], $n[1],
|
23
|
+
($i == $n-1) ? '' : ',');
|
24
|
+
if (length($outl.$xl) > $maxlen) {
|
25
|
+
print $outl, "\n";
|
26
|
+
$outl = ' ';
|
27
|
+
}
|
28
|
+
$outl .= $xl;
|
29
|
+
}
|
30
|
+
close(UR);
|
31
|
+
|
32
|
+
print $outl, "\n";
|
33
|
+
print ");\n";
|
34
|
+
print "1;\n";
|
@@ -0,0 +1,200 @@
|
|
1
|
+
# -*- perl -*-
|
2
|
+
#
|
3
|
+
# Perfect Minimal Hash Generator written in Perl, which produces
|
4
|
+
# C output.
|
5
|
+
#
|
6
|
+
|
7
|
+
require 'random_sv_vectors.ph';
|
8
|
+
require 'crc64.ph';
|
9
|
+
|
10
|
+
#
|
11
|
+
# Compute the prehash for a key
|
12
|
+
#
|
13
|
+
# prehash(key, sv, N)
|
14
|
+
#
|
15
|
+
sub prehash($$$) {
|
16
|
+
my($key, $n, $sv) = @_;
|
17
|
+
my @c = crc64($sv, $key);
|
18
|
+
|
19
|
+
# Create a bipartite graph...
|
20
|
+
$k1 = (($c[1] & ($n-1)) << 1) + 0; # low word
|
21
|
+
$k2 = (($c[0] & ($n-1)) << 1) + 1; # high word
|
22
|
+
|
23
|
+
return ($k1, $k2);
|
24
|
+
}
|
25
|
+
|
26
|
+
#
|
27
|
+
# Walk the assignment graph, return true on success
|
28
|
+
#
|
29
|
+
sub walk_graph($$$$) {
|
30
|
+
my($nodeval,$nodeneigh,$n,$v) = @_;
|
31
|
+
my $nx;
|
32
|
+
|
33
|
+
# print STDERR "Vertex $n value $v\n";
|
34
|
+
$$nodeval[$n] = $v;
|
35
|
+
|
36
|
+
foreach $nx (@{$$nodeneigh[$n]}) {
|
37
|
+
# $nx -> [neigh, hash]
|
38
|
+
my ($o, $e) = @$nx;
|
39
|
+
|
40
|
+
# print STDERR "Edge $n,$o value $e: ";
|
41
|
+
my $ov;
|
42
|
+
if (defined($ov = $$nodeval[$o])) {
|
43
|
+
if ($v+$ov != $e) {
|
44
|
+
# Cyclic graph with collision
|
45
|
+
# print STDERR "error, should be ", $v+$ov, "\n";
|
46
|
+
return 0;
|
47
|
+
} else {
|
48
|
+
# print STDERR "ok\n";
|
49
|
+
}
|
50
|
+
} else {
|
51
|
+
return 0 unless (walk_graph($nodeval, $nodeneigh, $o, $e-$v));
|
52
|
+
}
|
53
|
+
}
|
54
|
+
return 1;
|
55
|
+
}
|
56
|
+
|
57
|
+
#
|
58
|
+
# Generate the function assuming a given N.
|
59
|
+
#
|
60
|
+
# gen_hash_n(N, sv, \%data, run)
|
61
|
+
#
|
62
|
+
sub gen_hash_n($$$$) {
|
63
|
+
my($n, $sv, $href, $run) = @_;
|
64
|
+
my @keys = keys(%{$href});
|
65
|
+
my $i, $sv;
|
66
|
+
my $gr;
|
67
|
+
my $k, $v;
|
68
|
+
my $gsize = 2*$n;
|
69
|
+
my @nodeval;
|
70
|
+
my @nodeneigh;
|
71
|
+
my %edges;
|
72
|
+
|
73
|
+
for ($i = 0; $i < $gsize; $i++) {
|
74
|
+
$nodeneigh[$i] = [];
|
75
|
+
}
|
76
|
+
|
77
|
+
%edges = ();
|
78
|
+
foreach $k (@keys) {
|
79
|
+
my ($pf1, $pf2) = prehash($k, $n, $sv);
|
80
|
+
($pf1,$pf2) = ($pf2,$pf1) if ($pf1 > $pf2); # Canonicalize order
|
81
|
+
|
82
|
+
my $pf = "$pf1,$pf2";
|
83
|
+
my $e = ${$href}{$k};
|
84
|
+
my $xkey;
|
85
|
+
|
86
|
+
if (defined($xkey = $edges{$pf})) {
|
87
|
+
next if ($e == ${$href}{$xkey}); # Duplicate hash, safe to ignore
|
88
|
+
if (defined($run)) {
|
89
|
+
print STDERR "$run: Collision: $pf: $k with $xkey\n";
|
90
|
+
}
|
91
|
+
return;
|
92
|
+
}
|
93
|
+
|
94
|
+
# print STDERR "Edge $pf value $e from $k\n";
|
95
|
+
|
96
|
+
$edges{$pf} = $k;
|
97
|
+
push(@{$nodeneigh[$pf1]}, [$pf2, $e]);
|
98
|
+
push(@{$nodeneigh[$pf2]}, [$pf1, $e]);
|
99
|
+
}
|
100
|
+
|
101
|
+
# Now we need to assign values to each vertex, so that for each
|
102
|
+
# edge, the sum of the values for the two vertices give the value
|
103
|
+
# for the edge (which is our hash index.) If we find an impossible
|
104
|
+
# sitation, the graph was cyclic.
|
105
|
+
@nodeval = (undef) x $gsize;
|
106
|
+
|
107
|
+
for ($i = 0; $i < $gsize; $i++) {
|
108
|
+
if (scalar(@{$nodeneigh[$i]})) {
|
109
|
+
# This vertex has neighbors (is used)
|
110
|
+
if (!defined($nodeval[$i])) {
|
111
|
+
# First vertex in a cluster
|
112
|
+
unless (walk_graph(\@nodeval, \@nodeneigh, $i, 0)) {
|
113
|
+
if (defined($run)) {
|
114
|
+
print STDERR "$run: Graph is cyclic\n";
|
115
|
+
}
|
116
|
+
return;
|
117
|
+
}
|
118
|
+
}
|
119
|
+
}
|
120
|
+
}
|
121
|
+
|
122
|
+
# for ($i = 0; $i < $n; $i++) {
|
123
|
+
# print STDERR "Vertex ", $i, ": ", $g[$i], "\n";
|
124
|
+
# }
|
125
|
+
|
126
|
+
if (defined($run)) {
|
127
|
+
printf STDERR "$run: Done: n = $n, sv = [0x%08x, 0x%08x]\n",
|
128
|
+
$$sv[0], $$sv[1];
|
129
|
+
}
|
130
|
+
|
131
|
+
return ($n, $sv, \@nodeval);
|
132
|
+
}
|
133
|
+
|
134
|
+
#
|
135
|
+
# Driver for generating the function
|
136
|
+
#
|
137
|
+
# gen_perfect_hash(\%data)
|
138
|
+
#
|
139
|
+
sub gen_perfect_hash($) {
|
140
|
+
my($href) = @_;
|
141
|
+
my @keys = keys(%{$href});
|
142
|
+
my @hashinfo;
|
143
|
+
my $n, $i, $j, $sv, $maxj;
|
144
|
+
my $run = 1;
|
145
|
+
|
146
|
+
# Minimal power of 2 value for N with enough wiggle room.
|
147
|
+
# The scaling constant must be larger than 0.5 in order for the
|
148
|
+
# algorithm to ever terminate.
|
149
|
+
my $room = int(scalar(@keys)*0.8);
|
150
|
+
$n = 1;
|
151
|
+
while ($n < $room) {
|
152
|
+
$n <<= 1;
|
153
|
+
}
|
154
|
+
|
155
|
+
# Number of times to try...
|
156
|
+
$maxj = scalar @random_sv_vectors;
|
157
|
+
|
158
|
+
for ($i = 0; $i < 4; $i++) {
|
159
|
+
printf STDERR "%d vectors, trying n = %d...\n",
|
160
|
+
scalar @keys, $n;
|
161
|
+
for ($j = 0; $j < $maxj; $j++) {
|
162
|
+
$sv = $random_sv_vectors[$j];
|
163
|
+
@hashinfo = gen_hash_n($n, $sv, $href, $run++);
|
164
|
+
return @hashinfo if (@hashinfo);
|
165
|
+
}
|
166
|
+
$n <<= 1;
|
167
|
+
}
|
168
|
+
|
169
|
+
return;
|
170
|
+
}
|
171
|
+
|
172
|
+
#
|
173
|
+
# Verify that the hash table is actually correct...
|
174
|
+
#
|
175
|
+
sub verify_hash_table($$)
|
176
|
+
{
|
177
|
+
my ($href, $hashinfo) = @_;
|
178
|
+
my ($n, $sv, $g) = @{$hashinfo};
|
179
|
+
my $k;
|
180
|
+
my $err = 0;
|
181
|
+
|
182
|
+
foreach $k (keys(%$href)) {
|
183
|
+
my ($pf1, $pf2) = prehash($k, $n, $sv);
|
184
|
+
my $g1 = ${$g}[$pf1];
|
185
|
+
my $g2 = ${$g}[$pf2];
|
186
|
+
|
187
|
+
if ($g1+$g2 != ${$href}{$k}) {
|
188
|
+
printf STDERR "%s(%d,%d): %d+%d = %d != %d\n",
|
189
|
+
$k, $pf1, $pf2, $g1, $g2, $g1+$g2, ${$href}{$k};
|
190
|
+
$err = 1;
|
191
|
+
} else {
|
192
|
+
# printf STDERR "%s: %d+%d = %d ok\n",
|
193
|
+
# $k, $g1, $g2, $g1+$g2;
|
194
|
+
}
|
195
|
+
}
|
196
|
+
|
197
|
+
die "$0: hash validation error\n" if ($err);
|
198
|
+
}
|
199
|
+
|
200
|
+
1;
|