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.
Files changed (455) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +57 -0
  3. data/LICENSE.txt +29 -0
  4. data/README.org +34 -0
  5. data/ext/laag/nasm/extconf.rb +16 -0
  6. data/laag-nasm.gemspec +20 -0
  7. data/lib/laag/nasm.rb +29 -0
  8. data/patches/Makefile.in.patch +13 -0
  9. data/vendor/repo.or.cz/nasm/.gitignore +102 -0
  10. data/vendor/repo.or.cz/nasm/AUTHORS +137 -0
  11. data/vendor/repo.or.cz/nasm/CHANGES +2 -0
  12. data/vendor/repo.or.cz/nasm/ChangeLog +2905 -0
  13. data/vendor/repo.or.cz/nasm/INSTALL +102 -0
  14. data/vendor/repo.or.cz/nasm/LICENSE +29 -0
  15. data/vendor/repo.or.cz/nasm/Makefile.in +855 -0
  16. data/vendor/repo.or.cz/nasm/Mkfiles/README +46 -0
  17. data/vendor/repo.or.cz/nasm/Mkfiles/msvc.mak +732 -0
  18. data/vendor/repo.or.cz/nasm/Mkfiles/openwcom.mak +706 -0
  19. data/vendor/repo.or.cz/nasm/README +23 -0
  20. data/vendor/repo.or.cz/nasm/SubmittingPatches +116 -0
  21. data/vendor/repo.or.cz/nasm/TODO +376 -0
  22. data/vendor/repo.or.cz/nasm/aclocal.m4 +139 -0
  23. data/vendor/repo.or.cz/nasm/asm/assemble.c +2957 -0
  24. data/vendor/repo.or.cz/nasm/asm/assemble.h +54 -0
  25. data/vendor/repo.or.cz/nasm/asm/directiv.c +566 -0
  26. data/vendor/repo.or.cz/nasm/asm/directiv.dat +92 -0
  27. data/vendor/repo.or.cz/nasm/asm/error.c +202 -0
  28. data/vendor/repo.or.cz/nasm/asm/eval.c +1014 -0
  29. data/vendor/repo.or.cz/nasm/asm/eval.h +49 -0
  30. data/vendor/repo.or.cz/nasm/asm/exprdump.c +79 -0
  31. data/vendor/repo.or.cz/nasm/asm/exprlib.c +200 -0
  32. data/vendor/repo.or.cz/nasm/asm/float.c +952 -0
  33. data/vendor/repo.or.cz/nasm/asm/float.h +54 -0
  34. data/vendor/repo.or.cz/nasm/asm/labels.c +540 -0
  35. data/vendor/repo.or.cz/nasm/asm/listing.c +346 -0
  36. data/vendor/repo.or.cz/nasm/asm/listing.h +113 -0
  37. data/vendor/repo.or.cz/nasm/asm/nasm.c +1855 -0
  38. data/vendor/repo.or.cz/nasm/asm/parser.c +1167 -0
  39. data/vendor/repo.or.cz/nasm/asm/parser.h +45 -0
  40. data/vendor/repo.or.cz/nasm/asm/phash.pl +109 -0
  41. data/vendor/repo.or.cz/nasm/asm/pptok.dat +96 -0
  42. data/vendor/repo.or.cz/nasm/asm/pptok.pl +271 -0
  43. data/vendor/repo.or.cz/nasm/asm/pragma.c +218 -0
  44. data/vendor/repo.or.cz/nasm/asm/preproc-nop.c +188 -0
  45. data/vendor/repo.or.cz/nasm/asm/preproc.c +5459 -0
  46. data/vendor/repo.or.cz/nasm/asm/preproc.h +55 -0
  47. data/vendor/repo.or.cz/nasm/asm/quote.c +479 -0
  48. data/vendor/repo.or.cz/nasm/asm/quote.h +44 -0
  49. data/vendor/repo.or.cz/nasm/asm/rdstrnum.c +68 -0
  50. data/vendor/repo.or.cz/nasm/asm/segalloc.c +51 -0
  51. data/vendor/repo.or.cz/nasm/asm/stdscan.c +345 -0
  52. data/vendor/repo.or.cz/nasm/asm/stdscan.h +49 -0
  53. data/vendor/repo.or.cz/nasm/asm/strfunc.c +359 -0
  54. data/vendor/repo.or.cz/nasm/asm/tokens.dat +135 -0
  55. data/vendor/repo.or.cz/nasm/asm/tokhash.pl +284 -0
  56. data/vendor/repo.or.cz/nasm/autogen.sh +9 -0
  57. data/vendor/repo.or.cz/nasm/common/common.c +122 -0
  58. data/vendor/repo.or.cz/nasm/config/msvc.h +192 -0
  59. data/vendor/repo.or.cz/nasm/config/unknown.h +51 -0
  60. data/vendor/repo.or.cz/nasm/config/watcom.h +74 -0
  61. data/vendor/repo.or.cz/nasm/configure.ac +253 -0
  62. data/vendor/repo.or.cz/nasm/contrib/MSVC6.txt +25 -0
  63. data/vendor/repo.or.cz/nasm/contrib/VSrules/nasm.README +16 -0
  64. data/vendor/repo.or.cz/nasm/contrib/VSrules/nasm.rules +79 -0
  65. data/vendor/repo.or.cz/nasm/disasm/disasm.c +1735 -0
  66. data/vendor/repo.or.cz/nasm/disasm/disasm.h +49 -0
  67. data/vendor/repo.or.cz/nasm/disasm/ndisasm.c +397 -0
  68. data/vendor/repo.or.cz/nasm/disasm/sync.c +132 -0
  69. data/vendor/repo.or.cz/nasm/disasm/sync.h +45 -0
  70. data/vendor/repo.or.cz/nasm/doc/Makefile.in +86 -0
  71. data/vendor/repo.or.cz/nasm/doc/README +20 -0
  72. data/vendor/repo.or.cz/nasm/doc/afmmetrics.ph +102 -0
  73. data/vendor/repo.or.cz/nasm/doc/changes.src +2588 -0
  74. data/vendor/repo.or.cz/nasm/doc/findfont.ph +180 -0
  75. data/vendor/repo.or.cz/nasm/doc/genps.pl +1294 -0
  76. data/vendor/repo.or.cz/nasm/doc/inslist.pl +108 -0
  77. data/vendor/repo.or.cz/nasm/doc/internal.doc +290 -0
  78. data/vendor/repo.or.cz/nasm/doc/local.css +1 -0
  79. data/vendor/repo.or.cz/nasm/doc/nasmdoc.css +150 -0
  80. data/vendor/repo.or.cz/nasm/doc/nasmdoc.src +8309 -0
  81. data/vendor/repo.or.cz/nasm/doc/nasmlogo.eps +212 -0
  82. data/vendor/repo.or.cz/nasm/doc/nasmlogw.png +0 -0
  83. data/vendor/repo.or.cz/nasm/doc/psfonts.ph +53 -0
  84. data/vendor/repo.or.cz/nasm/doc/pspdf.pl +98 -0
  85. data/vendor/repo.or.cz/nasm/doc/pswidth.ph +25 -0
  86. data/vendor/repo.or.cz/nasm/doc/rdsrc.pl +1111 -0
  87. data/vendor/repo.or.cz/nasm/doc/ttfmetrics.ph +63 -0
  88. data/vendor/repo.or.cz/nasm/headers/c +33 -0
  89. data/vendor/repo.or.cz/nasm/headers/doc +33 -0
  90. data/vendor/repo.or.cz/nasm/headers/mac +33 -0
  91. data/vendor/repo.or.cz/nasm/headers/perl +33 -0
  92. data/vendor/repo.or.cz/nasm/include/compiler.h +277 -0
  93. data/vendor/repo.or.cz/nasm/include/disp8.h +45 -0
  94. data/vendor/repo.or.cz/nasm/include/error.h +135 -0
  95. data/vendor/repo.or.cz/nasm/include/hashtbl.h +85 -0
  96. data/vendor/repo.or.cz/nasm/include/iflag.h +173 -0
  97. data/vendor/repo.or.cz/nasm/include/insns.h +76 -0
  98. data/vendor/repo.or.cz/nasm/include/labels.h +60 -0
  99. data/vendor/repo.or.cz/nasm/include/md5.h +21 -0
  100. data/vendor/repo.or.cz/nasm/include/nasm.h +1246 -0
  101. data/vendor/repo.or.cz/nasm/include/nasmint.h +219 -0
  102. data/vendor/repo.or.cz/nasm/include/nasmlib.h +524 -0
  103. data/vendor/repo.or.cz/nasm/include/opflags.h +271 -0
  104. data/vendor/repo.or.cz/nasm/include/perfhash.h +52 -0
  105. data/vendor/repo.or.cz/nasm/include/raa.h +46 -0
  106. data/vendor/repo.or.cz/nasm/include/rbtree.h +51 -0
  107. data/vendor/repo.or.cz/nasm/include/rdoff.h +169 -0
  108. data/vendor/repo.or.cz/nasm/include/saa.h +94 -0
  109. data/vendor/repo.or.cz/nasm/include/strlist.h +55 -0
  110. data/vendor/repo.or.cz/nasm/include/tables.h +70 -0
  111. data/vendor/repo.or.cz/nasm/include/ver.h +47 -0
  112. data/vendor/repo.or.cz/nasm/install-sh +250 -0
  113. data/vendor/repo.or.cz/nasm/macros/altreg.mac +107 -0
  114. data/vendor/repo.or.cz/nasm/macros/fp.mac +54 -0
  115. data/vendor/repo.or.cz/nasm/macros/ifunc.mac +48 -0
  116. data/vendor/repo.or.cz/nasm/macros/macros.pl +294 -0
  117. data/vendor/repo.or.cz/nasm/macros/smartalign.mac +189 -0
  118. data/vendor/repo.or.cz/nasm/macros/standard.mac +226 -0
  119. data/vendor/repo.or.cz/nasm/misc/Doxyfile +752 -0
  120. data/vendor/repo.or.cz/nasm/misc/Nindent +18 -0
  121. data/vendor/repo.or.cz/nasm/misc/README +2 -0
  122. data/vendor/repo.or.cz/nasm/misc/c16.mac +82 -0
  123. data/vendor/repo.or.cz/nasm/misc/c32.mac +52 -0
  124. data/vendor/repo.or.cz/nasm/misc/crcgen.c +44 -0
  125. data/vendor/repo.or.cz/nasm/misc/exebin.mac +57 -0
  126. data/vendor/repo.or.cz/nasm/misc/exebin2.mac +114 -0
  127. data/vendor/repo.or.cz/nasm/misc/fmtinsns.pl +40 -0
  128. data/vendor/repo.or.cz/nasm/misc/genfma.pl +63 -0
  129. data/vendor/repo.or.cz/nasm/misc/hints.txt +26 -0
  130. data/vendor/repo.or.cz/nasm/misc/magic +6 -0
  131. data/vendor/repo.or.cz/nasm/misc/myC32.mac +121 -0
  132. data/vendor/repo.or.cz/nasm/misc/nasm.sl +320 -0
  133. data/vendor/repo.or.cz/nasm/misc/nasmstab +296 -0
  134. data/vendor/repo.or.cz/nasm/misc/omfdump.c +517 -0
  135. data/vendor/repo.or.cz/nasm/misc/pmw.bat +9 -0
  136. data/vendor/repo.or.cz/nasm/misc/proc32.ash +441 -0
  137. data/vendor/repo.or.cz/nasm/misc/scitech.mac +1223 -0
  138. data/vendor/repo.or.cz/nasm/misc/xcrcgen.c +80 -0
  139. data/vendor/repo.or.cz/nasm/nasm.spec.in +83 -0
  140. data/vendor/repo.or.cz/nasm/nasm.spec.sed +3 -0
  141. data/vendor/repo.or.cz/nasm/nasm.txt +306 -0
  142. data/vendor/repo.or.cz/nasm/nasmlib/badenum.c +43 -0
  143. data/vendor/repo.or.cz/nasm/nasmlib/bsi.c +77 -0
  144. data/vendor/repo.or.cz/nasm/nasmlib/crc64.c +189 -0
  145. data/vendor/repo.or.cz/nasm/nasmlib/file.c +259 -0
  146. data/vendor/repo.or.cz/nasm/nasmlib/file.h +128 -0
  147. data/vendor/repo.or.cz/nasm/nasmlib/filename.c +69 -0
  148. data/vendor/repo.or.cz/nasm/nasmlib/hashtbl.c +232 -0
  149. data/vendor/repo.or.cz/nasm/nasmlib/ilog2.c +168 -0
  150. data/vendor/repo.or.cz/nasm/nasmlib/malloc.c +108 -0
  151. data/vendor/repo.or.cz/nasm/nasmlib/md5c.c +247 -0
  152. data/vendor/repo.or.cz/nasm/nasmlib/mmap.c +139 -0
  153. data/vendor/repo.or.cz/nasm/nasmlib/path.c +186 -0
  154. data/vendor/repo.or.cz/nasm/nasmlib/perfhash.c +55 -0
  155. data/vendor/repo.or.cz/nasm/nasmlib/perfhash.pl +362 -0
  156. data/vendor/repo.or.cz/nasm/nasmlib/raa.c +173 -0
  157. data/vendor/repo.or.cz/nasm/nasmlib/rbtree.c +119 -0
  158. data/vendor/repo.or.cz/nasm/nasmlib/readnum.c +172 -0
  159. data/vendor/repo.or.cz/nasm/nasmlib/realpath.c +135 -0
  160. data/vendor/repo.or.cz/nasm/nasmlib/saa.c +431 -0
  161. data/vendor/repo.or.cz/nasm/nasmlib/srcfile.c +128 -0
  162. data/vendor/repo.or.cz/nasm/nasmlib/string.c +242 -0
  163. data/vendor/repo.or.cz/nasm/nasmlib/strlist.c +100 -0
  164. data/vendor/repo.or.cz/nasm/nasmlib/ver.c +51 -0
  165. data/vendor/repo.or.cz/nasm/nasmlib/zerobuf.c +42 -0
  166. data/vendor/repo.or.cz/nasm/ndisasm.txt +94 -0
  167. data/vendor/repo.or.cz/nasm/nsis/NASMMultiUser.nsh +478 -0
  168. data/vendor/repo.or.cz/nasm/nsis/getpearch.pl +76 -0
  169. data/vendor/repo.or.cz/nasm/nsis/nasm-un.ico +0 -0
  170. data/vendor/repo.or.cz/nasm/nsis/nasm.ico +0 -0
  171. data/vendor/repo.or.cz/nasm/nsis/nasm.nsi +241 -0
  172. data/vendor/repo.or.cz/nasm/output/codeview.c +814 -0
  173. data/vendor/repo.or.cz/nasm/output/dwarf.h +566 -0
  174. data/vendor/repo.or.cz/nasm/output/elf.h +537 -0
  175. data/vendor/repo.or.cz/nasm/output/legacy.c +112 -0
  176. data/vendor/repo.or.cz/nasm/output/nulldbg.c +93 -0
  177. data/vendor/repo.or.cz/nasm/output/nullout.c +51 -0
  178. data/vendor/repo.or.cz/nasm/output/outaout.c +954 -0
  179. data/vendor/repo.or.cz/nasm/output/outaout.mac +37 -0
  180. data/vendor/repo.or.cz/nasm/output/outas86.c +650 -0
  181. data/vendor/repo.or.cz/nasm/output/outas86.mac +37 -0
  182. data/vendor/repo.or.cz/nasm/output/outbin.c +1713 -0
  183. data/vendor/repo.or.cz/nasm/output/outbin.mac +40 -0
  184. data/vendor/repo.or.cz/nasm/output/outcoff.c +1242 -0
  185. data/vendor/repo.or.cz/nasm/output/outcoff.mac +43 -0
  186. data/vendor/repo.or.cz/nasm/output/outdbg.c +425 -0
  187. data/vendor/repo.or.cz/nasm/output/outelf.c +3370 -0
  188. data/vendor/repo.or.cz/nasm/output/outelf.h +156 -0
  189. data/vendor/repo.or.cz/nasm/output/outelf.mac +41 -0
  190. data/vendor/repo.or.cz/nasm/output/outform.c +120 -0
  191. data/vendor/repo.or.cz/nasm/output/outform.h +379 -0
  192. data/vendor/repo.or.cz/nasm/output/outieee.c +1528 -0
  193. data/vendor/repo.or.cz/nasm/output/outlib.c +58 -0
  194. data/vendor/repo.or.cz/nasm/output/outlib.h +63 -0
  195. data/vendor/repo.or.cz/nasm/output/outmacho.c +2387 -0
  196. data/vendor/repo.or.cz/nasm/output/outmacho.mac +49 -0
  197. data/vendor/repo.or.cz/nasm/output/outobj.c +2725 -0
  198. data/vendor/repo.or.cz/nasm/output/outobj.mac +49 -0
  199. data/vendor/repo.or.cz/nasm/output/outrdf.mac +40 -0
  200. data/vendor/repo.or.cz/nasm/output/outrdf2.c +791 -0
  201. data/vendor/repo.or.cz/nasm/output/outrdf2.mac +43 -0
  202. data/vendor/repo.or.cz/nasm/output/pecoff.h +532 -0
  203. data/vendor/repo.or.cz/nasm/output/stabs.h +144 -0
  204. data/vendor/repo.or.cz/nasm/perllib/crc64.ph +158 -0
  205. data/vendor/repo.or.cz/nasm/perllib/gensv.pl +34 -0
  206. data/vendor/repo.or.cz/nasm/perllib/phash.ph +200 -0
  207. data/vendor/repo.or.cz/nasm/perllib/random_sv_vectors.ph +67 -0
  208. data/vendor/repo.or.cz/nasm/rdoff/README +185 -0
  209. data/vendor/repo.or.cz/nasm/rdoff/collectn.c +44 -0
  210. data/vendor/repo.or.cz/nasm/rdoff/collectn.h +22 -0
  211. data/vendor/repo.or.cz/nasm/rdoff/doc/Makefile +37 -0
  212. data/vendor/repo.or.cz/nasm/rdoff/doc/rdoff.texi +137 -0
  213. data/vendor/repo.or.cz/nasm/rdoff/doc/v1-v2.txt +62 -0
  214. data/vendor/repo.or.cz/nasm/rdoff/hash.c +122 -0
  215. data/vendor/repo.or.cz/nasm/rdoff/hash.h +17 -0
  216. data/vendor/repo.or.cz/nasm/rdoff/ldrdf.1 +41 -0
  217. data/vendor/repo.or.cz/nasm/rdoff/ldrdf.c +1395 -0
  218. data/vendor/repo.or.cz/nasm/rdoff/ldsegs.h +59 -0
  219. data/vendor/repo.or.cz/nasm/rdoff/rdf2bin.1 +65 -0
  220. data/vendor/repo.or.cz/nasm/rdoff/rdf2bin.c +431 -0
  221. data/vendor/repo.or.cz/nasm/rdoff/rdf2com.1 +1 -0
  222. data/vendor/repo.or.cz/nasm/rdoff/rdf2ihx.1 +1 -0
  223. data/vendor/repo.or.cz/nasm/rdoff/rdf2ith.1 +1 -0
  224. data/vendor/repo.or.cz/nasm/rdoff/rdf2srec.1 +1 -0
  225. data/vendor/repo.or.cz/nasm/rdoff/rdfdump.1 +24 -0
  226. data/vendor/repo.or.cz/nasm/rdoff/rdfdump.c +347 -0
  227. data/vendor/repo.or.cz/nasm/rdoff/rdflib.1 +39 -0
  228. data/vendor/repo.or.cz/nasm/rdoff/rdflib.c +434 -0
  229. data/vendor/repo.or.cz/nasm/rdoff/rdfload.c +213 -0
  230. data/vendor/repo.or.cz/nasm/rdoff/rdfload.h +29 -0
  231. data/vendor/repo.or.cz/nasm/rdoff/rdfutils.h +165 -0
  232. data/vendor/repo.or.cz/nasm/rdoff/rdlar.c +492 -0
  233. data/vendor/repo.or.cz/nasm/rdoff/rdlar.h +34 -0
  234. data/vendor/repo.or.cz/nasm/rdoff/rdlib.c +290 -0
  235. data/vendor/repo.or.cz/nasm/rdoff/rdlib.h +62 -0
  236. data/vendor/repo.or.cz/nasm/rdoff/rdoff.c +621 -0
  237. data/vendor/repo.or.cz/nasm/rdoff/rdx.1 +21 -0
  238. data/vendor/repo.or.cz/nasm/rdoff/rdx.c +90 -0
  239. data/vendor/repo.or.cz/nasm/rdoff/segtab.c +172 -0
  240. data/vendor/repo.or.cz/nasm/rdoff/segtab.h +45 -0
  241. data/vendor/repo.or.cz/nasm/rdoff/symtab.c +159 -0
  242. data/vendor/repo.or.cz/nasm/rdoff/symtab.h +55 -0
  243. data/vendor/repo.or.cz/nasm/rdoff/test/Makefile +10 -0
  244. data/vendor/repo.or.cz/nasm/rdoff/test/makelib.sh +14 -0
  245. data/vendor/repo.or.cz/nasm/rdoff/test/rdfseg.asm +20 -0
  246. data/vendor/repo.or.cz/nasm/rdoff/test/rdfseg2.asm +12 -0
  247. data/vendor/repo.or.cz/nasm/rdoff/test/rdftest1.asm +54 -0
  248. data/vendor/repo.or.cz/nasm/rdoff/test/rdftest2.asm +33 -0
  249. data/vendor/repo.or.cz/nasm/rdoff/test/rdtlib.asm +48 -0
  250. data/vendor/repo.or.cz/nasm/rdoff/test/rdtmain.asm +47 -0
  251. data/vendor/repo.or.cz/nasm/rdoff/test/testlib.asm +18 -0
  252. data/vendor/repo.or.cz/nasm/stdlib/snprintf.c +29 -0
  253. data/vendor/repo.or.cz/nasm/stdlib/strlcpy.c +51 -0
  254. data/vendor/repo.or.cz/nasm/stdlib/strnlen.c +46 -0
  255. data/vendor/repo.or.cz/nasm/stdlib/vsnprintf.c +51 -0
  256. data/vendor/repo.or.cz/nasm/test/Makefile +106 -0
  257. data/vendor/repo.or.cz/nasm/test/_file_.asm +5 -0
  258. data/vendor/repo.or.cz/nasm/test/_version.asm +2 -0
  259. data/vendor/repo.or.cz/nasm/test/a32offs.asm +9 -0
  260. data/vendor/repo.or.cz/nasm/test/absolute.asm +40 -0
  261. data/vendor/repo.or.cz/nasm/test/addr64x.asm +18 -0
  262. data/vendor/repo.or.cz/nasm/test/align13.asm +19 -0
  263. data/vendor/repo.or.cz/nasm/test/align13s.asm +20 -0
  264. data/vendor/repo.or.cz/nasm/test/alonesym-obj.asm +166 -0
  265. data/vendor/repo.or.cz/nasm/test/andbyte.asm +15 -0
  266. data/vendor/repo.or.cz/nasm/test/aoutso.asm +99 -0
  267. data/vendor/repo.or.cz/nasm/test/aouttest.asm +86 -0
  268. data/vendor/repo.or.cz/nasm/test/aouttest.c +36 -0
  269. data/vendor/repo.or.cz/nasm/test/avx.asm +46 -0
  270. data/vendor/repo.or.cz/nasm/test/avx005.asm +529 -0
  271. data/vendor/repo.or.cz/nasm/test/avx2.asm +1608 -0
  272. data/vendor/repo.or.cz/nasm/test/avx512cd.asm +106 -0
  273. data/vendor/repo.or.cz/nasm/test/avx512er.asm +144 -0
  274. data/vendor/repo.or.cz/nasm/test/avx512f.asm +7000 -0
  275. data/vendor/repo.or.cz/nasm/test/avx512pf.asm +88 -0
  276. data/vendor/repo.or.cz/nasm/test/bcd.asm +23 -0
  277. data/vendor/repo.or.cz/nasm/test/binexe.asm +35 -0
  278. data/vendor/repo.or.cz/nasm/test/bintest.asm +59 -0
  279. data/vendor/repo.or.cz/nasm/test/bisect.sh +22 -0
  280. data/vendor/repo.or.cz/nasm/test/br1879590.asm +25 -0
  281. data/vendor/repo.or.cz/nasm/test/br2003451.asm +17 -0
  282. data/vendor/repo.or.cz/nasm/test/br2030823.asm +7 -0
  283. data/vendor/repo.or.cz/nasm/test/br2148476.asm +221 -0
  284. data/vendor/repo.or.cz/nasm/test/br2222615.asm +19 -0
  285. data/vendor/repo.or.cz/nasm/test/br2496848.asm +42 -0
  286. data/vendor/repo.or.cz/nasm/test/br3005117.asm +26 -0
  287. data/vendor/repo.or.cz/nasm/test/br3026808.asm +20 -0
  288. data/vendor/repo.or.cz/nasm/test/br3028880.asm +8 -0
  289. data/vendor/repo.or.cz/nasm/test/br3041451.asm +59 -0
  290. data/vendor/repo.or.cz/nasm/test/br3058845.asm +14 -0
  291. data/vendor/repo.or.cz/nasm/test/br3066383.asm +70 -0
  292. data/vendor/repo.or.cz/nasm/test/br3074517.asm +12 -0
  293. data/vendor/repo.or.cz/nasm/test/br3092924.asm +25 -0
  294. data/vendor/repo.or.cz/nasm/test/br3104312.asm +11 -0
  295. data/vendor/repo.or.cz/nasm/test/br3109604.asm +9 -0
  296. data/vendor/repo.or.cz/nasm/test/br3174983.asm +9 -0
  297. data/vendor/repo.or.cz/nasm/test/br3187743.asm +7 -0
  298. data/vendor/repo.or.cz/nasm/test/br3189064.asm +7 -0
  299. data/vendor/repo.or.cz/nasm/test/br3200749.asm +9 -0
  300. data/vendor/repo.or.cz/nasm/test/br3385573.asm +11 -0
  301. data/vendor/repo.or.cz/nasm/test/br3392252.asm +43 -0
  302. data/vendor/repo.or.cz/nasm/test/br3392259.asm +8 -0
  303. data/vendor/repo.or.cz/nasm/test/br3392363.asm +4 -0
  304. data/vendor/repo.or.cz/nasm/test/br3392392.asm +16 -0
  305. data/vendor/repo.or.cz/nasm/test/br3392396.asm +5 -0
  306. data/vendor/repo.or.cz/nasm/test/br3392411.asm +22 -0
  307. data/vendor/repo.or.cz/nasm/test/br3392418.asm +3 -0
  308. data/vendor/repo.or.cz/nasm/test/br3392439.asm +25 -0
  309. data/vendor/repo.or.cz/nasm/test/br3392442.asm +6 -0
  310. data/vendor/repo.or.cz/nasm/test/br560575.asm +17 -0
  311. data/vendor/repo.or.cz/nasm/test/br560873.asm +27 -0
  312. data/vendor/repo.or.cz/nasm/test/br890790.asm +7 -0
  313. data/vendor/repo.or.cz/nasm/test/br890790_i.asm +1 -0
  314. data/vendor/repo.or.cz/nasm/test/br978756.asm +7 -0
  315. data/vendor/repo.or.cz/nasm/test/changed.asm +383 -0
  316. data/vendor/repo.or.cz/nasm/test/cofftest.asm +85 -0
  317. data/vendor/repo.or.cz/nasm/test/cofftest.c +35 -0
  318. data/vendor/repo.or.cz/nasm/test/crc32.asm +37 -0
  319. data/vendor/repo.or.cz/nasm/test/cv8struc.asm +14 -0
  320. data/vendor/repo.or.cz/nasm/test/dtbcd.asm +72 -0
  321. data/vendor/repo.or.cz/nasm/test/elf64so.asm +118 -0
  322. data/vendor/repo.or.cz/nasm/test/elfso.asm +100 -0
  323. data/vendor/repo.or.cz/nasm/test/elftest.asm +87 -0
  324. data/vendor/repo.or.cz/nasm/test/elftest.c +38 -0
  325. data/vendor/repo.or.cz/nasm/test/elftest64.c +43 -0
  326. data/vendor/repo.or.cz/nasm/test/elif.asm +39 -0
  327. data/vendor/repo.or.cz/nasm/test/expimp.asm +90 -0
  328. data/vendor/repo.or.cz/nasm/test/far64.asm +10 -0
  329. data/vendor/repo.or.cz/nasm/test/float.asm +186 -0
  330. data/vendor/repo.or.cz/nasm/test/float8.asm +135 -0
  331. data/vendor/repo.or.cz/nasm/test/floatb.asm +35 -0
  332. data/vendor/repo.or.cz/nasm/test/floatexp.asm +382 -0
  333. data/vendor/repo.or.cz/nasm/test/floatize.asm +19 -0
  334. data/vendor/repo.or.cz/nasm/test/floattest.asm +28 -0
  335. data/vendor/repo.or.cz/nasm/test/floatx.asm +525 -0
  336. data/vendor/repo.or.cz/nasm/test/fpu.asm +127 -0
  337. data/vendor/repo.or.cz/nasm/test/fwdopt.asm +133 -0
  338. data/vendor/repo.or.cz/nasm/test/fwdoptpp.asm +150 -0
  339. data/vendor/repo.or.cz/nasm/test/gas2nasm.py +104 -0
  340. data/vendor/repo.or.cz/nasm/test/gather.asm +11 -0
  341. data/vendor/repo.or.cz/nasm/test/gotoff64.asm +25 -0
  342. data/vendor/repo.or.cz/nasm/test/hexfp.asm +25 -0
  343. data/vendor/repo.or.cz/nasm/test/hle.asm +19 -0
  344. data/vendor/repo.or.cz/nasm/test/ifelse.asm +46 -0
  345. data/vendor/repo.or.cz/nasm/test/ifenv.asm +31 -0
  346. data/vendor/repo.or.cz/nasm/test/ifmacro.asm +413 -0
  347. data/vendor/repo.or.cz/nasm/test/iftoken.asm +317 -0
  348. data/vendor/repo.or.cz/nasm/test/iftoken.pl +32 -0
  349. data/vendor/repo.or.cz/nasm/test/ilog2.asm +271 -0
  350. data/vendor/repo.or.cz/nasm/test/imacro.asm +8 -0
  351. data/vendor/repo.or.cz/nasm/test/imm.asm +23 -0
  352. data/vendor/repo.or.cz/nasm/test/imm64.asm +61 -0
  353. data/vendor/repo.or.cz/nasm/test/immwarn.asm +91 -0
  354. data/vendor/repo.or.cz/nasm/test/imul.asm +117 -0
  355. data/vendor/repo.or.cz/nasm/test/inc1.asm +6 -0
  356. data/vendor/repo.or.cz/nasm/test/inc2.asm +8 -0
  357. data/vendor/repo.or.cz/nasm/test/incbin.asm +7 -0
  358. data/vendor/repo.or.cz/nasm/test/incbin.data +2 -0
  359. data/vendor/repo.or.cz/nasm/test/inctest.asm +15 -0
  360. data/vendor/repo.or.cz/nasm/test/insnlbl.asm +12 -0
  361. data/vendor/repo.or.cz/nasm/test/invlpga.asm +11 -0
  362. data/vendor/repo.or.cz/nasm/test/jmp64.asm +19 -0
  363. data/vendor/repo.or.cz/nasm/test/lar_lsl.asm +124 -0
  364. data/vendor/repo.or.cz/nasm/test/larlsl.asm +23 -0
  365. data/vendor/repo.or.cz/nasm/test/lnxhello.asm +54 -0
  366. data/vendor/repo.or.cz/nasm/test/local.asm +19 -0
  367. data/vendor/repo.or.cz/nasm/test/loopoffs.asm +12 -0
  368. data/vendor/repo.or.cz/nasm/test/lwp.asm +213 -0
  369. data/vendor/repo.or.cz/nasm/test/macro-defaults.asm +64 -0
  370. data/vendor/repo.or.cz/nasm/test/macroerr.asm +12 -0
  371. data/vendor/repo.or.cz/nasm/test/macroerr.inc +3 -0
  372. data/vendor/repo.or.cz/nasm/test/mmxsize.asm +38 -0
  373. data/vendor/repo.or.cz/nasm/test/movd.asm +12 -0
  374. data/vendor/repo.or.cz/nasm/test/movd64.asm +15 -0
  375. data/vendor/repo.or.cz/nasm/test/movimm.asm +28 -0
  376. data/vendor/repo.or.cz/nasm/test/movnti.asm +10 -0
  377. data/vendor/repo.or.cz/nasm/test/mpx-64.asm +120 -0
  378. data/vendor/repo.or.cz/nasm/test/mpx.asm +89 -0
  379. data/vendor/repo.or.cz/nasm/test/multisection.asm +96 -0
  380. data/vendor/repo.or.cz/nasm/test/nasmformat.asm +17 -0
  381. data/vendor/repo.or.cz/nasm/test/new +9 -0
  382. data/vendor/repo.or.cz/nasm/test/newrdwr.asm +24 -0
  383. data/vendor/repo.or.cz/nasm/test/nop.asm +17 -0
  384. data/vendor/repo.or.cz/nasm/test/nullfile.asm +4 -0
  385. data/vendor/repo.or.cz/nasm/test/objexe.asm +30 -0
  386. data/vendor/repo.or.cz/nasm/test/objlink.c +33 -0
  387. data/vendor/repo.or.cz/nasm/test/objtest.asm +85 -0
  388. data/vendor/repo.or.cz/nasm/test/optimization.asm +104 -0
  389. data/vendor/repo.or.cz/nasm/test/org.asm +18 -0
  390. data/vendor/repo.or.cz/nasm/test/paste.asm +12 -0
  391. data/vendor/repo.or.cz/nasm/test/pcrel.asm +52 -0
  392. data/vendor/repo.or.cz/nasm/test/perf/label.pl +18 -0
  393. data/vendor/repo.or.cz/nasm/test/perf/macro.pl +18 -0
  394. data/vendor/repo.or.cz/nasm/test/perf/token.pl +23 -0
  395. data/vendor/repo.or.cz/nasm/test/performtest.pl +192 -0
  396. data/vendor/repo.or.cz/nasm/test/pextrw.asm +3 -0
  397. data/vendor/repo.or.cz/nasm/test/pinsr16.asm +53 -0
  398. data/vendor/repo.or.cz/nasm/test/pinsr32.asm +53 -0
  399. data/vendor/repo.or.cz/nasm/test/pinsr64.asm +68 -0
  400. data/vendor/repo.or.cz/nasm/test/popcnt.asm +32 -0
  401. data/vendor/repo.or.cz/nasm/test/ppindirect.asm +42 -0
  402. data/vendor/repo.or.cz/nasm/test/pragma.asm +12 -0
  403. data/vendor/repo.or.cz/nasm/test/prefix66.asm +28 -0
  404. data/vendor/repo.or.cz/nasm/test/ptr.asm +4 -0
  405. data/vendor/repo.or.cz/nasm/test/pushseg.asm +17 -0
  406. data/vendor/repo.or.cz/nasm/test/r13.asm +15 -0
  407. data/vendor/repo.or.cz/nasm/test/radix.asm +54 -0
  408. data/vendor/repo.or.cz/nasm/test/rdpid.asm +21 -0
  409. data/vendor/repo.or.cz/nasm/test/reldef.asm +57 -0
  410. data/vendor/repo.or.cz/nasm/test/relocs.asm +20 -0
  411. data/vendor/repo.or.cz/nasm/test/riprel.asm +5357 -0
  412. data/vendor/repo.or.cz/nasm/test/riprel.pl +29 -0
  413. data/vendor/repo.or.cz/nasm/test/riprel2.asm +11 -0
  414. data/vendor/repo.or.cz/nasm/test/sha-64.asm +30 -0
  415. data/vendor/repo.or.cz/nasm/test/sha.asm +31 -0
  416. data/vendor/repo.or.cz/nasm/test/smartalign16.asm +36 -0
  417. data/vendor/repo.or.cz/nasm/test/smartalign32.asm +36 -0
  418. data/vendor/repo.or.cz/nasm/test/smartalign64.asm +36 -0
  419. data/vendor/repo.or.cz/nasm/test/splitea.asm +11 -0
  420. data/vendor/repo.or.cz/nasm/test/sreg.asm +65 -0
  421. data/vendor/repo.or.cz/nasm/test/strlen.asm +5 -0
  422. data/vendor/repo.or.cz/nasm/test/struc.asm +33 -0
  423. data/vendor/repo.or.cz/nasm/test/test67.asm +38 -0
  424. data/vendor/repo.or.cz/nasm/test/testdos.asm +13 -0
  425. data/vendor/repo.or.cz/nasm/test/testnos3.asm +973 -0
  426. data/vendor/repo.or.cz/nasm/test/time.asm +11 -0
  427. data/vendor/repo.or.cz/nasm/test/times.asm +21 -0
  428. data/vendor/repo.or.cz/nasm/test/timesneg.asm +3 -0
  429. data/vendor/repo.or.cz/nasm/test/tmap.nas +1447 -0
  430. data/vendor/repo.or.cz/nasm/test/uscore.asm +15 -0
  431. data/vendor/repo.or.cz/nasm/test/utf.asm +82 -0
  432. data/vendor/repo.or.cz/nasm/test/vaesenc.asm +22 -0
  433. data/vendor/repo.or.cz/nasm/test/vex.asm +9 -0
  434. data/vendor/repo.or.cz/nasm/test/vgather.asm +76 -0
  435. data/vendor/repo.or.cz/nasm/test/vmread.asm +26 -0
  436. data/vendor/repo.or.cz/nasm/test/weirdpaste.asm +29 -0
  437. data/vendor/repo.or.cz/nasm/test/xchg.asm +96 -0
  438. data/vendor/repo.or.cz/nasm/test/xcrypt.asm +24 -0
  439. data/vendor/repo.or.cz/nasm/test/xmm0.asm +12 -0
  440. data/vendor/repo.or.cz/nasm/test/zerobyte.asm +22 -0
  441. data/vendor/repo.or.cz/nasm/tools/cleanfile +176 -0
  442. data/vendor/repo.or.cz/nasm/tools/cleanpatch +258 -0
  443. data/vendor/repo.or.cz/nasm/tools/mkdep.pl +261 -0
  444. data/vendor/repo.or.cz/nasm/tools/release +105 -0
  445. data/vendor/repo.or.cz/nasm/tools/syncfiles.pl +137 -0
  446. data/vendor/repo.or.cz/nasm/tools/tag-release +58 -0
  447. data/vendor/repo.or.cz/nasm/version +1 -0
  448. data/vendor/repo.or.cz/nasm/version.pl +189 -0
  449. data/vendor/repo.or.cz/nasm/x86/disp8.c +131 -0
  450. data/vendor/repo.or.cz/nasm/x86/insns-iflags.ph +280 -0
  451. data/vendor/repo.or.cz/nasm/x86/insns.dat +5371 -0
  452. data/vendor/repo.or.cz/nasm/x86/insns.pl +1043 -0
  453. data/vendor/repo.or.cz/nasm/x86/regs.dat +138 -0
  454. data/vendor/repo.or.cz/nasm/x86/regs.pl +204 -0
  455. metadata +520 -0
@@ -0,0 +1,4 @@
1
+ ;Testname=test; Arguments=-fbin -onull.bin; Files=stdout stderr null.bin
2
+ ;
3
+ ; A file that produces no output has been known to occationally crash NASM.
4
+ ;
@@ -0,0 +1,30 @@
1
+ ; Demonstration of how to write an entire .EXE format program as a .OBJ
2
+ ; file to be linked. Tested with the VAL free linker.
3
+ ; To build:
4
+ ; nasm -fobj objexe.asm
5
+ ; val objexe.obj,objexe.exe;
6
+ ; To test:
7
+ ; objexe
8
+ ; (should print `hello, world')
9
+
10
+ segment code
11
+
12
+ ..start: mov ax,data
13
+ mov ds,ax
14
+ mov ax,stack
15
+ mov ss,ax
16
+ mov sp,stacktop
17
+
18
+ mov dx,hello
19
+ mov ah,9
20
+ int 0x21
21
+
22
+ mov ax,0x4c00
23
+ int 0x21
24
+
25
+ segment data
26
+ hello: db 'hello, world', 13, 10, '$'
27
+
28
+ segment stack stack
29
+ resb 64
30
+ stacktop:
@@ -0,0 +1,33 @@
1
+ /*
2
+ * test source file for assembling to Microsoft 16-bit .OBJ
3
+ * build with (16-bit Microsoft C):
4
+ * nasm -f obj objtest.asm
5
+ * cl /AL objtest.obj objlink.c
6
+ * other compilers should work too, provided they handle large
7
+ * model in the same way as MS C
8
+ */
9
+
10
+ #include <stdio.h>
11
+ #include <inttypes.h>
12
+
13
+ int8_t text[] = "hello, world\n";
14
+
15
+ extern void function(int8_t *);
16
+ extern int bsssym, commvar;
17
+ extern void *selfptr;
18
+ extern void *selfptr2;
19
+
20
+ int main(void)
21
+ {
22
+ printf("these should be identical: %p, %p\n",
23
+ (int32_t)selfptr, (int32_t)&selfptr);
24
+ printf("these should be equivalent but different: %p, %p\n",
25
+ (int32_t)selfptr2, (int32_t)&selfptr2);
26
+ printf("you should see \"hello, world\" twice:\n");
27
+ bsssym = 0xF00D;
28
+ commvar = 0xD00F;
29
+ function(text);
30
+ printf("this should be 0xF00E: 0x%X\n", bsssym);
31
+ printf("this should be 0xD00E: 0x%X\n", commvar);
32
+ return 0;
33
+ }
@@ -0,0 +1,85 @@
1
+ ;Testname=unoptimized; Arguments=-O0 -fobj -oobj.o; Files=stdout stderr obj.o
2
+ ;Testname=optimized; Arguments=-Ox -fobj -oobj.o; Files=stdout stderr obj.o
3
+
4
+ ; test source file for assembling to Microsoft 16-bit .OBJ
5
+ ; build with (16-bit Microsoft C):
6
+ ; nasm -f obj objtest.asm
7
+ ; cl /AL objtest.obj objlink.c
8
+ ; other compilers should work too, provided they handle large
9
+ ; model in the same way as MS C
10
+
11
+ ; This file should test the following:
12
+ ; [1] Define and export a global symbol
13
+ ; [2] Define a non-global symbol
14
+ ; [3] Define a common symbol
15
+ ; [4] Define a NASM local label
16
+ ; [5] Reference a NASM local label
17
+ ; [6] Import an external symbol
18
+ ; [7] Make a PC-relative relocated reference
19
+ ; [8] Reference a symbol in the same section as itself
20
+ ; [9] Reference a symbol in a different segment from itself
21
+ ; [10] Define a segment group
22
+ ; [11] Take the offset of a symbol in a grouped segment w.r.t. its segment
23
+ ; [12] Reserve uninitialised data space in a segment
24
+ ; [13] Directly take the segment address of a segment
25
+ ; [14] Directly take the segment address of a group
26
+ ; [15] Use SEG on a non-external
27
+ ; [16] Use SEG on an external
28
+
29
+ bits 16
30
+
31
+ global _bsssym ; [1]
32
+ global _function ; [1]
33
+ global _selfptr ; [1]
34
+ global _selfptr2 ; [1]
35
+ common _commvar 2 ; [3]
36
+ extern _printf ; [6]
37
+
38
+ group mygroup mybss mydata ; [10]
39
+ group mygroup2 mycode mycode2 ; [10]
40
+
41
+ segment mycode private
42
+
43
+ _function push bp
44
+ mov bp,sp
45
+ push ds
46
+ mov ax,mygroup ; [14]
47
+ mov ds,ax
48
+ inc word [_bsssym] ; [9]
49
+ mov ax,seg _commvar
50
+ mov ds,ax
51
+ dec word [_commvar]
52
+ pop ds
53
+ mov ax,[bp+6]
54
+ mov dx,[bp+8]
55
+ push dx
56
+ push ax
57
+ push dx
58
+ push ax
59
+ call far [cs:.printf] ; [5] [8]
60
+ pop ax
61
+ pop ax
62
+ call trampoline ; [7]
63
+ pop ax
64
+ pop ax
65
+ mov sp,bp
66
+ pop bp
67
+ retf
68
+
69
+ .printf dw _printf, seg _printf ; [2] [4] [16]
70
+
71
+ segment mycode2 private
72
+
73
+ trampoline: pop ax
74
+ push cs
75
+ push ax
76
+ jmp far _printf
77
+
78
+ segment mybss private
79
+
80
+ _bsssym resw 64 ; [12]
81
+
82
+ segment mydata private
83
+
84
+ _selfptr dw _selfptr, seg _selfptr ; [8] [15]
85
+ _selfptr2 dw _selfptr2 wrt mydata, mydata ; [11] [13]
@@ -0,0 +1,104 @@
1
+ ;Testname=O0; Arguments=-O0 -fbin -ooptimization.bin; Files=stdout stderr optimization.bin
2
+ ;Testname=O1; Arguments=-O1 -fbin -ooptimization.bin; Files=stdout stderr optimization.bin
3
+ ;Testname=Ox; Arguments=-Ox -fbin -ooptimization.bin; Files=stdout stderr optimization.bin
4
+
5
+ BITS 32
6
+
7
+ ; Simple
8
+ jmp foo
9
+ times 124 nop
10
+ foo:
11
+
12
+ ; Must start short to converge optimally
13
+ jmp car
14
+ times 127 nop
15
+ car:
16
+
17
+ ; Always near
18
+ jmp cdr
19
+ times 128 nop
20
+ cdr:
21
+
22
+
23
+ ; Simple
24
+ add eax, quux2 - quux1
25
+ quux1:
26
+ times 127 nop
27
+ quux2:
28
+
29
+ ; Must start short
30
+ corge1:
31
+ add eax, corge2 - corge1
32
+ times 127 - 3 nop
33
+ corge2:
34
+
35
+
36
+ ; Simple
37
+ lea eax, [bolug2-bolug1]
38
+ bolug1:
39
+ times 127 nop
40
+ bolug2:
41
+
42
+ ; Must start short
43
+ calog1:
44
+ lea eax, [calog2-calog1]
45
+ times 127 - 3 nop
46
+ calog2:
47
+
48
+
49
+ ; Simple
50
+ lea eax, [eax+dolug2-dolug1]
51
+ dolug1:
52
+ times 127 nop
53
+ dolug2:
54
+
55
+ ; Must start short
56
+ ealog1:
57
+ lea eax, [eax+ealog2-ealog1]
58
+ times 127 - 3 nop
59
+ ealog2:
60
+
61
+ ; Must stay long!
62
+ lea eax, [eax+folug2-folug1]
63
+ folug1:
64
+ times 128 nop
65
+ folug2:
66
+
67
+ ; Must stay long!
68
+ galog1:
69
+ lea eax, [eax+galog2-galog1]
70
+ times 128 - 3 nop
71
+ galog2:
72
+
73
+ ; Sbyte tests...
74
+ onetwentysix equ 126
75
+ onetwentynine equ 129
76
+
77
+ add eax,onetwentyseven ; sbyte (forward)
78
+ add eax,onetwentyeight ; not sbyte (forward)
79
+ add eax,onetwentyseven ; sbyte (forward)
80
+ add eax,onetwentysix ; sbyte (backward)
81
+ add eax,onetwentynine ; not sbyte (backward)
82
+ add ecx,onetwentyseven ; sbyte (forward)
83
+ add ecx,onetwentyeight ; not sbyte (forward)
84
+ add ecx,onetwentyseven ; sbyte (forward)
85
+ add ecx,onetwentysix ; sbyte (backward)
86
+ add ecx,onetwentynine ; not sbyte (backward)
87
+
88
+ onetwentyseven equ 127
89
+ onetwentyeight equ 128
90
+
91
+ ; Simple
92
+ add eax, holug2-holug1
93
+ holug1:
94
+ times 127 nop
95
+ holug2:
96
+
97
+ ; Must start short
98
+ ialog1:
99
+ add eax, ialog2-ialog1
100
+ times 127 - 3 nop
101
+ ialog2:
102
+
103
+ ; Do not confuse forward references and segmentless addresses!
104
+ jmp 12345
@@ -0,0 +1,18 @@
1
+ ;Testname=elf64; Arguments=-Ox -felf64 -oorg.o; Files=stdout stderr org.o
2
+ ;Testname=win64; Arguments=-Ox -fwin64 -oorg.o; Files=stdout stderr org.o
3
+
4
+ ;
5
+ ; Simple test of a 64-bit org directive
6
+ ;
7
+ bits 64
8
+ org 0xffffffffffff0000
9
+
10
+ hello: jmp there
11
+ nop
12
+ nop
13
+ there:
14
+ add rax,[rsp+rbx]
15
+ inc eax
16
+
17
+ section .data
18
+ there_ptr dq there
@@ -0,0 +1,12 @@
1
+ %macro bug 1-*
2
+ %push foo
3
+ %define %$v %1
4
+ %define vv %$v_ %+ %1
5
+ %%top_{%$v}%1:
6
+ mov eax, eax
7
+ mov eax, %%top_{%$v}%1
8
+ mov eax, vv
9
+ %pop
10
+ %endmacro
11
+
12
+ bug a
@@ -0,0 +1,52 @@
1
+ bits 32
2
+ foo: ; Backwards reference
3
+ mov eax,[foo - $]
4
+ mov ebx,[ebx + foo - $]
5
+ mov ecx,foo - $
6
+ mov edx,foo - bar
7
+
8
+ mov eax,[bar - $]
9
+ mov ebx,[ebx + bar - $]
10
+ mov ecx,bar - $
11
+ mov edx,bar - foo
12
+
13
+ mov eax,[baz - $]
14
+ mov ebx,[ebx + baz - $]
15
+ mov esi,[baz - bar]
16
+ mov ecx,baz - $
17
+ mov edx,baz - bar
18
+
19
+ bits 64
20
+ default rel
21
+
22
+ times 16 nop
23
+
24
+ mov eax,[foo]
25
+ mov eax,[foo - $]
26
+ mov eax,[abs foo - $]
27
+ mov ebx,[rbx + foo - $]
28
+ mov ecx,foo - $
29
+ mov edx,foo - bar
30
+
31
+ mov eax,[bar]
32
+ mov eax,[bar - $]
33
+ mov eax,[abs bar - $]
34
+ mov ebx,[rbx + bar - $]
35
+ mov ecx,bar - $
36
+ mov edx,bar - foo
37
+
38
+ mov eax,[baz]
39
+ mov eax,[baz - $]
40
+ mov eax,[abs baz - $]
41
+ mov ebx,[rbx + baz - $]
42
+ mov esi,[baz - bar]
43
+ mov esi,[abs baz - bar]
44
+ mov ecx,baz - $
45
+ mov edx,baz - bar
46
+
47
+ bar: ; Forwards reference
48
+ hlt
49
+
50
+ section ".data"
51
+ baz: ; Other-segment reference
52
+ dd 0
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/perl
2
+ #
3
+ # Generate a test case for label lookup performance
4
+ #
5
+
6
+ ($len) = @ARGV;
7
+ $len = 100000 unless ($len);
8
+
9
+ print "\tbits 32\n";
10
+ print "\tsection .data\n";
11
+ print "\n";
12
+
13
+ for ($i = 0; $i < $len; $i++) {
14
+ print "l$i:\n";
15
+ for ($j = 0; $j < 8; $j++) {
16
+ print "\tdd l", int(rand($i+1)), "\n";
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/perl
2
+ #
3
+ # Generate a test case for macro lookup performance
4
+ #
5
+
6
+ ($len) = @ARGV;
7
+ $len = 100000 unless ($len);
8
+
9
+ print "\tbits 32\n";
10
+ print "\tsection .data\n";
11
+ print "\n";
12
+
13
+ for ($i = 0; $i < $len; $i++) {
14
+ print "%define m$i $i\n";
15
+ for ($j = 0; $j < 8; $j++) {
16
+ print "\tdd m", int(rand($i+1)), "\n";
17
+ }
18
+ }
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/perl
2
+ #
3
+ # Generate a test case for token lookup performance
4
+ #
5
+
6
+ @insns = qw(add sub adc sbb and or xor mov);
7
+ @regs = qw(eax ebx ecx edx esp ebp esi edi);
8
+
9
+ srand(0);
10
+ sub pickone(@) {
11
+ return $_[int(rand(scalar @_))];
12
+ }
13
+
14
+ ($len) = @ARGV;
15
+ $len = 1000000 unless ($len);
16
+
17
+ print "\tbits 32\n";
18
+ print "\n";
19
+
20
+ for ($i = 0; $i < $len; $i++) {
21
+ print "\t", pickone(@insns), " ",
22
+ pickone(@regs), ",", pickone(@regs), "\n";
23
+ }
@@ -0,0 +1,192 @@
1
+ #!/usr/bin/perl
2
+ #Perform tests on nasm
3
+
4
+ use strict;
5
+ use warnings;
6
+
7
+ use Getopt::Long qw(GetOptions);
8
+ use Pod::Usage qw(pod2usage);
9
+
10
+ use File::Basename qw(fileparse);
11
+ use File::Compare qw(compare compare_text);
12
+ use File::Copy qw(move);
13
+ use File::Path qw(mkpath rmtree);
14
+
15
+ #sub debugprint { print (pop() . "\n"); }
16
+ sub debugprint { }
17
+
18
+ my $globalresult = 0;
19
+
20
+ #Process one testfile
21
+ sub perform {
22
+ my ($clean, $diff, $golden, $nasm, $quiet, $testpath) = @_;
23
+ my ($stdoutfile, $stderrfile) = ("stdout", "stderr");
24
+
25
+ my ($testname, $ignoredpath, $ignoredsuffix) = fileparse($testpath, ".asm");
26
+ debugprint $testname;
27
+
28
+ my $outputdir = $golden ? "golden" : "testresults";
29
+
30
+ mkdir "$outputdir" unless -d "$outputdir";
31
+
32
+ if ($clean) {
33
+ rmtree "$outputdir/$testname";
34
+ return;
35
+ }
36
+
37
+ if(-d "$outputdir/$testname") {
38
+ rmtree "$outputdir/$testname";
39
+ }
40
+
41
+ open(TESTFILE, '<', $testpath) or (warn "Can't open $testpath\n", return);
42
+ TEST:
43
+ while(<TESTFILE>) {
44
+ #See if there is a test case
45
+ last unless /Testname=(.*);\s*Arguments=(.*);\s*Files=(.*)/;
46
+ my ($subname, $arguments, $files) = ($1, $2, $3);
47
+ debugprint("$subname | $arguments | $files");
48
+
49
+ #Call nasm with this test case
50
+ system("$nasm $arguments $testpath > $stdoutfile 2> $stderrfile");
51
+ debugprint("$nasm $arguments $testpath > $stdoutfile 2> $stderrfile ----> $?");
52
+
53
+ #Move the output to the test dir
54
+ mkpath("$outputdir/$testname/$subname");
55
+ foreach(split / /,$files) {
56
+ if (-f $_) {
57
+ move($_, "$outputdir/$testname/$subname/$_") or die $!
58
+ }
59
+ }
60
+ unlink ("$stdoutfile", "$stderrfile"); #Just to be sure
61
+
62
+ if($golden) {
63
+ print "Test $testname/$subname created.\n" unless $quiet;
64
+ } else {
65
+ #Compare them with the golden files
66
+ my $result = 0;
67
+ my @failedfiles = ();
68
+ foreach(split / /, $files) {
69
+ if(-f "$outputdir/$testname/$subname/$_") {
70
+ my $temp;
71
+ if($_ eq $stdoutfile or $_ eq $stderrfile) {
72
+ #Compare stdout and stderr in text mode so line ending changes won't matter
73
+ $temp = compare_text("$outputdir/$testname/$subname/$_", "golden/$testname/$subname/$_",
74
+ sub { my ($a, $b) = @_;
75
+ $a =~ s/\r//g;
76
+ $b =~ s/\r//g;
77
+ $a ne $b; } );
78
+ } else {
79
+ $temp = compare("$outputdir/$testname/$subname/$_", "golden/$testname/$subname/$_");
80
+ }
81
+
82
+ if($temp == 1) {
83
+ #different
84
+ $result = 1;
85
+ $globalresult = 1;
86
+ push @failedfiles, $_;
87
+ } elsif($temp == -1) {
88
+ #error
89
+ print "Can't compare at $testname/$subname file $_\n";
90
+ next TEST;
91
+ }
92
+ } elsif (-f "golden/$testname/$subname/$_") {
93
+ #File exists in golden but not in output
94
+ $result = 1;
95
+ $globalresult = 1;
96
+ push @failedfiles, $_;
97
+ }
98
+ }
99
+
100
+ if($result == 0) {
101
+ print "Test $testname/$subname succeeded.\n" unless $quiet;
102
+ } elsif ($result == 1) {
103
+ print "Test $testname/$subname failed on @failedfiles.\n";
104
+ if($diff) {
105
+ for(@failedfiles) {
106
+ if($_ eq $stdoutfile or $_ eq $stderrfile) {
107
+ system "diff -u golden/$testname/$subname/$_ $outputdir/$testname/$subname/$_";
108
+ print "\n";
109
+ }
110
+ }
111
+ }
112
+ } else {
113
+ die "Impossible result";
114
+ }
115
+ }
116
+ }
117
+ close(TESTFILE);
118
+ }
119
+
120
+ my $nasm;
121
+ my $clean = 0;
122
+ my $diff = 0;
123
+ my $golden = 0;
124
+ my $help = 0;
125
+ my $verbose = 0;
126
+
127
+ GetOptions('clean' => \$clean,
128
+ 'diff'=> \$diff,
129
+ 'golden' => \$golden,
130
+ 'help' => \$help,
131
+ 'verbose' => \$verbose,
132
+ 'nasm=s' => \$nasm
133
+ ) or pod2usage();
134
+
135
+ pod2usage() if $help;
136
+ die "Please specify either --nasm or --clean. Use --help for help.\n"
137
+ unless $nasm or $clean;
138
+ die "Please specify the test files, e.g. *.asm\n" unless @ARGV;
139
+
140
+ unless (!defined $nasm or -x $nasm) {
141
+ warn "Warning: $nasm may not be executable. Expect problems.\n\n";
142
+ sleep 5;
143
+ }
144
+
145
+ perform($clean, $diff, $golden, $nasm, ! $verbose, $_) foreach @ARGV;
146
+ exit $globalresult;
147
+
148
+ __END__
149
+
150
+ =head1 NAME
151
+
152
+ performtest.pl - NASM regression tester based on golden files
153
+
154
+ =head1 SYNOPSIS
155
+
156
+ performtest.pl [options] [testfile.asm ...]
157
+
158
+ Runs NASM on the specified test files and compare the results
159
+ with "golden" output files.
160
+
161
+ Options:
162
+ --clean Clean up test results (or golden files with --golden)
163
+ --diff Execute diff when stdout or stderr don't match
164
+ --golden Create golden files
165
+ --help Get this help
166
+ --nasm=file Specify the file name for the NASM executable, e.g. ../nasm
167
+ --verbose Get more output
168
+
169
+ If --clean is not specified, --nasm is required.
170
+
171
+ testfile.asm ...:
172
+ One or more files that NASM should be tested with,
173
+ often *.asm in the test directory.
174
+ It should contain one or more option lines at the start,
175
+ in the following format:
176
+
177
+ ;Testname=<testname>; Arguments=<arguments to nasm>; Files=<output files>
178
+
179
+ If no such lines are found at the start, the file is skipped.
180
+ testname should ideally describe the arguments, eg. unoptimized for -O0.
181
+ arguments can be an optimization level (-O), an output format (-f),
182
+ an output file specifier (-o) etc.
183
+ The output files should be a space seperated list of files that will
184
+ be checked for regressions. This should often be the output file
185
+ and the special files stdout and stderr.
186
+
187
+ Any mismatch could be a regression,
188
+ but it doesn't have to be. COFF files have a timestamp which
189
+ makes this method useless. ELF files have a comment section
190
+ with the current version of NASM, so they will change each version number.
191
+
192
+ =cut