laag-nasm 2.13.03.2

Sign up to get free protection for your applications and to get access to all the features.
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,45 @@
1
+ /* ----------------------------------------------------------------------- *
2
+ *
3
+ * Copyright 1996-2009 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
+ * sync.h header file for sync.c
36
+ */
37
+
38
+ #ifndef NASM_SYNC_H
39
+ #define NASM_SYNC_H
40
+
41
+ void init_sync(void);
42
+ void add_sync(uint64_t position, uint32_t length);
43
+ uint64_t next_sync(uint64_t position, uint32_t *length);
44
+
45
+ #endif
@@ -0,0 +1,86 @@
1
+ #
2
+ # UNIX Makefile for NASM documentation
3
+ #
4
+
5
+ top_srcdir = @top_srcdir@
6
+ srcdir = @srcdir@
7
+ VPATH = @srcdir@
8
+ prefix = @prefix@
9
+ exec_prefix = @exec_prefix@
10
+ bindir = @bindir@
11
+ mandir = @mandir@
12
+ docdir = $(prefix)/doc/nasm
13
+ infodir = @infodir@
14
+ datarootdir = @datarootdir@
15
+
16
+ INSTALL = @INSTALL@
17
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
18
+ INSTALL_DATA = @INSTALL_DATA@
19
+
20
+ PERL = perl -I$(srcdir)
21
+
22
+ PDFOPT = @PDFOPT@
23
+
24
+ RM_F = rm -f
25
+ RM_RF = rm -rf
26
+ CP_F = cp -f
27
+ CP_UF = cp -ufv
28
+
29
+ # Auxiliary files referenced by the HTML files
30
+ HTMLAUX = nasmdoc.css local.css nasmlogw.png
31
+
32
+ SRCS = nasmdoc.src inslist.src changes.src version.src
33
+ OUT = html nasmdoc.txt nasmdoc.pdf
34
+
35
+ .SUFFIXES: .pfa .ph
36
+
37
+ all: $(OUT)
38
+
39
+ inslist.src: inslist.pl ../x86/insns.dat
40
+ $(PERL) $(srcdir)/inslist.pl $(srcdir)/../x86/insns.dat
41
+
42
+ .PHONY: html
43
+ html: $(HTMLAUX)
44
+ mkdir -p html
45
+ for f in $(HTMLAUX); do $(CP_UF) "$(srcdir)/$$f" html/; done
46
+ $(MAKE) html/nasmdoc0.html
47
+
48
+ RDSRC = $(PERL) $(srcdir)/rdsrc.pl -I$(srcdir)/
49
+
50
+ html/nasmdoc0.html: $(SRCS) rdsrc.pl
51
+ $(RM_F) html/*.html
52
+ $(RDSRC) -ohtml html nasmdoc.src
53
+
54
+ nasmdoc.dip: $(SRCS) rdsrc.pl
55
+ $(RDSRC) dip nasmdoc.src
56
+
57
+ nasmdoc.txt: $(SRCS) rdsrc.pl
58
+ $(RDSRC) txt nasmdoc.src
59
+
60
+ version.src: $(top_srcdir)/version.pl $(top_srcdir)/version
61
+ $(PERL) $(top_srcdir)/version.pl docsrc \
62
+ < $(top_srcdir)/version > version.src
63
+
64
+ nasmdoc.ps: nasmdoc.dip genps.pl afmmetrics.ph ttfmetrics.ph \
65
+ pswidth.ph nasmlogo.eps psfonts.ph head.ps
66
+ $(PERL) $(srcdir)/genps.pl -epsdir "$(srcdir)" \
67
+ -headps $(srcdir)/head.ps nasmdoc.dip \
68
+ > nasmdoc.ps
69
+
70
+ nasmdoc.pdf: nasmdoc.ps pspdf.pl
71
+ $(PERL) $(srcdir)/pspdf.pl $(PDFOPT) nasmdoc.ps nasmdoc.pdf
72
+
73
+ clean:
74
+ -$(RM_F) *.rtf *.hpj *.texi *.gid *.ipf *.dip
75
+ -$(RM_F) *.aux *.cp *.fn *.ky *.pg *.log *.toc *.tp *.vr
76
+ -$(RM_F) inslist.src version.src
77
+ -$(RM_F) nasmdoc*.ps
78
+
79
+ spotless: clean
80
+ -$(RM_RF) html info
81
+ -$(RM_F) *.hlp nasmdoc.txt *.inf *.pdf *.dvi
82
+
83
+ install: all
84
+ mkdir -p $(INSTALLROOT)$(docdir)/html
85
+ $(INSTALL_DATA) html/* $(INSTALLROOT)$(docdir)/html
86
+ $(INSTALL_DATA) nasmdoc.pdf nasmdoc.txt $(INSTALLROOT)$(docdir)
@@ -0,0 +1,20 @@
1
+ To build the entire documentation, the following tools are needed:
2
+
3
+ 1. A Perl interpreter for your platform
4
+ 2. The following Perl modules available from CPAN:
5
+ Font::TTF
6
+ Sort::Versions
7
+ 3. asciidoc
8
+ http://asciidoc.org/
9
+ 4. xmlto
10
+ https://fedorahosted.org/xmlto
11
+ 5. One of:
12
+ Adobe Acrobat (acrodist)
13
+ Ghostscript (ps2pdf) http://download.ghostscript.com/
14
+ pstopdf (available on some BSD-derived Unix systems)
15
+
16
+ Of these, Ghostscript is the most tested, although Acrobat has
17
+ been claimed to generate smaller files.
18
+ 6. For best results, the Adobe fonts Source Sans Pro and Source Code
19
+ Pro, available for free at:
20
+ https://github.com/adobe-fonts
@@ -0,0 +1,102 @@
1
+ #!/usr/bin/perl
2
+ ## --------------------------------------------------------------------------
3
+ ##
4
+ ## Copyright 1996-2017 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
+ # Parse AFM metric file, returns a reference to fontdata
37
+ #
38
+ sub parse_afm_file($$) {
39
+ my($filename, $filetype) = @_;
40
+
41
+ my $fontdata = {
42
+ widths => {},
43
+ kern => {}
44
+ };
45
+
46
+ my $charmetrics = 0;
47
+ my $kerndata = 0;
48
+ my $charcode, $width, $name;
49
+
50
+ my $fontfile = $filename.'.'.$filetype;
51
+ return undef unless ( -f $fontfile );
52
+
53
+ $fontdata->{file} = $fontfile;
54
+ $fontdata->{type} = $filetype;
55
+ $fontdata->{scale} = 1000; # AFM metrics always have scale 1000
56
+
57
+ return undef unless (open(my $fh, '<', $filename.'.afm'));
58
+
59
+ while ( my $line = <$fh> ) {
60
+ if ( $line =~ /^\s*FontName\s+(.*)\s*$/i ) {
61
+ $fontdata->{'name'} = $1;
62
+ } elsif ( $line =~ /^\s*StartCharMetrics\b/i ) {
63
+ $charmetrics = 1;
64
+ } elsif ( $line =~ /^\s*EndCharMetrics\b/i ) {
65
+ $charmetrics = 0;
66
+ } elsif ( $line =~ /^\s*StartKernPairs\b/i ) {
67
+ $kerndata = 1;
68
+ } elsif ( $line =~ /^\s*EndKernPairs\b/i ) {
69
+ $kerndata = 0;
70
+ } elsif ( $charmetrics ) {
71
+ my @data = split(/\s*;\s*/, $line);
72
+ undef $charcode, $width, $name;
73
+ foreach my $d ( @data ) {
74
+ my @dd = split(/\s+/, $d);
75
+ if ( $dd[0] eq 'C' ) {
76
+ $charcode = $dd[1];
77
+ } elsif ( $dd[0] eq 'WX' ) {
78
+ $width = $dd[1];
79
+ } elsif ( $dd[0] eq 'W' ) {
80
+ $width = $dd[2];
81
+ } elsif ( $dd[0] eq 'N' ) {
82
+ $name = $dd[1];
83
+ }
84
+ }
85
+ if ( defined($name) && defined($width) ) {
86
+ $fontdata->{widths}{$name} = $width;
87
+ }
88
+ } elsif ( $kerndata ) {
89
+ my($kpx, $a, $b, $adj) = split(/\s+/, $line);
90
+ if ( $kpx eq 'KPX' ) {
91
+ if (!exists($fontdata->{kern}{$a})) {
92
+ $fontdata->{kern}{$a} = {};
93
+ }
94
+ $fontdata->{kern}{$a}{$b} = $adj;
95
+ }
96
+ }
97
+ }
98
+
99
+ return $fontdata;
100
+ }
101
+
102
+ 1;
@@ -0,0 +1,2588 @@
1
+ \#
2
+ \# NASM revision history in nasmdoc format
3
+ \#
4
+
5
+ \H{cl-2.xx} NASM 2 Series
6
+
7
+ The NASM 2 series supports x86-64, and is the production version of NASM
8
+ since 2007.
9
+
10
+ \S{cl-2.13.03} Version 2.13.03
11
+
12
+ \b Added AVX and AVX512 \c{VAES*} and \c{VPCLMULQDQ} instructions.
13
+
14
+ \b Fixed missing dwarf record in x32 ELF output format.
15
+
16
+ \S{cl-2.13.02} Version 2.13.02
17
+
18
+ \b Fix false positive in testing of numeric overflows.
19
+
20
+ \b Fix generation of \c{PEXTRW} instruction.
21
+
22
+ \b Fix \c{smartalign} package which could trigger an error during
23
+ optimization if the alignment code expanded too much due to
24
+ optimization of the previous code.
25
+
26
+ \b Fix a case where negative value in \c{TIMES} directive causes
27
+ panic instead of an error.
28
+
29
+ \b Always finalize \c{.debug_abbrev} section with a null in
30
+ \c{dwarf} output format.
31
+
32
+ \b Support \c{debug} flag in section attributes for \c{macho}
33
+ output format. See \k{machosect}.
34
+
35
+ \b Support up to 16 characters in section names for \c{macho}
36
+ output format.
37
+
38
+ \b Fix missing update of global \c{BITS} setting if \c{SECTION}
39
+ directive specified a bit size using output format-specific
40
+ extensions (e.g. \c{USE32} for the \c{obj} output format.)
41
+
42
+ \b Fix the incorrect generation of VEX-encoded instruction when static
43
+ mode decorators are specified on scalar instructions, losing the
44
+ decorators as they require EVEX encoding.
45
+
46
+ \b Option \c{-MW} to quote dependency outputs according to Watcom
47
+ Make conventions instead of POSIX Make conventions. See \k{opt-MW}.
48
+
49
+ \b The \c{obj} output format now contains embedded dependency file
50
+ information, unless disabled with \c{%pragma obj nodepend}. See
51
+ \k{objdepend}.
52
+
53
+ \b Fix generation of dependency lists.
54
+
55
+ \b Fix a number of null pointer reference and memory allocation errors.
56
+
57
+ \b Always generate symbol-relative relocations for the \c{macho64}
58
+ output format; at least some versions of the XCode/LLVM linker fails
59
+ for section-relative relocations.
60
+
61
+ \S{cl-2.13.01} Version 2.13.01
62
+
63
+ \b Fix incorrect output for some types of \c{FAR} or \c{SEG}
64
+ references in the \c{obj} output format, and possibly other 16-bit
65
+ output formats.
66
+
67
+ \b Fix the address in the list file for an instruction containing a
68
+ \c{TIMES} directive.
69
+
70
+ \b Fix error with \c{TIMES} used together with an instruction which
71
+ can vary in size, e.g. \c{JMP}.
72
+
73
+ \b Fix breakage on some uses of the \c{DZ} pseudo-op.
74
+
75
+ \S{cl-2.13} Version 2.13
76
+
77
+ \b Support the official forms of the \c{UD0} and \c{UD1} instructions.
78
+
79
+ \b Allow self-segment-relative expressions in immediates and
80
+ displacements, even when combined with an external or otherwise
81
+ out-of-segment special symbol, e.g.:
82
+
83
+ \c extern foo
84
+ \c mov eax,[foo - $ + ebx] ; Now legal
85
+
86
+ \b Handle a 64-bit origin in NDISASM.
87
+
88
+ \b NASM can now generate sparse output files for relevant output
89
+ formats, if the underlying operating system supports them.
90
+
91
+ \b The \c{macho} object format now supports the \c{subsections_via_symbols}
92
+ and \c{no_dead_strip} directives, see \k{macho-ssvs}.
93
+
94
+ \b The \c{macho} object format now supports the \c{no_dead_strip},
95
+ \c{live_support} and \c{strip_static_syms} section flags, see
96
+ \k{machosect}.
97
+
98
+ \b The \c{macho} object format now supports the \c{dwarf} debugging
99
+ format, as required by newer toolchains.
100
+
101
+ \b All warnings can now be suppressed if desired; warnings not
102
+ otherwise part of any warning class are now considered its own
103
+ warning class called \c{other} (e.g. \c{-w-other}). Furthermore,
104
+ warning-as-error can now be controlled on a per warning class
105
+ basis, using the syntax \c{-w+error=}\e{warning-class} and its
106
+ equivalent for all other warning control options. See \k{opt-w}
107
+ for the command-line options and warning classes and
108
+ \k{asmdir-warning} for the \c{[WARNING]} directive.
109
+
110
+ \b Fix a number of bugs related to AVX-512 decorators.
111
+
112
+ \b Significant improvements to building NASM with Microsoft Visual
113
+ Studio via \c{Mkfiles/msvc.mak}. It is now possible to build the
114
+ full Windows installer binary as long as the necessary
115
+ prerequisites are installed; see \c{Mkfiles/README}
116
+
117
+ \b To build NASM with custom modifications (table changes) or from the
118
+ git tree now requires Perl 5.8 at the very minimum, quite possibly
119
+ a higher version (Perl 5.24.1 tested.) There is no requirement to
120
+ have Perl on your system at all if all you want to do is build
121
+ unmodified NASM from source archives.
122
+
123
+ \b Fix the \c{\{z\}} decorator on AVX-512 \c{VMOVDQ*} instructions.
124
+
125
+ \b Add new warnings for certain dangerous constructs which never ought
126
+ to have been allowed. In particular, the \c{RESB} family of
127
+ instructions should have been taking a critical expression all
128
+ along.
129
+
130
+ \b Fix the EVEX (AVX-512) versions of the \c{VPBROADCAST}, \c{VPEXTR},
131
+ and \c{VPINSR} instructions.
132
+
133
+ \b Support contracted forms of additional instructions. As a general
134
+ rule, if an instruction has a non-destructive source immediately
135
+ after a destination register that isn't used as an input, NASM
136
+ supports omitting that source register, using the destination
137
+ register as that value. This among other things makes it easier to
138
+ convert SSE code to the equivalent AVX code:
139
+
140
+ \c addps xmm1,xmm0 ; SSE instruction
141
+ \c vaddps ymm1,ymm1,ymm0 ; AVX official long form
142
+ \c vaddps ymm1,ymm0 ; AVX contracted form
143
+
144
+ \b Fix Codeview malformed compiler version record.
145
+
146
+ \b Add the \c{CLWB} and \c{PCOMMIT} instructions. Note that the
147
+ \c{PCOMMIT} instruction has been deprecated and will never be
148
+ included in a shipping product; it is included for completeness
149
+ only.
150
+
151
+ \b Add the \c{%pragma} preprocessor directive for soft-error directives.
152
+
153
+ \b Add the \c{RDPID} instruction.
154
+
155
+ \S{cl-2.12.02} Version 2.12.02
156
+
157
+ \b Fix preprocessor errors, especially \c{%error} and \c{%warning},
158
+ inside \c{%if} statements.
159
+
160
+ \b Fix relative relocations in 32-bit Mach-O.
161
+
162
+ \b More Codeview debug format fixes.
163
+
164
+ \b If the MASM \c{PTR} keyword is encountered, issue a warning. This is
165
+ much more likely to indicate a MASM-ism encountered in NASM than it
166
+ is a valid label. This warning can be suppressed with \c{-w-ptr},
167
+ the \c{[warning]} directive (see \k{opt-w}) or by the macro
168
+ definition \c{%idefine ptr $%?} (see \k{selfref%?}).
169
+
170
+ \b When an error or a warning comes from the expansion of a multi-line
171
+ macro, display the file and line numbers for the expanded macros.
172
+ Macros defined with \c{.nolist} do not get displayed.
173
+
174
+ \b Add macros \c{ilog2fw()} and \c{ilog2cw()} to the \c{ifunc} macro
175
+ package. See \k{ilog2}.
176
+
177
+
178
+ \S{cl-2.12.01} Version 2.12.01
179
+
180
+ \b Portability fixes for some platforms.
181
+
182
+ \b Fix error when not specifying a list file.
183
+
184
+ \b Correct the handling of macro-local labels in the Codeview
185
+ debugging format.
186
+
187
+ \b Add \c{CLZERO}, \c{MONITORX} and \c{MWAITX} instructions.
188
+
189
+
190
+ \S{cl-2.12} Version 2.12
191
+
192
+ \b Major fixes to the \c{macho} backend (\k{machofmt}); earlier versions
193
+ would produce invalid symbols and relocations on a regular basis.
194
+
195
+ \b Support for thread-local storage in Mach-O.
196
+
197
+ \b Support for arbitrary sections in Mach-O.
198
+
199
+ \b Fix wrong negative size treated as a big positive value passed into
200
+ backend causing NASM to crash.
201
+
202
+ \b Fix handling of zero-extending unsigned relocations, we have been printing
203
+ wrong message and forgot to assign segment with predefined value before
204
+ passing it into output format.
205
+
206
+ \b Fix potential write of oversized (with size greater than allowed in
207
+ output format) relative relocations.
208
+
209
+ \b Portability fixes for building NASM with the LLVM compiler.
210
+
211
+ \b Add support of Codeview version 8 (\c{cv8}) debug format for
212
+ \c{win32} and \c{win64} formats in the \c{COFF} backend,
213
+ see \k{codeview}.
214
+
215
+ \b Allow 64-bit outputs in 16/32-bit only backends. Unsigned 64-bit
216
+ relocations are zero-extended from 32-bits with a warning
217
+ (suppressible via \c{-w-zext-reloc}); signed 64-bit relocations are
218
+ an error.
219
+
220
+ \b Line numbers in list files now correspond to the lines in the source
221
+ files, instead of simply being sequential.
222
+
223
+ \b There is now an official 64-bit (x64 a.k.a. x86-64) build for Windows.
224
+
225
+
226
+ \S{cl-2.11.09} Version 2.11.09
227
+
228
+ \b Fix potential stack overwrite in \c{macho32} backend.
229
+
230
+ \b Fix relocation records in \c{macho64} backend.
231
+
232
+ \b Fix symbol lookup computation in \c{macho64} backend.
233
+
234
+ \b Adjust \c{.symtab} and \c{.rela.text} sections alignments to 8 bytes
235
+ in \c{elf64} backed.
236
+
237
+ \b Fix section length computation in \c{bin} backend which leaded in incorrect
238
+ relocation records.
239
+
240
+ \S{cl-2.11.08} Version 2.11.08
241
+
242
+ \b Fix section length computation in \c{bin} backend which leaded in incorrect
243
+ relocation records.
244
+
245
+ \b Add a warning for numeric preprocessor definitions passed via command
246
+ line which might have unexpected results otherwise.
247
+
248
+ \b Add ability to specify a module name record in \c{rdoff} linker with
249
+ \c{-mn} option.
250
+
251
+ \b Increase label length capacity up to 256 bytes in \c{rdoff} backend for
252
+ FreePascal sake, which tends to generate very long labels for procedures.
253
+
254
+ \b Fix segmentation failure when rip addressing is used in \c{macho64} backend.
255
+
256
+ \b Fix access on out of memory when handling strings with a single
257
+ grave. We have sixed similar problem in previous release but not
258
+ all cases were covered.
259
+
260
+ \b Fix NULL dereference in disassembled on \c{BND} instruction.
261
+
262
+ \S{cl-2.11.07} Version 2.11.07
263
+
264
+ \b Fix 256 bit \c{VMOVNTPS} instruction.
265
+
266
+ \b Fix \c{-MD} option handling, which was rather broken in previous
267
+ release changing command line api.
268
+
269
+ \b Fix access to unitialized space when handling strings with
270
+ a single grave.
271
+
272
+ \b Fix nil dereference in handling memory reference parsing.
273
+
274
+ \S{cl-2.11.06} Version 2.11.06
275
+
276
+ \b Update AVX512 instructions based on the Extension Reference (319433-021 Sept
277
+ 2014).
278
+
279
+ \b Fix the behavior of \c{-MF} and \c{-MD} options (Bugzilla 3392280)
280
+
281
+ \b Updated Win32 Makefile to fix issue with build
282
+
283
+ \S{cl-2.11.05} Version 2.11.05
284
+
285
+ \b Add \c{--v} as an alias for \c{-v} (see \k{opt-v}), for
286
+ command-line compatibility with Yasm.
287
+
288
+ \b Fix a bug introduced in 2.11.03 whereby certain instructions would
289
+ contain multiple REX prefixes, and thus be corrupt.
290
+
291
+ \S{cl-2.11.04} Version 2.11.04
292
+
293
+ \b Removed an invalid error checking code. Sometimes a memref only with
294
+ a displacement can also set an evex flag. For example:
295
+
296
+ \c vmovdqu32 [0xabcd]{k1}, zmm0
297
+
298
+ \b Fixed a bug in disassembler that EVEX.L'L vector length was not matched
299
+ when EVEX.b was set because it was simply considered as EVEC.RC.
300
+ Separated EVEX.L'L case from EVEX.RC which is ignored in matching.
301
+
302
+ \S{cl-2.11.03} Version 2.11.03
303
+
304
+ \b Fix a bug there REX prefixes were missing on instructions inside a
305
+ \c{TIMES} statement.
306
+
307
+ \S{cl-2.11.02} Version 2.11.02
308
+
309
+ \b Add the \c{XSAVEC}, \c{XSAVES} and \c{XRSTORS} family instructions.
310
+
311
+ \b Add the \c{CLFLUSHOPT} instruction.
312
+
313
+ \S{cl-2.11.01} Version 2.11.01
314
+
315
+ \b Allow instructions which implicitly uses \c{XMM0} (\c{VBLENDVPD},
316
+ \c{VBLENDVPS}, \c{PBLENDVB} and \c{SHA256RNDS2}) to be specified
317
+ without an explicit \c{xmm0} on the assembly line. In other words,
318
+ the following two lines produce the same output:
319
+
320
+ \c vblendvpd xmm2,xmm1,xmm0 ; Last operand is fixed xmm0
321
+ \c vblendvpd xmm2,xmm1 ; Implicit xmm0 omitted
322
+
323
+ \b In the ELF backends, don't crash the assembler if \c{section align}
324
+ is specified without a value.
325
+
326
+ \S{cl-2.11} Version 2.11
327
+
328
+ \b Add support for the Intel AVX-512 instruction set:
329
+
330
+ \b 16 new, 512-bit SIMD registers. Total 32 \c{(ZMM0 ~ ZMM31)}
331
+
332
+ \b 8 new opmask registers \c{(K0 ~ K7)}. One of 7 registers \c{(K1 ~ K7)} can
333
+ be used as an opmask for conditional execution.
334
+
335
+ \b A new EVEX encoding prefix. EVEX is based on VEX and provides more
336
+ capabilities: opmasks, broadcasting, embedded rounding and compressed
337
+ displacements.
338
+
339
+ \c - opmask
340
+ \c VDIVPD zmm0{k1}{z}, zmm1, zmm3 ; conditional vector operation
341
+ \c ; using opmask k1.
342
+ \c ; {z} is for zero-masking
343
+ \c - broadcasting
344
+ \c VDIVPS zmm4, zmm5, [rbx]{1to16} ; load single-precision float and
345
+ \c ; replicate it 16 times. 32 * 16 = 512
346
+ \c - embedded rounding
347
+ \c VCVTSI2SD xmm6, xmm7, {rz-sae}, rax ; round toward zero. note that it
348
+ \c ; is used as if a separate operand.
349
+ \c ; it comes after the last SIMD operand
350
+
351
+ \b Add support for \c{ZWORD} (512 bits), \c{DZ} and \c{RESZ}.
352
+
353
+ \b Add support for the MPX and SHA instruction sets.
354
+
355
+ \b Better handling of section redefinition.
356
+
357
+ \b Generate manpages when running \c{'make dist'}.
358
+
359
+ \b Handle all token chains in mmacro params range.
360
+
361
+ \b Support split [base,index] effective address:
362
+
363
+ \c mov eax,[eax+8,ecx*4] ; eax=base, ecx=index, 4=scale, 8=disp
364
+
365
+ This is expected to be most useful for the MPX instructions.
366
+
367
+ \b Support \c{BND} prefix for branch instructions (for MPX).
368
+
369
+ \b The \c{DEFAULT} directive can now take \c{BND} and \c{NOBND}
370
+ options to indicate whether all relevant branches should be getting
371
+ \c{BND} prefixes. This is expected to be the normal for use in MPX
372
+ code.
373
+
374
+ \b Add \c{{evex}}, \c{{vex3}} and \c{{vex2}} instruction prefixes to
375
+ have NASM encode the corresponding instruction, if possible, with an EVEX,
376
+ 3-byte VEX, or 2-byte VEX prefix, respectively.
377
+
378
+ \b Support for section names longer than 8 bytes in Win32/Win64 COFF.
379
+
380
+ \b The \c{NOSPLIT} directive by itself no longer forces a single
381
+ register to become an index register, unless it has an explicit
382
+ multiplier.
383
+
384
+ \c mov eax,[nosplit eax] ; eax as base register
385
+ \c mov eax,[nosplit eax*1] ; eax as index register
386
+
387
+ \S{cl-2.10.09} Version 2.10.09
388
+
389
+ \b Pregenerate man pages.
390
+
391
+ \S{cl-2.10.08} Version 2.10.08
392
+
393
+ \b Fix \c{VMOVNTDQA}, \c{MOVNTDQA} and \c{MOVLPD} instructions.
394
+
395
+ \b Fix collision for \c{VGATHERQPS}, \c{VPGATHERQD} instructions.
396
+
397
+ \b Fix \c{VPMOVSXBQ}, \c{VGATHERQPD}, \c{VSPLLW} instructions.
398
+
399
+ \b Add a bunch of AMD TBM instructions.
400
+
401
+ \b Fix potential stack overwrite in numbers conversion.
402
+
403
+ \b Allow byte size in \c{PREFETCHTx} instructions.
404
+
405
+ \b Make manual pages up to date.
406
+
407
+ \b Make \c{F3} and \c{F2} SSE prefixes to override \c{66}.
408
+
409
+ \b Support of AMD SVM instructions in 32 bit mode.
410
+
411
+ \b Fix near offsets code generation for \c{JMP}, \c{CALL} instrictions
412
+ in long mode.
413
+
414
+ \b Fix preprocessor parse regression when id is expanding to a whitespace.
415
+
416
+ \S{cl-2.10.07} Version 2.10.07
417
+
418
+ \b Fix line continuation parsing being broken in previous version.
419
+
420
+ \S{cl-2.10.06} Version 2.10.06
421
+
422
+ \b Always quote the dependency source names when using the automatic
423
+ dependency generation options.
424
+
425
+ \b If no dependency target name is specified via the \c{-MT} or
426
+ \c{-MQ} options, quote the default output name.
427
+
428
+ \b Fix assembly of shift operations in \c{CPU 8086} mode.
429
+
430
+ \b Fix incorrect generation of explicit immediate byte for shift by 1
431
+ under certain circumstances.
432
+
433
+ \b Fix assembly of the \c{VPCMPGTQ} instruction.
434
+
435
+ \b Fix RIP-relative relocations in the \c{macho64} backend.
436
+
437
+ \S{cl-2.10.05} Version 2.10.05
438
+
439
+ \b Add the \c{CLAC} and \c{STAC} instructions.
440
+
441
+ \S{cl-2.10.04} Version 2.10.04
442
+
443
+ \b Add back the inadvertently deleted 256-bit version of the \c{VORPD}
444
+ instruction.
445
+
446
+ \b Correct disassembly of instructions starting with byte \c{82} hex.
447
+
448
+ \b Fix corner cases in token pasting, for example:
449
+
450
+ \c %define N 1e%++%+ 5
451
+ \c dd N, 1e+5
452
+
453
+ \S{cl-2.10.03} Version 2.10.03
454
+
455
+ \b Correct the assembly of the instruction:
456
+
457
+ \c XRELEASE MOV [absolute],AL
458
+
459
+ \> Previous versions would incorrectly generate \c{F3 A2} for this
460
+ instruction and issue a warning; correct behavior is to emit \c{F3 88
461
+ 05}.
462
+
463
+ \S{cl-2.10.02} Version 2.10.02
464
+
465
+ \b Add the \c{ifunc} macro package with integer functions, currently
466
+ only integer logarithms. See \k{pkg_ifunc}.
467
+
468
+ \b Add the \c{RDSEED}, \c{ADCX} and \c{ADOX} instructions.
469
+
470
+ \S{cl-2.10.01} Version 2.10.01
471
+
472
+ \b Add missing VPMOVMSKB instruction with reg32, ymmreg operands.
473
+
474
+ \S{cl-2.10} Version 2.10
475
+
476
+ \b When optimization is enabled, \c{mov r64,imm} now optimizes to the
477
+ shortest form possible between:
478
+
479
+ \c mov r32,imm32 ; 5 bytes
480
+ \c mov r64,imm32 ; 7 bytes
481
+ \c mov r64,imm64 ; 10 bytes
482
+
483
+ \> To force a specific form, use the \c{STRICT} keyword, see \k{strict}.
484
+
485
+ \b Add support for the Intel AVX2 instruction set.
486
+
487
+ \b Add support for Bit Manipulation Instructions 1 and 2.
488
+
489
+ \b Add support for Intel Transactional Synchronization Extensions (TSX).
490
+
491
+ \b Add support for x32 ELF (32-bit ELF with the CPU in 64-bit mode.)
492
+ See \k{elffmt}.
493
+
494
+ \b Add support for bigendian UTF-16 and UTF-32. See \k{unicode}.
495
+
496
+ \S{cl-2.09.10} Version 2.09.10
497
+
498
+ \b Fix up NSIS script to protect uninstaller against registry keys
499
+ absence or corruption. It brings in a few additional questions
500
+ to a user during deinstallation procedure but still it is better
501
+ than unpredictable file removal.
502
+
503
+ \S{cl-2.09.09} Version 2.09.09
504
+
505
+ \b Fix initialization of section attributes of \c{bin} output format.
506
+
507
+ \b Fix \c{mach64} output format bug that crashes NASM due to NULL symbols.
508
+
509
+
510
+ \S{cl-2.09.08} Version 2.09.08
511
+
512
+ \b Fix \c{__OUTPUT_FORMAT__} assignment when output driver alias
513
+ is used. For example when \c{-f elf} is used \c{__OUTPUT_FORMAT__}
514
+ must be set to \c{elf}, if \c{-f elf32} is used \c{__OUTPUT_FORMAT__}
515
+ must be assigned accordingly, i.e. to \c{elf32}. The rule applies to
516
+ all output driver aliases. See \k{ofmtm}.
517
+
518
+
519
+ \S{cl-2.09.07} Version 2.09.07
520
+
521
+ \b Fix attempts to close same file several times
522
+ when \c{-a} option is used.
523
+
524
+ \b Fixes for VEXTRACTF128, VMASKMOVPS encoding.
525
+
526
+
527
+ \S{cl-2.09.06} Version 2.09.06
528
+
529
+ \b Fix missed section attribute initialization in \c{bin} output target.
530
+
531
+
532
+ \S{cl-2.09.05} Version 2.09.05
533
+
534
+ \b Fix arguments encoding for VPEXTRW instruction.
535
+
536
+ \b Remove invalid form of VPEXTRW instruction.
537
+
538
+ \b Add \c{VLDDQU} as alias for \c{VLDQQU} to
539
+ match specification.
540
+
541
+
542
+ \S{cl-2.09.04} Version 2.09.04
543
+
544
+ \b Fix incorrect labels offset for VEX intructions.
545
+
546
+ \b Eliminate bogus warning on implicit operand size override.
547
+
548
+ \b \c{%if} term could not handle 64 bit numbers.
549
+
550
+ \b The COFF backend was limiting relocations number to 16 bits even if
551
+ in real there were a way more relocations.
552
+
553
+
554
+ \S{cl-2.09.03} Version 2.09.03
555
+
556
+ \b Print \c{%macro} name inside \c{%rep} blocks on error.
557
+
558
+ \b Fix preprocessor expansion behaviour. It happened sometime
559
+ too early and sometime simply wrong. Move behaviour back to
560
+ the origins (down to NASM 2.05.01).
561
+
562
+ \b Fix unitialized data dereference on OMF output format.
563
+
564
+ \b Issue warning on unterminated \c{%{} construct.
565
+
566
+ \b Fix for documentation typo.
567
+
568
+
569
+ \S{cl-2.09.02} Version 2.09.02
570
+
571
+ \b Fix reversed tokens when \c{%deftok} produces more than one output token.
572
+
573
+ \b Fix segmentation fault on disassembling some VEX instructions.
574
+
575
+ \b Missing \c{%endif} did not always cause error.
576
+
577
+ \b Fix typo in documentation.
578
+
579
+ \b Compound context local preprocessor single line macro identifiers
580
+ were not expanded early enough and as result lead to unresolved
581
+ symbols.
582
+
583
+
584
+ \S{cl-2.09.01} Version 2.09.01
585
+
586
+ \b Fix NULL dereference on missed %deftok second parameter.
587
+
588
+ \b Fix NULL dereference on invalid %substr parameters.
589
+
590
+
591
+ \S{cl-2.09} Version 2.09
592
+
593
+ \b Fixed assignment the magnitude of \c{%rep} counter. It is limited
594
+ to 62 bits now.
595
+
596
+ \b Fixed NULL dereference if argument of \c{%strlen} resolves
597
+ to whitespace. For example if nonexistent macro parameter is used.
598
+
599
+ \b \c{%ifenv}, \c{%elifenv}, \c{%ifnenv}, and \c{%elifnenv} directives
600
+ introduced. See \k{ifenv}.
601
+
602
+ \b Fixed NULL dereference if environment variable is missed.
603
+
604
+ \b Updates of new AVX v7 Intel instructions.
605
+
606
+ \b \c{PUSH imm32} is now officially documented.
607
+
608
+ \b Fix for encoding the LFS, LGS and LSS in 64-bit mode.
609
+
610
+ \b Fixes for compatibility with OpenWatcom compiler and DOS 8.3 file
611
+ format limitation.
612
+
613
+ \b Macros parameters range expansion introduced. See \k{mlmacrange}.
614
+
615
+ \b Backward compatibility on expanging of local sigle macros restored.
616
+
617
+ \b 8 bit relocations for \c{elf} and \c{bin} output formats are introduced.
618
+
619
+ \b Short intersegment jumps are permitted now.
620
+
621
+ \b An alignment more than 64 bytes are allowed for \c{win32},
622
+ \c{win64} output formats.
623
+
624
+ \b \c{SECTALIGN} directive introduced. See \k{sectalign}.
625
+
626
+ \b \c{nojmp} option introduced in \c{smartalign} package. See
627
+ \k{pkg_smartalign}.
628
+
629
+ \b Short aliases \c{win}, \c{elf} and \c{macho} for output formats are
630
+ introduced. Each stands for \c{win32}, \c{elf32} and \c{macho32}
631
+ accordingly.
632
+
633
+ \b Faster handling of missing directives implemented.
634
+
635
+ \b Various small improvements in documentation.
636
+
637
+ \b No hang anymore if unable to open malloc.log file.
638
+
639
+ \b The environments without vsnprintf function are able to build nasm again.
640
+
641
+ \b AMD LWP instructions updated.
642
+
643
+ \b Tighten EA checks. We warn a user if there overflow in EA addressing.
644
+
645
+ \b Make \c{-Ox} the default optimization level. For the legacy
646
+ behavior, specify \c{-O0} explicitly. See \k{opt-O}.
647
+
648
+ \b Environment variables read with \c{%!} or tested with \c{%ifenv}
649
+ can now contain non-identifier characters if surrounded by quotes.
650
+ See \k{getenv}.
651
+
652
+ \b Add a new standard macro package \c{%use fp} for floating-point
653
+ convenience macros. See \k{pkg_fp}.
654
+
655
+
656
+ \S{cl-2.08.02} Version 2.08.02
657
+
658
+ \b Fix crash under certain circumstances when using the \c{%+} operator.
659
+
660
+
661
+ \S{cl-2.08.01} Version 2.08.01
662
+
663
+ \b Fix the \c{%use} statement, which was broken in 2.08.
664
+
665
+
666
+ \S{cl-2.08} Version 2.08
667
+
668
+ \b A number of enhancements/fixes in macros area.
669
+
670
+ \b Support for converting strings to tokens. See \k{deftok}.
671
+
672
+ \b Fuzzy operand size logic introduced.
673
+
674
+ \b Fix COFF stack overrun on too long export identifiers.
675
+
676
+ \b Fix Macho-O alignment bug.
677
+
678
+ \b Fix crashes with -fwin32 on file with many exports.
679
+
680
+ \b Fix stack overrun for too long [DEBUG id].
681
+
682
+ \b Fix incorrect sbyte usage in IMUL (hit only if optimization
683
+ flag passed).
684
+
685
+ \b Append ending token for \c{.stabs} records in the ELF output format.
686
+
687
+ \b New NSIS script which uses ModernUI and MultiUser approach.
688
+
689
+ \b Visual Studio 2008 NASM integration (rules file).
690
+
691
+ \b Warn a user if a constant is too long (and as result will be stripped).
692
+
693
+ \b The obsoleted pre-XOP AMD SSE5 instruction set which was never actualized
694
+ was removed.
695
+
696
+ \b Fix stack overrun on too long error file name passed from the command line.
697
+
698
+ \b Bind symbols to the .text section by default (ie in case if SECTION
699
+ directive was omitted) in the ELF output format.
700
+
701
+ \b Fix sync points array index wrapping.
702
+
703
+ \b A few fixes for FMA4 and XOP instruction templates.
704
+
705
+ \b Add AMD Lightweight Profiling (LWP) instructions.
706
+
707
+ \b Fix the offset for \c{%arg} in 64-bit mode.
708
+
709
+ \b An undefined local macro (\c{%$}) no longer matches a global macro
710
+ with the same name.
711
+
712
+ \b Fix NULL dereference on too long local labels.
713
+
714
+
715
+ \S{cl-2.07} Version 2.07
716
+
717
+ \b NASM is now under the 2-clause BSD license. See \k{legal}.
718
+
719
+ \b Fix the section type for the \c{.strtab} section in the \c{elf64}
720
+ output format.
721
+
722
+ \b Fix the handling of \c{COMMON} directives in the \c{obj} output format.
723
+
724
+ \b New \c{ith} and \c{srec} output formats; these are variants of the
725
+ \c{bin} output format which output Intel hex and Motorola S-records,
726
+ respectively. See \k{ithfmt} and \k{srecfmt}.
727
+
728
+ \b \c{rdf2ihx} replaced with an enhanced \c{rdf2bin}, which can output
729
+ binary, COM, Intel hex or Motorola S-records.
730
+
731
+ \b The Windows installer now puts the NASM directory first in the
732
+ \c{PATH} of the "NASM Shell".
733
+
734
+ \b Revert the early expansion behavior of \c{%+} to pre-2.06 behavior:
735
+ \c{%+} is only expanded late.
736
+
737
+ \b Yet another Mach-O alignment fix.
738
+
739
+ \b Don't delete the list file on errors. Also, include error and
740
+ warning information in the list file.
741
+
742
+ \b Support for 64-bit Mach-O output, see \k{machofmt}.
743
+
744
+ \b Fix assert failure on certain operations that involve strings with
745
+ high-bit bytes.
746
+
747
+
748
+ \S{cl-2.06} Version 2.06
749
+
750
+ \b This release is dedicated to the memory of Charles A. Crayne, long
751
+ time NASM developer as well as moderator of \c{comp.lang.asm.x86} and
752
+ author of the book \e{Serious Assembler}. We miss you, Chuck.
753
+
754
+ \b Support for indirect macro expansion (\c{%[...]}). See \k{indmacro}.
755
+
756
+ \b \c{%pop} can now take an argument, see \k{pushpop}.
757
+
758
+ \b The argument to \c{%use} is no longer macro-expanded. Use
759
+ \c{%[...]} if macro expansion is desired.
760
+
761
+ \b Support for thread-local storage in ELF32 and ELF64. See \k{elftls}.
762
+
763
+ \b Fix crash on \c{%ifmacro} without an argument.
764
+
765
+ \b Correct the arguments to the \c{POPCNT} instruction.
766
+
767
+ \b Fix section alignment in the Mach-O format.
768
+
769
+ \b Update AVX support to version 5 of the Intel specification.
770
+
771
+ \b Fix the handling of accesses to context-local macros from higher
772
+ levels in the context stack.
773
+
774
+ \b Treat \c{WAIT} as a prefix rather than as an instruction, thereby
775
+ allowing constructs like \c{O16 FSAVE} to work correctly.
776
+
777
+ \b Support for structures with a non-zero base offset. See \k{struc}.
778
+
779
+ \b Correctly handle preprocessor token concatenation (see \k{concat})
780
+ involving floating-point numbers.
781
+
782
+ \b The \c{PINSR} series of instructions have been corrected and
783
+ rationalized.
784
+
785
+ \b Removed AMD SSE5, replaced with the new XOP/FMA4/CVT16 (rev 3.03)
786
+ spec.
787
+
788
+ \b The ELF backends no longer automatically generate a \c{.comment} section.
789
+
790
+ \b Add additional "well-known" ELF sections with default attributes. See
791
+ \k{elfsect}.
792
+
793
+
794
+ \S{cl-2.05.01} Version 2.05.01
795
+
796
+ \b Fix the \c{-w}/\c{-W} option parsing, which was broken in NASM 2.05.
797
+
798
+
799
+ \S{cl-2.05} Version 2.05
800
+
801
+ \b Fix redundant REX.W prefix on \c{JMP reg64}.
802
+
803
+ \b Make the behaviour of \c{-O0} match NASM 0.98 legacy behavior.
804
+ See \k{opt-O}.
805
+
806
+ \b \c{-w-user} can be used to suppress the output of \c{%warning} directives.
807
+ See \k{opt-w}.
808
+
809
+ \b Fix bug where \c{ALIGN} would issue a full alignment datum instead of
810
+ zero bytes.
811
+
812
+ \b Fix offsets in list files.
813
+
814
+ \b Fix \c{%include} inside multi-line macros or loops.
815
+
816
+ \b Fix error where NASM would generate a spurious warning on valid
817
+ optimizations of immediate values.
818
+
819
+ \b Fix arguments to a number of the \c{CVT} SSE instructions.
820
+
821
+ \b Fix RIP-relative offsets when the instruction carries an immediate.
822
+
823
+ \b Massive overhaul of the ELF64 backend for spec compliance.
824
+
825
+ \b Fix the Geode \c{PFRCPV} and \c{PFRSQRTV} instruction.
826
+
827
+ \b Fix the SSE 4.2 \c{CRC32} instruction.
828
+
829
+
830
+ \S{cl-2.04} Version 2.04
831
+
832
+ \b Sanitize macro handing in the \c{%error} directive.
833
+
834
+ \b New \c{%warning} directive to issue user-controlled warnings.
835
+
836
+ \b \c{%error} directives are now deferred to the final assembly phase.
837
+
838
+ \b New \c{%fatal} directive to immediately terminate assembly.
839
+
840
+ \b New \c{%strcat} directive to join quoted strings together.
841
+
842
+ \b New \c{%use} macro directive to support standard macro directives. See
843
+ \k{use}.
844
+
845
+ \b Excess default parameters to \c{%macro} now issues a warning by default.
846
+ See \k{mlmacro}.
847
+
848
+ \b Fix \c{%ifn} and \c{%elifn}.
849
+
850
+ \b Fix nested \c{%else} clauses.
851
+
852
+ \b Correct the handling of nested \c{%rep}s.
853
+
854
+ \b New \c{%unmacro} directive to undeclare a multi-line macro.
855
+ See \k{unmacro}.
856
+
857
+ \b Builtin macro \c{__PASS__} which expands to the current assembly pass.
858
+ See \k{pass_macro}.
859
+
860
+ \b \c{__utf16__} and \c{__utf32__} operators to generate UTF-16 and UTF-32
861
+ strings. See \k{unicode}.
862
+
863
+ \b Fix bug in case-insensitive matching when compiled on platforms that
864
+ don't use the \c{configure} script. Of the official release binaries,
865
+ that only affected the OS/2 binary.
866
+
867
+ \b Support for x87 packed BCD constants. See \k{bcdconst}.
868
+
869
+ \b Correct the \c{LTR} and \c{SLDT} instructions in 64-bit mode.
870
+
871
+ \b Fix unnecessary REX.W prefix on indirect jumps in 64-bit mode.
872
+
873
+ \b Add AVX versions of the AES instructions (\c{VAES}...).
874
+
875
+ \b Fix the 256-bit FMA instructions.
876
+
877
+ \b Add 256-bit AVX stores per the latest AVX spec.
878
+
879
+ \b VIA XCRYPT instructions can now be written either with or without
880
+ \c{REP}, apparently different versions of the VIA spec wrote them
881
+ differently.
882
+
883
+ \b Add missing 64-bit \c{MOVNTI} instruction.
884
+
885
+ \b Fix the operand size of \c{VMREAD} and \c{VMWRITE}.
886
+
887
+ \b Numerous bug fixes, especially to the AES, AVX and VTX instructions.
888
+
889
+ \b The optimizer now always runs until it converges. It also runs even
890
+ when disabled, but doesn't optimize. This allows most forward references
891
+ to be resolved properly.
892
+
893
+ \b \c{%push} no longer needs a context identifier; omitting the context
894
+ identifier results in an anonymous context.
895
+
896
+
897
+ \S{cl-2.03.01} Version 2.03.01
898
+
899
+ \b Fix buffer overflow in the listing module.
900
+
901
+ \b Fix the handling of hexadecimal escape codes in `...` strings.
902
+
903
+ \b The Postscript/PDF documentation has been reformatted.
904
+
905
+ \b The \c{-F} option now implies \c{-g}.
906
+
907
+
908
+ \S{cl-2.03} Version 2.03
909
+
910
+ \b Add support for Intel AVX, CLMUL and FMA instructions,
911
+ including YMM registers.
912
+
913
+ \b \c{dy}, \c{resy} and \c{yword} for 32-byte operands.
914
+
915
+ \b Fix some SSE5 instructions.
916
+
917
+ \b Intel \c{INVEPT}, \c{INVVPID} and \c{MOVBE} instructions.
918
+
919
+ \b Fix checking for critical expressions when the optimizer is enabled.
920
+
921
+ \b Support the DWARF debugging format for ELF targets.
922
+
923
+ \b Fix optimizations of signed bytes.
924
+
925
+ \b Fix operation on bigendian machines.
926
+
927
+ \b Fix buffer overflow in the preprocessor.
928
+
929
+ \b \c{SAFESEH} support for Win32, \c{IMAGEREL} for Win64 (SEH).
930
+
931
+ \b \c{%?} and \c{%??} to refer to the name of a macro itself. In particular,
932
+ \c{%idefine keyword $%?} can be used to make a keyword "disappear".
933
+
934
+ \b New options for dependency generation: \c{-MD}, \c{-MF},
935
+ \c{-MP}, \c{-MT}, \c{-MQ}.
936
+
937
+ \b New preprocessor directives \c{%pathsearch} and \c{%depend}; INCBIN
938
+ reimplemented as a macro.
939
+
940
+ \b \c{%include} now resolves macros in a sane manner.
941
+
942
+ \b \c{%substr} can now be used to get other than one-character substrings.
943
+
944
+ \b New type of character/string constants, using backquotes (\c{`...`}),
945
+ which support C-style escape sequences.
946
+
947
+ \b \c{%defstr} and \c{%idefstr} to stringize macro definitions before
948
+ creation.
949
+
950
+ \b Fix forward references used in \c{EQU} statements.
951
+
952
+
953
+ \S{cl-2.02} Version 2.02
954
+
955
+ \b Additional fixes for MMX operands with explicit \c{qword}, as well as
956
+ (hopefully) SSE operands with \c{oword}.
957
+
958
+ \b Fix handling of truncated strings with \c{DO}.
959
+
960
+ \b Fix segfaults due to memory overwrites when floating-point constants
961
+ were used.
962
+
963
+ \b Fix segfaults due to missing include files.
964
+
965
+ \b Fix OpenWatcom Makefiles for DOS and OS/2.
966
+
967
+ \b Add autogenerated instruction list back into the documentation.
968
+
969
+ \b ELF: Fix segfault when generating stabs, and no symbols have been
970
+ defined.
971
+
972
+ \b ELF: Experimental support for DWARF debugging information.
973
+
974
+ \b New compile date and time standard macros.
975
+
976
+ \b \c{%ifnum} now returns true for negative numbers.
977
+
978
+ \b New \c{%iftoken} test for a single token.
979
+
980
+ \b New \c{%ifempty} test for empty expansion.
981
+
982
+ \b Add support for the \c{XSAVE} instruction group.
983
+
984
+ \b Makefile for Netware/gcc.
985
+
986
+ \b Fix issue with some warnings getting emitted way too many times.
987
+
988
+ \b Autogenerated instruction list added to the documentation.
989
+
990
+
991
+ \S{cl-2.01} Version 2.01
992
+
993
+ \b Fix the handling of MMX registers with explicit \c{qword} tags on
994
+ memory (broken in 2.00 due to 64-bit changes.)
995
+
996
+ \b Fix the PREFETCH instructions.
997
+
998
+ \b Fix the documentation.
999
+
1000
+ \b Fix debugging info when using \c{-f elf}
1001
+ (backwards compatibility alias for \c{-f elf32}).
1002
+
1003
+ \b Man pages for rdoff tools (from the Debian project.)
1004
+
1005
+ \b ELF: handle large numbers of sections.
1006
+
1007
+ \b Fix corrupt output when the optimizer runs out of passes.
1008
+
1009
+
1010
+ \S{cl-2.00} Version 2.00
1011
+
1012
+ \b Added c99 data-type compliance.
1013
+
1014
+ \b Added general x86-64 support.
1015
+
1016
+ \b Added win64 (x86-64 COFF) output format.
1017
+
1018
+ \b Added \c{__BITS__} standard macro.
1019
+
1020
+ \b Renamed the \c{elf} output format to \c{elf32} for clarity.
1021
+
1022
+ \b Added \c{elf64} and \c{macho} (MacOS X) output formats.
1023
+
1024
+ \b Added Numeric constants in \c{dq} directive.
1025
+
1026
+ \b Added \c{oword}, \c{do} and \c{reso} pseudo operands.
1027
+
1028
+ \b Allow underscores in numbers.
1029
+
1030
+ \b Added 8-, 16- and 128-bit floating-point formats.
1031
+
1032
+ \b Added binary, octal and hexadecimal floating-point.
1033
+
1034
+ \b Correct the generation of floating-point constants.
1035
+
1036
+ \b Added floating-point option control.
1037
+
1038
+ \b Added Infinity and NaN floating point support.
1039
+
1040
+ \b Added ELF Symbol Visibility support.
1041
+
1042
+ \b Added setting OSABI value in ELF header directive.
1043
+
1044
+ \b Added Generate Makefile Dependencies option.
1045
+
1046
+ \b Added Unlimited Optimization Passes option.
1047
+
1048
+ \b Added \c{%IFN} and \c{%ELIFN} support.
1049
+
1050
+ \b Added Logical Negation Operator.
1051
+
1052
+ \b Enhanced Stack Relative Preprocessor Directives.
1053
+
1054
+ \b Enhanced ELF Debug Formats.
1055
+
1056
+ \b Enhanced Send Errors to a File option.
1057
+
1058
+ \b Added SSSE3, SSE4.1, SSE4.2, SSE5 support.
1059
+
1060
+ \b Added a large number of additional instructions.
1061
+
1062
+ \b Significant performance improvements.
1063
+
1064
+ \b \c{-w+warning} and \c{-w-warning} can now be written as -Wwarning and
1065
+ -Wno-warning, respectively. See \k{opt-w}.
1066
+
1067
+ \b Add \c{-w+error} to treat warnings as errors. See \k{opt-w}.
1068
+
1069
+ \b Add \c{-w+all} and \c{-w-all} to enable or disable all suppressible
1070
+ warnings. See \k{opt-w}.
1071
+
1072
+
1073
+ \H{cl-0.98.xx} NASM 0.98 Series
1074
+
1075
+ The 0.98 series was the production versions of NASM from 1999 to 2007.
1076
+
1077
+
1078
+ \S{cl-0.98.39} Version 0.98.39
1079
+
1080
+ \b fix buffer overflow
1081
+
1082
+ \b fix outas86's \c{.bss} handling
1083
+
1084
+ \b "make spotless" no longer deletes config.h.in.
1085
+
1086
+ \b \c{%(el)if(n)idn} insensitivity to string quotes difference (#809300).
1087
+
1088
+ \b (nasm.c)\c{__OUTPUT_FORMAT__} changed to string value instead of symbol.
1089
+
1090
+ \S{cl-0.98.38} Version 0.98.38
1091
+
1092
+
1093
+ \b Add Makefile for 16-bit DOS binaries under OpenWatcom, and modify
1094
+ \c{mkdep.pl} to be able to generate completely pathless dependencies, as
1095
+ required by OpenWatcom wmake (it supports path searches, but not
1096
+ explicit paths.)
1097
+
1098
+ \b Fix the \c{STR} instruction.
1099
+
1100
+ \b Fix the ELF output format, which was broken under certain
1101
+ circumstances due to the addition of stabs support.
1102
+
1103
+ \b Quick-fix Borland format debug-info for \c{-f obj}
1104
+
1105
+ \b Fix for \c{%rep} with no arguments (#560568)
1106
+
1107
+ \b Fix concatenation of preprocessor function call (#794686)
1108
+
1109
+ \b Fix long label causes coredump (#677841)
1110
+
1111
+ \b Use autoheader as well as autoconf to keep configure from generating
1112
+ ridiculously long command lines.
1113
+
1114
+ \b Make sure that all of the formats which support debugging output
1115
+ actually will suppress debugging output when \c{-g} not specified.
1116
+
1117
+ \S{cl-0.98.37} Version 0.98.37
1118
+
1119
+
1120
+ \b Paths given in \c{-I} switch searched for \c{incbin}-ed as
1121
+ well as \c{%include}-ed files.
1122
+
1123
+ \b Added stabs debugging for the ELF output format, patch from
1124
+ Martin Wawro.
1125
+
1126
+ \b Fix \c{output/outbin.c} to allow origin > 80000000h.
1127
+
1128
+ \b Make \c{-U} switch work.
1129
+
1130
+ \b Fix the use of relative offsets with explicit prefixes, e.g.
1131
+ \c{a32 loop foo}.
1132
+
1133
+ \b Remove \c{backslash()}.
1134
+
1135
+ \b Fix the \c{SMSW} and \c{SLDT} instructions.
1136
+
1137
+ \b \c{-O2} and \c{-O3} are no longer aliases for \c{-O10} and \c{-O15}.
1138
+ If you mean the latter, please say so! :)
1139
+
1140
+ \S{cl-0.98.36} Version 0.98.36
1141
+
1142
+
1143
+ \b Update rdoff - librarian/archiver - common rec - docs!
1144
+
1145
+ \b Fix signed/unsigned problems.
1146
+
1147
+ \b Fix \c{JMP FAR label} and \c{CALL FAR label}.
1148
+
1149
+ \b Add new multisection support - map files - fix align bug
1150
+
1151
+ \b Fix sysexit, movhps/movlps reg,reg bugs in insns.dat
1152
+
1153
+ \b \c{Q} or \c{O} suffixes indicate octal
1154
+
1155
+ \b Support Prescott new instructions (PNI).
1156
+
1157
+ \b Cyrix \c{XSTORE} instruction.
1158
+
1159
+
1160
+ \S{cl-0.98.35} Version 0.98.35
1161
+
1162
+ \b Fix build failure on 16-bit DOS (Makefile.bc3 workaround for compiler bug.)
1163
+
1164
+ \b Fix dependencies and compiler warnings.
1165
+
1166
+ \b Add "const" in a number of places.
1167
+
1168
+ \b Add -X option to specify error reporting format (use -Xvc to
1169
+ integrate with Microsoft Visual Studio.)
1170
+
1171
+ \b Minor changes for code legibility.
1172
+
1173
+ \b Drop use of tmpnam() in rdoff (security fix.)
1174
+
1175
+
1176
+ \S{cl-0.98.34} Version 0.98.34
1177
+
1178
+ \b Correct additional address-size vs. operand-size confusions.
1179
+
1180
+ \b Generate dependencies for all Makefiles automatically.
1181
+
1182
+ \b Add support for unimplemented (but theoretically available)
1183
+ registers such as tr0 and cr5. Segment registers 6 and 7 are called
1184
+ segr6 and segr7 for the operations which they can be represented.
1185
+
1186
+ \b Correct some disassembler bugs related to redundant address-size prefixes.
1187
+ Some work still remains in this area.
1188
+
1189
+ \b Correctly generate an error for things like "SEG eax".
1190
+
1191
+ \b Add the JMPE instruction, enabled by "CPU IA64".
1192
+
1193
+ \b Correct compilation on newer gcc/glibc platforms.
1194
+
1195
+ \b Issue an error on things like "jmp far eax".
1196
+
1197
+
1198
+ \S{cl-0.98.33} Version 0.98.33
1199
+
1200
+ \b New __NASM_PATCHLEVEL__ and __NASM_VERSION_ID__ standard macros to
1201
+ round out the version-query macros. version.pl now understands
1202
+ X.YYplWW or X.YY.ZZplWW as a version number, equivalent to
1203
+ X.YY.ZZ.WW (or X.YY.0.WW, as appropriate).
1204
+
1205
+ \b New keyword "strict" to disable the optimization of specific
1206
+ operands.
1207
+
1208
+ \b Fix the handing of size overrides with JMP instructions
1209
+ (instructions such as "jmp dword foo".)
1210
+
1211
+ \b Fix the handling of "ABSOLUTE label", where "label" points into a
1212
+ relocatable segment.
1213
+
1214
+ \b Fix OBJ output format with lots of externs.
1215
+
1216
+ \b More documentation updates.
1217
+
1218
+ \b Add -Ov option to get verbose information about optimizations.
1219
+
1220
+ \b Undo a braindead change which broke \c{%elif} directives.
1221
+
1222
+ \b Makefile updates.
1223
+
1224
+
1225
+ \S{cl-0.98.32} Version 0.98.32
1226
+
1227
+ \b Fix NASM crashing when \c{%macro} directives were left unterminated.
1228
+
1229
+ \b Lots of documentation updates.
1230
+
1231
+ \b Complete rewrite of the PostScript/PDF documentation generator.
1232
+
1233
+ \b The MS Visual C++ Makefile was updated and corrected.
1234
+
1235
+ \b Recognize .rodata as a standard section name in ELF.
1236
+
1237
+ \b Fix some obsolete Perl4-isms in Perl scripts.
1238
+
1239
+ \b Fix configure.in to work with autoconf 2.5x.
1240
+
1241
+ \b Fix a couple of "make cleaner" misses.
1242
+
1243
+ \b Make the normal "./configure && make" work with Cygwin.
1244
+
1245
+
1246
+ \S{cl-0.98.31} Version 0.98.31
1247
+
1248
+ \b Correctly build in a separate object directory again.
1249
+
1250
+ \b Derive all references to the version number from the version file.
1251
+
1252
+ \b New standard macros __NASM_SUBMINOR__ and __NASM_VER__ macros.
1253
+
1254
+ \b Lots of Makefile updates and bug fixes.
1255
+
1256
+ \b New \c{%ifmacro} directive to test for multiline macros.
1257
+
1258
+ \b Documentation updates.
1259
+
1260
+ \b Fixes for 16-bit OBJ format output.
1261
+
1262
+ \b Changed the NASM environment variable to NASMENV.
1263
+
1264
+
1265
+ \S{cl-0.98.30} Version 0.98.30
1266
+
1267
+ \b Changed doc files a lot: completely removed old READMExx and
1268
+ Wishlist files, incorporating all information in CHANGES and TODO.
1269
+
1270
+ \b I waited a long time to rename zoutieee.c to (original) outieee.c
1271
+
1272
+ \b moved all output modules to output/ subdirectory.
1273
+
1274
+ \b Added 'make strip' target to strip debug info from nasm & ndisasm.
1275
+
1276
+ \b Added INSTALL file with installation instructions.
1277
+
1278
+ \b Added -v option description to nasm man.
1279
+
1280
+ \b Added dist makefile target to produce source distributions.
1281
+
1282
+ \b 16-bit support for ELF output format (GNU extension, but useful.)
1283
+
1284
+
1285
+ \S{cl-0.98.28} Version 0.98.28
1286
+
1287
+ \b Fastcooked this for Debian's Woody release:
1288
+ Frank applied the INCBIN bug patch to 0.98.25alt and called
1289
+ it 0.98.28 to not confuse poor little apt-get.
1290
+
1291
+
1292
+ \S{cl-0.98.26} Version 0.98.26
1293
+
1294
+ \b Reorganised files even better from 0.98.25alt
1295
+
1296
+
1297
+ \S{cl-0.98.25alt} Version 0.98.25alt
1298
+
1299
+ \b Prettified the source tree. Moved files to more reasonable places.
1300
+
1301
+ \b Added findleak.pl script to misc/ directory.
1302
+
1303
+ \b Attempted to fix doc.
1304
+
1305
+
1306
+ \S{cl-0.98.25} Version 0.98.25
1307
+
1308
+ \b Line continuation character \c{\\}.
1309
+
1310
+ \b Docs inadvertantly reverted - "dos packaging".
1311
+
1312
+
1313
+ \S{cl-0.98.24p1} Version 0.98.24p1
1314
+
1315
+ \b FIXME: Someone, document this please.
1316
+
1317
+
1318
+ \S{cl-0.98.24} Version 0.98.24
1319
+
1320
+ \b Documentation - Ndisasm doc added to Nasm.doc.
1321
+
1322
+
1323
+ \S{cl-0.98.23} Version 0.98.23
1324
+
1325
+ \b Attempted to remove rdoff version1
1326
+
1327
+ \b Lino Mastrodomenico's patches to preproc.c (%$$ bug?).
1328
+
1329
+
1330
+ \S{cl-0.98.22} Version 0.98.22
1331
+
1332
+ \b Update rdoff2 - attempt to remove v1.
1333
+
1334
+
1335
+ \S{cl-0.98.21} Version 0.98.21
1336
+
1337
+ \b Optimization fixes.
1338
+
1339
+
1340
+ \S{cl-0.98.20} Version 0.98.20
1341
+
1342
+ \b Optimization fixes.
1343
+
1344
+
1345
+ \S{cl-0.98.19} Version 0.98.19
1346
+
1347
+ \b H. J. Lu's patch back out.
1348
+
1349
+
1350
+ \S{cl-0.98.18} Version 0.98.18
1351
+
1352
+ \b Added ".rdata" to "-f win32".
1353
+
1354
+
1355
+ \S{cl-0.98.17} Version 0.98.17
1356
+
1357
+ \b H. J. Lu's "bogus elf" patch. (Red Hat problem?)
1358
+
1359
+
1360
+ \S{cl-0.98.16} Version 0.98.16
1361
+
1362
+ \b Fix whitespace before "[section ..." bug.
1363
+
1364
+
1365
+ \S{cl-0.98.15} Version 0.98.15
1366
+
1367
+ \b Rdoff changes (?).
1368
+
1369
+ \b Fix fixes to memory leaks.
1370
+
1371
+
1372
+ \S{cl-0.98.14} Version 0.98.14
1373
+
1374
+ \b Fix memory leaks.
1375
+
1376
+
1377
+ \S{cl-0.98.13} Version 0.98.13
1378
+
1379
+ \b There was no 0.98.13
1380
+
1381
+
1382
+ \S{cl-0.98.12} Version 0.98.12
1383
+
1384
+ \b Update optimization (new function of "-O1")
1385
+
1386
+ \b Changes to test/bintest.asm (?).
1387
+
1388
+
1389
+ \S{cl-0.98.11} Version 0.98.11
1390
+
1391
+ \b Optimization changes.
1392
+
1393
+ \b Ndisasm fixed.
1394
+
1395
+
1396
+ \S{cl-0.98.10} Version 0.98.10
1397
+
1398
+ \b There was no 0.98.10
1399
+
1400
+
1401
+ \S{cl-0.98.09} Version 0.98.09
1402
+
1403
+ \b Add multiple sections support to "-f bin".
1404
+
1405
+ \b Changed GLOBAL_TEMP_BASE in outelf.c from 6 to 15.
1406
+
1407
+ \b Add "-v" as an alias to the "-r" switch.
1408
+
1409
+ \b Remove "#ifdef" from Tasm compatibility options.
1410
+
1411
+ \b Remove redundant size-overrides on "mov ds, ex", etc.
1412
+
1413
+ \b Fixes to SSE2, other insns.dat (?).
1414
+
1415
+ \b Enable uppercase "I" and "P" switches.
1416
+
1417
+ \b Case insinsitive "seg" and "wrt".
1418
+
1419
+ \b Update install.sh (?).
1420
+
1421
+ \b Allocate tokens in blocks.
1422
+
1423
+ \b Improve "invalid effective address" messages.
1424
+
1425
+
1426
+ \S{cl-0.98.08} Version 0.98.08
1427
+
1428
+ \b Add "\c{%strlen}" and "\c{%substr}" macro operators
1429
+
1430
+ \b Fixed broken c16.mac.
1431
+
1432
+ \b Unterminated string error reported.
1433
+
1434
+ \b Fixed bugs as per 0.98bf
1435
+
1436
+
1437
+ \S{cl-0.98.09b with John Coffman patches released 28-Oct-2001} Version 0.98.09b with John Coffman patches released 28-Oct-2001
1438
+
1439
+ Changes from 0.98.07 release to 98.09b as of 28-Oct-2001
1440
+
1441
+ \b More closely compatible with 0.98 when -O0 is implied
1442
+ or specified. Not strictly identical, since backward
1443
+ branches in range of short offsets are recognized, and signed
1444
+ byte values with no explicit size specification will be
1445
+ assembled as a single byte.
1446
+
1447
+ \b More forgiving with the PUSH instruction. 0.98 requires
1448
+ a size to be specified always. 0.98.09b will imply the size
1449
+ from the current BITS setting (16 or 32).
1450
+
1451
+ \b Changed definition of the optimization flag:
1452
+
1453
+ \c -O0 strict two-pass assembly, JMP and Jcc are
1454
+ \c handled more like 0.98, except that back-
1455
+ \c ward JMPs are short, if possible.
1456
+ \c
1457
+ \c -O1 strict two-pass assembly, but forward
1458
+ \c branches are assembled with code guaranteed
1459
+ \c to reach; may produce larger code than
1460
+ \c -O0, but will produce successful assembly
1461
+ \c more often if branch offset sizes are not
1462
+ \c specified.
1463
+ \c
1464
+ \c -O2 multi-pass optimization, minimize branch
1465
+ \c offsets; also will minimize signed immed-
1466
+ \c iate bytes, overriding size specification.
1467
+ \c
1468
+ \c -O3 like -O2, but more passes taken, if needed
1469
+
1470
+
1471
+ \S{cl-0.98.07 released 01/28/01} Version 0.98.07 released 01/28/01
1472
+
1473
+ \b Added Stepane Denis' SSE2 instructions to a *working*
1474
+ version of the code - some earlier versions were based on
1475
+ broken code - sorry 'bout that. version "0.98.07"
1476
+
1477
+ \b Cosmetic modifications to nasm.c, nasm.h,
1478
+ AUTHORS, MODIFIED
1479
+
1480
+
1481
+ \S{cl-0.98.06f released 01/18/01} Version 0.98.06f released 01/18/01
1482
+
1483
+
1484
+ \b Add "metalbrain"s jecxz bug fix in insns.dat
1485
+
1486
+ \b Alter nasmdoc.src to match - version "0.98.06f"
1487
+
1488
+
1489
+ \S{cl-0.98.06e released 01/09/01} Version 0.98.06e released 01/09/01
1490
+
1491
+
1492
+ \b Removed the "outforms.h" file - it appears to be
1493
+ someone's old backup of "outform.h". version "0.98.06e"
1494
+
1495
+ \b fbk - finally added the fix for the "multiple %includes bug",
1496
+ known since 7/27/99 - reported originally (?) and sent to
1497
+ us by Austin Lunnen - he reports that John Fine had a fix
1498
+ within the day. Here it is...
1499
+
1500
+ \b Nelson Rush resigns from the group. Big thanks to Nelson for
1501
+ his leadership and enthusiasm in getting these changes
1502
+ incorporated into Nasm!
1503
+
1504
+ \b fbk - [list +], [list -] directives - ineptly implemented, should
1505
+ be re-written or removed, perhaps.
1506
+
1507
+ \b Brian Raiter / fbk - "elfso bug" fix - applied to aoutb format
1508
+ as well - testing might be desirable...
1509
+
1510
+ \b James Seter - -postfix, -prefix command line switches.
1511
+
1512
+ \b Yuri Zaporozhets - rdoff utility changes.
1513
+
1514
+
1515
+ \S{cl-0.98p1} Version 0.98p1
1516
+
1517
+ \b GAS-like palign (Panos Minos)
1518
+
1519
+ \b FIXME: Someone, fill this in with details
1520
+
1521
+
1522
+ \S{cl-0.98bf (bug-fixed)} Version 0.98bf (bug-fixed)
1523
+
1524
+ \b Fixed - elf and aoutb bug - shared libraries
1525
+ - multiple "%include" bug in "-f obj"
1526
+ - jcxz, jecxz bug
1527
+ - unrecognized option bug in ndisasm
1528
+
1529
+ \S{cl-0.98.03 with John Coffman's changes released 27-Jul-2000} Version 0.98.03 with John Coffman's changes released 27-Jul-2000
1530
+
1531
+ \b Added signed byte optimizations for the 0x81/0x83 class
1532
+ of instructions: ADC, ADD, AND, CMP, OR, SBB, SUB, XOR:
1533
+ when used as 'ADD reg16,imm' or 'ADD reg32,imm.' Also
1534
+ optimization of signed byte form of 'PUSH imm' and 'IMUL
1535
+ reg,imm'/'IMUL reg,reg,imm.' No size specification is needed.
1536
+
1537
+ \b Added multi-pass JMP and Jcc offset optimization. Offsets
1538
+ on forward references will preferentially use the short form,
1539
+ without the need to code a specific size (short or near) for
1540
+ the branch. Added instructions for 'Jcc label' to use the
1541
+ form 'Jnotcc $+3/JMP label', in cases where a short offset
1542
+ is out of bounds. If compiling for a 386 or higher CPU, then
1543
+ the 386 form of Jcc will be used instead.
1544
+
1545
+ \> This feature is controlled by a new command-line switch: "O",
1546
+ (upper case letter O). "-O0" reverts the assembler to no
1547
+ extra optimization passes, "-O1" allows up to 5 extra passes,
1548
+ and "-O2"(default), allows up to 10 extra optimization passes.
1549
+
1550
+ \b Added a new directive: 'cpu XXX', where XXX is any of:
1551
+ 8086, 186, 286, 386, 486, 586, pentium, 686, PPro, P2, P3 or
1552
+ Katmai. All are case insensitive. All instructions will
1553
+ be selected only if they apply to the selected cpu or lower.
1554
+ Corrected a couple of bugs in cpu-dependence in 'insns.dat'.
1555
+
1556
+ \b Added to 'standard.mac', the "use16" and "use32" forms of
1557
+ the "bits 16/32" directive. This is nothing new, just conforms
1558
+ to a lot of other assemblers. (minor)
1559
+
1560
+ \b Changed label allocation from 320/32 (10000 labels @ 200K+)
1561
+ to 32/37 (1000 labels); makes running under DOS much easier.
1562
+ Since additional label space is allocated dynamically, this
1563
+ should have no effect on large programs with lots of labels.
1564
+ The 37 is a prime, believed to be better for hashing. (minor)
1565
+
1566
+
1567
+ \S{cl-0.98.03} Version 0.98.03
1568
+
1569
+ "Integrated patchfile 0.98-0.98.01. I call this version 0.98.03 for
1570
+ historical reasons: 0.98.02 was trashed." --John Coffman
1571
+ <johninsd@san.rr.com>, 27-Jul-2000
1572
+
1573
+ \b Kendall Bennett's SciTech MGL changes
1574
+
1575
+ \b Note that you must define "TASM_COMPAT" at compile-time
1576
+ to get the Tasm Ideal Mode compatibility.
1577
+
1578
+ \b All changes can be compiled in and out using the TASM_COMPAT macros,
1579
+ and when compiled without TASM_COMPAT defined we get the exact same
1580
+ binary as the unmodified 0.98 sources.
1581
+
1582
+ \b standard.mac, macros.c: Added macros to ignore TASM directives before
1583
+ first include
1584
+
1585
+ \b nasm.h: Added extern declaration for tasm_compatible_mode
1586
+
1587
+ \b nasm.c: Added global variable tasm_compatible_mode
1588
+
1589
+ \b Added command line switch for TASM compatible mode (-t)
1590
+
1591
+ \b Changed version command line to reflect when compiled with TASM additions
1592
+
1593
+ \b Added response file processing to allow all arguments on a single
1594
+ line (response file is @resp rather than -@resp for NASM format).
1595
+
1596
+ \b labels.c: Changes islocal() macro to support TASM style @@local labels.
1597
+
1598
+ \b Added islocalchar() macro to support TASM style @@local labels.
1599
+
1600
+ \b parser.c: Added support for TASM style memory references (ie: mov
1601
+ [DWORD eax],10 rather than the NASM style mov DWORD [eax],10).
1602
+
1603
+ \b preproc.c: Added new directives, \c{%arg}, \c{%local}, \c{%stacksize} to directives
1604
+ table
1605
+
1606
+ \b Added support for TASM style directives without a leading % symbol.
1607
+
1608
+ \b Integrated a block of changes from Andrew Zabolotny <bit@eltech.ru>:
1609
+
1610
+ \b A new keyword \c{%xdefine} and its case-insensitive counterpart \c{%ixdefine}.
1611
+ They work almost the same way as \c{%define} and \c{%idefine} but expand
1612
+ the definition immediately, not on the invocation. Something like a cross
1613
+ between \c{%define} and \c{%assign}. The "x" suffix stands for "eXpand", so
1614
+ "xdefine" can be deciphered as "expand-and-define". Thus you can do
1615
+ things like this:
1616
+
1617
+ \c %assign ofs 0
1618
+ \c
1619
+ \c %macro arg 1
1620
+ \c %xdefine %1 dword [esp+ofs]
1621
+ \c %assign ofs ofs+4
1622
+ \c %endmacro
1623
+
1624
+ \b Changed the place where the expansion of %$name macros are expanded.
1625
+ Now they are converted into ..@ctxnum.name form when detokenizing, so
1626
+ there are no quirks as before when using %$name arguments to macros,
1627
+ in macros etc. For example:
1628
+
1629
+ \c %macro abc 1
1630
+ \c %define %1 hello
1631
+ \c %endm
1632
+ \c
1633
+ \c abc %$here
1634
+ \c %$here
1635
+
1636
+ \> Now last line will be expanded into "hello" as expected. This also allows
1637
+ for lots of goodies, a good example are extended "proc" macros included
1638
+ in this archive.
1639
+
1640
+ \b Added a check for "cstk" in smacro_defined() before calling get_ctx() -
1641
+ this allows for things like:
1642
+
1643
+ \c %ifdef %$abc
1644
+ \c %endif
1645
+
1646
+ \> to work without warnings even in no context.
1647
+
1648
+ \b Added a check for "cstk" in %if*ctx and %elif*ctx directives -
1649
+ this allows to use \c{%ifctx} without excessive warnings. If there is
1650
+ no active context, \c{%ifctx} goes through "false" branch.
1651
+
1652
+ \b Removed "user error: " prefix with \c{%error} directive: it just clobbers the
1653
+ output and has absolutely no functionality. Besides, this allows to write
1654
+ macros that does not differ from built-in functions in any way.
1655
+
1656
+ \b Added expansion of string that is output by \c{%error} directive. Now you
1657
+ can do things like:
1658
+
1659
+ \c %define hello(x) Hello, x!
1660
+ \c
1661
+ \c %define %$name andy
1662
+ \c %error "hello(%$name)"
1663
+
1664
+ \> Same happened with \c{%include} directive.
1665
+
1666
+ \b Now all directives that expect an identifier will try to expand and
1667
+ concatenate everything without whitespaces in between before usage.
1668
+ For example, with "unfixed" nasm the commands
1669
+
1670
+ \c %define %$abc hello
1671
+ \c %define __%$abc goodbye
1672
+ \c __%$abc
1673
+
1674
+ \> would produce "incorrect" output: last line will expand to
1675
+
1676
+ \c hello goodbyehello
1677
+
1678
+ \> Not quite what you expected, eh? :-) The answer is that preprocessor
1679
+ treats the \c{%define} construct as if it would be
1680
+
1681
+ \c %define __ %$abc goodbye
1682
+
1683
+ \> (note the white space between __ and %$abc). After my "fix" it
1684
+ will "correctly" expand into
1685
+
1686
+ \c goodbye
1687
+
1688
+ \> as expected. Note that I use quotes around words "correct", "incorrect"
1689
+ etc because this is rather a feature not a bug; however current behaviour
1690
+ is more logical (and allows more advanced macro usage :-).
1691
+
1692
+ Same change was applied to:
1693
+ \c{%push},\c{%macro},\c{%imacro},\c{%define},\c{%idefine},\c{%xdefine},\c{%ixdefine},
1694
+ \c{%assign},\c{%iassign},\c{%undef}
1695
+
1696
+ \b A new directive [WARNING {+|-}warning-id] have been added. It works only
1697
+ if the assembly phase is enabled (i.e. it doesn't work with nasm -e).
1698
+
1699
+ \b A new warning type: macro-selfref. By default this warning is disabled;
1700
+ when enabled NASM warns when a macro self-references itself; for example
1701
+ the following source:
1702
+
1703
+ \c [WARNING macro-selfref]
1704
+ \c
1705
+ \c %macro push 1-*
1706
+ \c %rep %0
1707
+ \c push %1
1708
+ \c %rotate 1
1709
+ \c %endrep
1710
+ \c %endmacro
1711
+ \c
1712
+ \c push eax,ebx,ecx
1713
+
1714
+ \> will produce a warning, but if we remove the first line we won't see it
1715
+ anymore (which is The Right Thing To Do {tm} IMHO since C preprocessor
1716
+ eats such constructs without warnings at all).
1717
+
1718
+ \b Added a "error" routine to preprocessor which always will set ERR_PASS1
1719
+ bit in severity_code. This removes annoying repeated errors on first
1720
+ and second passes from preprocessor.
1721
+
1722
+ \b Added the %+ operator in single-line macros for concatenating two
1723
+ identifiers. Usage example:
1724
+
1725
+ \c %define _myfunc _otherfunc
1726
+ \c %define cextern(x) _ %+ x
1727
+ \c cextern (myfunc)
1728
+
1729
+ \> After first expansion, third line will become "_myfunc". After this
1730
+ expansion is performed again so it becomes "_otherunc".
1731
+
1732
+ \b Now if preprocessor is in a non-emitting state, no warning or error
1733
+ will be emitted. Example:
1734
+
1735
+ \c %if 1
1736
+ \c mov eax,ebx
1737
+ \c %else
1738
+ \c put anything you want between these two brackets,
1739
+ \c even macro-parameter references %1 or local
1740
+ \c labels %$zz or macro-local labels %%zz - no
1741
+ \c warning will be emitted.
1742
+ \c %endif
1743
+
1744
+ \b Context-local variables on expansion as a last resort are looked up
1745
+ in outer contexts. For example, the following piece:
1746
+
1747
+ \c %push outer
1748
+ \c %define %$a [esp]
1749
+ \c
1750
+ \c %push inner
1751
+ \c %$a
1752
+ \c %pop
1753
+ \c %pop
1754
+
1755
+ \> will expand correctly the fourth line to [esp]; if we'll define another
1756
+ %$a inside the "inner" context, it will take precedence over outer
1757
+ definition. However, this modification has been applied only to
1758
+ expand_smacro and not to smacro_define: as a consequence expansion
1759
+ looks in outer contexts, but \c{%ifdef} won't look in outer contexts.
1760
+
1761
+ \> This behaviour is needed because we don't want nested contexts to
1762
+ act on already defined local macros. Example:
1763
+
1764
+ \c %define %$arg1 [esp+4]
1765
+ \c test eax,eax
1766
+ \c if nz
1767
+ \c mov eax,%$arg1
1768
+ \c endif
1769
+
1770
+ \> In this example the "if" mmacro enters into the "if" context, so %$arg1
1771
+ is not valid anymore inside "if". Of course it could be worked around
1772
+ by using explicitely %$$arg1 but this is ugly IMHO.
1773
+
1774
+ \b Fixed memory leak in \c{%undef}. The origline wasn't freed before
1775
+ exiting on success.
1776
+
1777
+ \b Fixed trap in preprocessor when line expanded to empty set of tokens.
1778
+ This happens, for example, in the following case:
1779
+
1780
+ \c #define SOMETHING
1781
+ \c SOMETHING
1782
+
1783
+
1784
+ \S{cl-0.98} Version 0.98
1785
+
1786
+ All changes since NASM 0.98p3 have been produced by H. Peter Anvin <hpa@zytor.com>.
1787
+
1788
+ \b The documentation comment delimiter is \# not #.
1789
+
1790
+ \b Allow EQU definitions to refer to external labels; reported by
1791
+ Pedro Gimeno.
1792
+
1793
+ \b Re-enable support for RDOFF v1; reported by Pedro Gimeno.
1794
+
1795
+ \b Updated License file per OK from Simon and Julian.
1796
+
1797
+
1798
+ \S{cl-0.98p9} Version 0.98p9
1799
+
1800
+ \b Update documentation (although the instruction set reference will
1801
+ have to wait; I don't want to hold up the 0.98 release for it.)
1802
+
1803
+ \b Verified that the NASM implementation of the PEXTRW and PMOVMSKB
1804
+ instructions is correct. The encoding differs from what the Intel
1805
+ manuals document, but the Pentium III behaviour matches NASM, not
1806
+ the Intel manuals.
1807
+
1808
+ \b Fix handling of implicit sizes in PSHUFW and PINSRW, reported by
1809
+ Stefan Hoffmeister.
1810
+
1811
+ \b Resurrect the -s option, which was removed when changing the
1812
+ diagnostic output to stdout.
1813
+
1814
+
1815
+ \S{cl-0.98p8} Version 0.98p8
1816
+
1817
+ \b Fix for "DB" when NASM is running on a bigendian machine.
1818
+
1819
+ \b Invoke insns.pl once for each output script, making Makefile.in
1820
+ legal for "make -j".
1821
+
1822
+ \b Improve the Unix configure-based makefiles to make package
1823
+ creation easier.
1824
+
1825
+ \b Included an RPM .spec file for building RPM (RedHat Package Manager)
1826
+ packages on Linux or Unix systems.
1827
+
1828
+ \b Fix Makefile dependency problems.
1829
+
1830
+ \b Change src/rdsrc.pl to include sectioning information in info
1831
+ output; required for install-info to work.
1832
+
1833
+ \b Updated the RDOFF distribution to version 2 from Jules; minor
1834
+ massaging to make it compile in my environment.
1835
+
1836
+ \b Split doc files that can be built by anyone with a Perl interpreter off
1837
+ into a separate archive.
1838
+
1839
+ \b "Dress rehearsal" release!
1840
+
1841
+
1842
+ \S{cl-0.98p7} Version 0.98p7
1843
+
1844
+ \b Fixed opcodes with a third byte-sized immediate argument to not
1845
+ complain if given "byte" on the immediate.
1846
+
1847
+ \b Allow \c{%undef} to remove single-line macros with arguments. This
1848
+ matches the behaviour of #undef in the C preprocessor.
1849
+
1850
+ \b Allow -d, -u, -i and -p to be specified as -D, -U, -I and -P for
1851
+ compatibility with most C compilers and preprocessors. This allows
1852
+ Makefile options to be shared between cc and nasm, for example.
1853
+
1854
+ \b Minor cleanups.
1855
+
1856
+ \b Went through the list of Katmai instructions and hopefully fixed the
1857
+ (rather few) mistakes in it.
1858
+
1859
+ \b (Hopefully) fixed a number of disassembler bugs related to ambiguous
1860
+ instructions (disambiguated by -p) and SSE instructions with REP.
1861
+
1862
+ \b Fix for bug reported by Mark Junger: "call dword 0x12345678" should
1863
+ work and may add an OSP (affected CALL, JMP, Jcc).
1864
+
1865
+ \b Fix for environments when "stderr" isn't a compile-time constant.
1866
+
1867
+
1868
+ \S{cl-0.98p6} Version 0.98p6
1869
+
1870
+
1871
+ \b Took officially over coordination of the 0.98 release; so drop
1872
+ the p3.x notation. Skipped p4 and p5 to avoid confusion with John
1873
+ Fine's J4 and J5 releases.
1874
+
1875
+ \b Update the documentation; however, it still doesn't include
1876
+ documentation for the various new instructions. I somehow wonder if
1877
+ it makes sense to have an instruction set reference in the assembler
1878
+ manual when Intel et al have PDF versions of their manuals online.
1879
+
1880
+ \b Recognize "idt" or "centaur" for the -p option to ndisasm.
1881
+
1882
+ \b Changed error messages back to stderr where they belong, but add an
1883
+ -E option to redirect them elsewhere (the DOS shell cannot redirect
1884
+ stderr.)
1885
+
1886
+ \b -M option to generate Makefile dependencies (based on code from Alex
1887
+ Verstak.)
1888
+
1889
+ \b \c{%undef} preprocessor directive, and -u option, that undefines a
1890
+ single-line macro.
1891
+
1892
+ \b OS/2 Makefile (Mkfiles/Makefile.os2) for Borland under OS/2; from
1893
+ Chuck Crayne.
1894
+
1895
+ \b Various minor bugfixes (reported by):
1896
+ - Dangling \c{%s} in preproc.c (Martin Junker)
1897
+
1898
+ \b THERE ARE KNOWN BUGS IN SSE AND THE OTHER KATMAI INSTRUCTIONS. I am
1899
+ on a trip and didn't bring the Katmai instruction reference, so I
1900
+ can't work on them right now.
1901
+
1902
+ \b Updated the License file per agreement with Simon and Jules to
1903
+ include a GPL distribution clause.
1904
+
1905
+
1906
+ \S{cl-0.98p3.7} Version 0.98p3.7
1907
+
1908
+ \b (Hopefully) fixed the canned Makefiles to include the outrdf2 and
1909
+ zoutieee modules.
1910
+
1911
+ \b Renamed changes.asm to changed.asm.
1912
+
1913
+
1914
+ \S{cl-0.98p3.6} Version 0.98p3.6
1915
+
1916
+ \b Fixed a bunch of instructions that were added in 0.98p3.5 which had
1917
+ memory operands, and the address-size prefix was missing from the
1918
+ instruction pattern.
1919
+
1920
+
1921
+ \S{cl-0.98p3.5} Version 0.98p3.5
1922
+
1923
+ \b Merged in changes from John S. Fine's 0.98-J5 release. John's based
1924
+ 0.98-J5 on my 0.98p3.3 release; this merges the changes.
1925
+
1926
+ \b Expanded the instructions flag field to a long so we can fit more
1927
+ flags; mark SSE (KNI) and AMD or Katmai-specific instructions as
1928
+ such.
1929
+
1930
+ \b Fix the "PRIV" flag on a bunch of instructions, and create new
1931
+ "PROT" flag for protected-mode-only instructions (orthogonal to if
1932
+ the instruction is privileged!) and new "SMM" flag for SMM-only
1933
+ instructions.
1934
+
1935
+ \b Added AMD-only SYSCALL and SYSRET instructions.
1936
+
1937
+ \b Make SSE actually work, and add new Katmai MMX instructions.
1938
+
1939
+ \b Added a -p (preferred vendor) option to ndisasm so that it can
1940
+ distinguish e.g. Cyrix opcodes also used in SSE. For example:
1941
+
1942
+ \c ndisasm -p cyrix aliased.bin
1943
+ \c 00000000 670F514310 paddsiw mm0,[ebx+0x10]
1944
+ \c 00000005 670F514320 paddsiw mm0,[ebx+0x20]
1945
+ \c ndisasm -p intel aliased.bin
1946
+ \c 00000000 670F514310 sqrtps xmm0,[ebx+0x10]
1947
+ \c 00000005 670F514320 sqrtps xmm0,[ebx+0x20]
1948
+
1949
+ \b Added a bunch of Cyrix-specific instructions.
1950
+
1951
+
1952
+ \S{cl-0.98p3.4} Version 0.98p3.4
1953
+
1954
+ \b Made at least an attempt to modify all the additional Makefiles (in
1955
+ the Mkfiles directory). I can't test it, but this was the best I
1956
+ could do.
1957
+
1958
+ \b DOS DJGPP+"Opus Make" Makefile from John S. Fine.
1959
+
1960
+ \b changes.asm changes from John S. Fine.
1961
+
1962
+
1963
+ \S{cl-0.98p3.3} Version 0.98p3.3
1964
+
1965
+ \b Patch from Conan Brink to allow nesting of \c{%rep} directives.
1966
+
1967
+ \b If we're going to allow INT01 as an alias for INT1/ICEBP (one of
1968
+ Jules 0.98p3 changes), then we should allow INT03 as an alias for INT3
1969
+ as well.
1970
+
1971
+ \b Updated changes.asm to include the latest changes.
1972
+
1973
+ \b Tried to clean up the <CR>s that had snuck in from a DOS/Windows
1974
+ environment into my Unix environment, and try to make sure than
1975
+ DOS/Windows users get them back.
1976
+
1977
+ \b We would silently generate broken tools if insns.dat wasn't sorted
1978
+ properly. Change insns.pl so that the order doesn't matter.
1979
+
1980
+ \b Fix bug in insns.pl (introduced by me) which would cause conditional
1981
+ instructions to have an extra "cc" in disassembly, e.g. "jnz"
1982
+ disassembled as "jccnz".
1983
+
1984
+
1985
+ \S{cl-0.98p3.2} Version 0.98p3.2
1986
+
1987
+ \b Merged in John S. Fine's changes from his 0.98-J4 prerelease; see
1988
+ http://www.csoft.net/cz/johnfine/
1989
+
1990
+ \b Changed previous "spotless" Makefile target (appropriate for distribution)
1991
+ to "distclean", and added "cleaner" target which is same as "clean"
1992
+ except deletes files generated by Perl scripts; "spotless" is union.
1993
+
1994
+ \b Removed BASIC programs from distribution. Get a Perl interpreter
1995
+ instead (see below.)
1996
+
1997
+ \b Calling this "pre-release 3.2" rather than "p3-hpa2" because of
1998
+ John's contributions.
1999
+
2000
+ \b Actually link in the IEEE output format (zoutieee.c); fix a bunch of
2001
+ compiler warnings in that file. Note I don't know what IEEE output
2002
+ is supposed to look like, so these changes were made "blind".
2003
+
2004
+
2005
+ \S{cl-0.98p3-hpa} Version 0.98p3-hpa
2006
+
2007
+ \b Merged nasm098p3.zip with nasm-0.97.tar.gz to create a fully
2008
+ buildable version for Unix systems (Makefile.in updates, etc.)
2009
+
2010
+ \b Changed insns.pl to create the instruction tables in nasm.h and
2011
+ names.c, so that a new instruction can be added by adding it *only*
2012
+ to insns.dat.
2013
+
2014
+ \b Added the following new instructions: SYSENTER, SYSEXIT, FXSAVE,
2015
+ FXRSTOR, UD1, UD2 (the latter two are two opcodes that Intel
2016
+ guarantee will never be used; one of them is documented as UD2 in
2017
+ Intel documentation, the other one just as "Undefined Opcode" --
2018
+ calling it UD1 seemed to make sense.)
2019
+
2020
+ \b MAX_SYMBOL was defined to be 9, but LOADALL286 and LOADALL386 are 10
2021
+ characters long. Now MAX_SYMBOL is derived from insns.dat.
2022
+
2023
+ \b A note on the BASIC programs included: forget them. insns.bas is
2024
+ already out of date. Get yourself a Perl interpreter for your
2025
+ platform of choice at
2026
+ \W{http://www.cpan.org/ports/index.html}{http://www.cpan.org/ports/index.html}.
2027
+
2028
+
2029
+ \S{cl-0.98p3} Version 0.98 pre-release 3
2030
+
2031
+ \b added response file support, improved command line handling, new layout
2032
+ help screen
2033
+
2034
+ \b fixed limit checking bug, 'OUT byte nn, reg' bug, and a couple of rdoff
2035
+ related bugs, updated Wishlist; 0.98 Prerelease 3.
2036
+
2037
+
2038
+ \S{cl-0.98p2} Version 0.98 pre-release 2
2039
+
2040
+ \b fixed bug in outcoff.c to do with truncating section names longer
2041
+ than 8 characters, referencing beyond end of string; 0.98 pre-release 2
2042
+
2043
+
2044
+ \S{cl-0.98p1} Version 0.98 pre-release 1
2045
+
2046
+ \b Fixed a bug whereby STRUC didn't work at all in RDF.
2047
+
2048
+ \b Fixed a problem with group specification in PUBDEFs in OBJ.
2049
+
2050
+ \b Improved ease of adding new output formats. Contribution due to
2051
+ Fox Cutter.
2052
+
2053
+ \b Fixed a bug in relocations in the `bin' format: was showing up when
2054
+ a relocatable reference crossed an 8192-byte boundary in any output
2055
+ section.
2056
+
2057
+ \b Fixed a bug in local labels: local-label lookups were inconsistent
2058
+ between passes one and two if an EQU occurred between the definition
2059
+ of a global label and the subsequent use of a local label local to
2060
+ that global.
2061
+
2062
+ \b Fixed a seg-fault in the preprocessor (again) which happened when
2063
+ you use a blank line as the first line of a multi-line macro
2064
+ definition and then defined a label on the same line as a call to
2065
+ that macro.
2066
+
2067
+ \b Fixed a stale-pointer bug in the handling of the NASM environment
2068
+ variable. Thanks to Thomas McWilliams.
2069
+
2070
+ \b ELF had a hard limit on the number of sections which caused
2071
+ segfaults when transgressed. Fixed.
2072
+
2073
+ \b Added ability for ndisasm to read from stdin by using `-' as the
2074
+ filename.
2075
+
2076
+ \b ndisasm wasn't outputting the TO keyword. Fixed.
2077
+
2078
+ \b Fixed error cascade on bogus expression in \c{%if} - an error in
2079
+ evaluation was causing the entire \c{%if} to be discarded, thus creating
2080
+ trouble later when the \c{%else} or \c{%endif} was encountered.
2081
+
2082
+ \b Forward reference tracking was instruction-granular not operand-
2083
+ granular, which was causing 286-specific code to be generated
2084
+ needlessly on code of the form `shr word [forwardref],1'. Thanks to
2085
+ Jim Hague for sending a patch.
2086
+
2087
+ \b All messages now appear on stdout, as sending them to stderr serves
2088
+ no useful purpose other than to make redirection difficult.
2089
+
2090
+ \b Fixed the problem with EQUs pointing to an external symbol - this
2091
+ now generates an error message.
2092
+
2093
+ \b Allowed multiple size prefixes to an operand, of which only the first
2094
+ is taken into account.
2095
+
2096
+ \b Incorporated John Fine's changes, including fixes of a large number
2097
+ of preprocessor bugs, some small problems in OBJ, and a reworking of
2098
+ label handling to define labels before their line is assembled, rather
2099
+ than after.
2100
+
2101
+ \b Reformatted a lot of the source code to be more readable. Included
2102
+ 'coding.txt' as a guideline for how to format code for contributors.
2103
+
2104
+ \b Stopped nested \c{%reps} causing a panic - they now cause a slightly more
2105
+ friendly error message instead.
2106
+
2107
+ \b Fixed floating point constant problems (patch by Pedro Gimeno)
2108
+
2109
+ \b Fixed the return value of insn_size() not being checked for -1, indicating
2110
+ an error.
2111
+
2112
+ \b Incorporated 3Dnow! instructions.
2113
+
2114
+ \b Fixed the 'mov eax, eax + ebx' bug.
2115
+
2116
+ \b Fixed the GLOBAL EQU bug in ELF. Released developers release 3.
2117
+
2118
+ \b Incorporated John Fine's command line parsing changes
2119
+
2120
+ \b Incorporated David Lindauer's OMF debug support
2121
+
2122
+ \b Made changes for LCC 4.0 support (\c{__NASM_CDecl__}, removed register size
2123
+ specification warning when sizes agree).
2124
+
2125
+
2126
+ \H{cl-0.9x} NASM 0.9 Series
2127
+
2128
+ Revisions before 0.98.
2129
+
2130
+
2131
+ \S{cl-0.97} Version 0.97 released December 1997
2132
+
2133
+ \b This was entirely a bug-fix release to 0.96, which seems to have got
2134
+ cursed. Silly me.
2135
+
2136
+ \b Fixed stupid mistake in OBJ which caused `MOV EAX,<constant>' to
2137
+ fail. Caused by an error in the `MOV EAX,<segment>' support.
2138
+
2139
+ \b ndisasm hung at EOF when compiled with lcc on Linux because lcc on
2140
+ Linux somehow breaks feof(). ndisasm now does not rely on feof().
2141
+
2142
+ \b A heading in the documentation was missing due to a markup error in
2143
+ the indexing. Fixed.
2144
+
2145
+ \b Fixed failure to update all pointers on realloc() within extended-
2146
+ operand code in parser.c. Was causing wrong behaviour and seg faults
2147
+ on lines such as `dd 0.0,0.0,0.0,0.0,...'
2148
+
2149
+ \b Fixed a subtle preprocessor bug whereby invoking one multi-line
2150
+ macro on the first line of the expansion of another, when the second
2151
+ had been invoked with a label defined before it, didn't expand the
2152
+ inner macro.
2153
+
2154
+ \b Added internal.doc back in to the distribution archives - it was
2155
+ missing in 0.96 *blush*
2156
+
2157
+ \b Fixed bug causing 0.96 to be unable to assemble its own test files,
2158
+ specifically objtest.asm. *blush again*
2159
+
2160
+ \b Fixed seg-faults and bogus error messages caused by mismatching
2161
+ \c{%rep} and \c{%endrep} within multi-line macro definitions.
2162
+
2163
+ \b Fixed a problem with buffer overrun in OBJ, which was causing
2164
+ corruption at ends of long PUBDEF records.
2165
+
2166
+ \b Separated DOS archives into main-program and documentation to reduce
2167
+ download size.
2168
+
2169
+
2170
+ \S{cl-0.96} Version 0.96 released November 1997
2171
+
2172
+ \b Fixed a bug whereby, if `nasm sourcefile' would cause a filename
2173
+ collision warning and put output into `nasm.out', then `nasm
2174
+ sourcefile -o outputfile' still gave the warning even though the
2175
+ `-o' was honoured.
2176
+ Fixed name pollution under Digital UNIX: one of its header files
2177
+ defined R_SP, which broke the enum in nasm.h.
2178
+
2179
+ \b Fixed minor instruction table problems: FUCOM and FUCOMP didn't have
2180
+ two-operand forms; NDISASM didn't recognise the longer register
2181
+ forms of PUSH and POP (eg FF F3 for PUSH BX); TEST mem,imm32 was
2182
+ flagged as undocumented; the 32-bit forms of CMOV had 16-bit operand
2183
+ size prefixes; `AAD imm' and `AAM imm' are no longer flagged as
2184
+ undocumented because the Intel Architecture reference documents
2185
+ them.
2186
+
2187
+ \b Fixed a problem with the local-label mechanism, whereby strange
2188
+ types of symbol (EQUs, auto-defined OBJ segment base symbols)
2189
+ interfered with the `previous global label' value and screwed up
2190
+ local labels.
2191
+
2192
+ \b Fixed a bug whereby the stub preprocessor didn't communicate with
2193
+ the listing file generator, so that the -a and -l options in
2194
+ conjunction would produce a useless listing file.
2195
+
2196
+ \b Merged `os2' object file format back into `obj', after discovering
2197
+ that `obj' _also_ shouldn't have a link pass separator in a module
2198
+ containing a non-trivial MODEND. Flat segments are now declared
2199
+ using the FLAT attribute. `os2' is no longer a valid object format
2200
+ name: use `obj'.
2201
+
2202
+ \b Removed the fixed-size temporary storage in the evaluator. Very very
2203
+ long expressions (like `mov ax,1+1+1+1+...' for two hundred 1s or
2204
+ so) should now no longer crash NASM.
2205
+
2206
+ \b Fixed a bug involving segfaults on disassembly of MMX instructions,
2207
+ by changing the meaning of one of the operand-type flags in nasm.h.
2208
+ This may cause other apparently unrelated MMX problems; it needs to
2209
+ be tested thoroughly.
2210
+
2211
+ \b Fixed some buffer overrun problems with large OBJ output files.
2212
+ Thanks to DJ Delorie for the bug report and fix.
2213
+
2214
+ \b Made preprocess-only mode actually listen to the \c{%line} markers as it
2215
+ prints them, so that it can report errors more sanely.
2216
+
2217
+ \b Re-designed the evaluator to keep more sensible track of expressions
2218
+ involving forward references: can now cope with previously-nightmare
2219
+ situations such as:
2220
+
2221
+ \c mov ax,foo | bar
2222
+ \c foo equ 1
2223
+ \c bar equ 2
2224
+
2225
+ \b Added the ALIGN and ALIGNB standard macros.
2226
+
2227
+ \b Added PIC support in ELF: use of WRT to obtain the four extra
2228
+ relocation types needed.
2229
+
2230
+ \b Added the ability for output file formats to define their own
2231
+ extensions to the GLOBAL, COMMON and EXTERN directives.
2232
+
2233
+ \b Implemented common-variable alignment, and global-symbol type and
2234
+ size declarations, in ELF.
2235
+
2236
+ \b Implemented NEAR and FAR keywords for common variables, plus
2237
+ far-common element size specification, in OBJ.
2238
+
2239
+ \b Added a feature whereby EXTERNs and COMMONs in OBJ can be given a
2240
+ default WRT specification (either a segment or a group).
2241
+
2242
+ \b Transformed the Unix NASM archive into an auto-configuring package.
2243
+
2244
+ \b Added a sanity-check for people applying SEG to things which are
2245
+ already segment bases: this previously went unnoticed by the SEG
2246
+ processing and caused OBJ-driver panics later.
2247
+
2248
+ \b Added the ability, in OBJ format, to deal with `MOV EAX,<segment>'
2249
+ type references: OBJ doesn't directly support dword-size segment
2250
+ base fixups, but as long as the low two bytes of the constant term
2251
+ are zero, a word-size fixup can be generated instead and it will
2252
+ work.
2253
+
2254
+ \b Added the ability to specify sections' alignment requirements in
2255
+ Win32 object files and pure binary files.
2256
+
2257
+ \b Added preprocess-time expression evaluation: the \c{%assign} (and
2258
+ \c{%iassign}) directive and the bare \c{%if} (and \c{%elif}) conditional. Added
2259
+ relational operators to the evaluator, for use only in \c{%if}
2260
+ constructs: the standard relationals = < > <= >= <> (and C-like
2261
+ synonyms == and !=) plus low-precedence logical operators &&, ^^ and
2262
+ ||.
2263
+
2264
+ \b Added a preprocessor repeat construct: \c{%rep} / \c{%exitrep} / \c{%endrep}.
2265
+
2266
+ \b Added the __FILE__ and __LINE__ standard macros.
2267
+
2268
+ \b Added a sanity check for number constants being greater than
2269
+ 0xFFFFFFFF. The warning can be disabled.
2270
+
2271
+ \b Added the %0 token whereby a variadic multi-line macro can tell how
2272
+ many parameters it's been given in a specific invocation.
2273
+
2274
+ \b Added \c{%rotate}, allowing multi-line macro parameters to be cycled.
2275
+
2276
+ \b Added the `*' option for the maximum parameter count on multi-line
2277
+ macros, allowing them to take arbitrarily many parameters.
2278
+
2279
+ \b Added the ability for the user-level forms of EXTERN, GLOBAL and
2280
+ COMMON to take more than one argument.
2281
+
2282
+ \b Added the IMPORT and EXPORT directives in OBJ format, to deal with
2283
+ Windows DLLs.
2284
+
2285
+ \b Added some more preprocessor \c{%if} constructs: \c{%ifidn} / \c{%ifidni} (exact
2286
+ textual identity), and \c{%ifid} / \c{%ifnum} / \c{%ifstr} (token type testing).
2287
+
2288
+ \b Added the ability to distinguish SHL AX,1 (the 8086 version) from
2289
+ SHL AX,BYTE 1 (the 286-and-upwards version whose constant happens to
2290
+ be 1).
2291
+
2292
+ \b Added NetBSD/FreeBSD/OpenBSD's variant of a.out format, complete
2293
+ with PIC shared library features.
2294
+
2295
+ \b Changed NASM's idiosyncratic handling of FCLEX, FDISI, FENI, FINIT,
2296
+ FSAVE, FSTCW, FSTENV, and FSTSW to bring it into line with the
2297
+ otherwise accepted standard. The previous behaviour, though it was a
2298
+ deliberate feature, was a deliberate feature based on a
2299
+ misunderstanding. Apologies for the inconvenience.
2300
+
2301
+ \b Improved the flexibility of ABSOLUTE: you can now give it an
2302
+ expression rather than being restricted to a constant, and it can
2303
+ take relocatable arguments as well.
2304
+
2305
+ \b Added the ability for a variable to be declared as EXTERN multiple
2306
+ times, and the subsequent definitions are just ignored.
2307
+
2308
+ \b We now allow instruction prefixes (CS, DS, LOCK, REPZ etc) to be
2309
+ alone on a line (without a following instruction).
2310
+
2311
+ \b Improved sanity checks on whether the arguments to EXTERN, GLOBAL
2312
+ and COMMON are valid identifiers.
2313
+
2314
+ \b Added misc/exebin.mac to allow direct generation of .EXE files by
2315
+ hacking up an EXE header using DB and DW; also added test/binexe.asm
2316
+ to demonstrate the use of this. Thanks to Yann Guidon for
2317
+ contributing the EXE header code.
2318
+
2319
+ \b ndisasm forgot to check whether the input file had been successfully
2320
+ opened. Now it does. Doh!
2321
+
2322
+ \b Added the Cyrix extensions to the MMX instruction set.
2323
+
2324
+ \b Added a hinting mechanism to allow [EAX+EBX] and [EBX+EAX] to be
2325
+ assembled differently. This is important since [ESI+EBP] and
2326
+ [EBP+ESI] have different default base segment registers.
2327
+
2328
+ \b Added support for the PharLap OMF extension for 4096-byte segment
2329
+ alignment.
2330
+
2331
+
2332
+ \S{cl-0.95 released July 1997} Version 0.95 released July 1997
2333
+
2334
+ \b Fixed yet another ELF bug. This one manifested if the user relied on
2335
+ the default segment, and attempted to define global symbols without
2336
+ first explicitly declaring the target segment.
2337
+
2338
+ \b Added makefiles (for NASM and the RDF tools) to build Win32 console
2339
+ apps under Symantec C++. Donated by Mark Junker.
2340
+
2341
+ \b Added `macros.bas' and `insns.bas', QBasic versions of the Perl
2342
+ scripts that convert `standard.mac' to `macros.c' and convert
2343
+ `insns.dat' to `insnsa.c' and `insnsd.c'. Also thanks to Mark
2344
+ Junker.
2345
+
2346
+ \b Changed the diassembled forms of the conditional instructions so
2347
+ that JB is now emitted as JC, and other similar changes. Suggested
2348
+ list by Ulrich Doewich.
2349
+
2350
+ \b Added `@' to the list of valid characters to begin an identifier
2351
+ with.
2352
+
2353
+ \b Documentary changes, notably the addition of the `Common Problems'
2354
+ section in nasm.doc.
2355
+
2356
+ \b Fixed a bug relating to 32-bit PC-relative fixups in OBJ.
2357
+
2358
+ \b Fixed a bug in perm_copy() in labels.c which was causing exceptions
2359
+ in cleanup_labels() on some systems.
2360
+
2361
+ \b Positivity sanity check in TIMES argument changed from a warning to
2362
+ an error following a further complaint.
2363
+
2364
+ \b Changed the acceptable limits on byte and word operands to allow
2365
+ things like `~10111001b' to work.
2366
+
2367
+ \b Fixed a major problem in the preprocessor which caused seg-faults if
2368
+ macro definitions contained blank lines or comment-only lines.
2369
+
2370
+ \b Fixed inadequate error checking on the commas separating the
2371
+ arguments to `db', `dw' etc.
2372
+
2373
+ \b Fixed a crippling bug in the handling of macros with operand counts
2374
+ defined with a `+' modifier.
2375
+
2376
+ \b Fixed a bug whereby object file formats which stored the input file
2377
+ name in the output file (such as OBJ and COFF) weren't doing so
2378
+ correctly when the output file name was specified on the command
2379
+ line.
2380
+
2381
+ \b Removed [INC] and [INCLUDE] support for good, since they were
2382
+ obsolete anyway.
2383
+
2384
+ \b Fixed a bug in OBJ which caused all fixups to be output in 16-bit
2385
+ (old-format) FIXUPP records, rather than putting the 32-bit ones in
2386
+ FIXUPP32 (new-format) records.
2387
+
2388
+ \b Added, tentatively, OS/2 object file support (as a minor variant on
2389
+ OBJ).
2390
+
2391
+ \b Updates to Fox Cutter's Borland C makefile, Makefile.bc2.
2392
+
2393
+ \b Removed a spurious second fclose() on the output file.
2394
+
2395
+ \b Added the `-s' command line option to redirect all messages which
2396
+ would go to stderr (errors, help text) to stdout instead.
2397
+
2398
+ \b Added the `-w' command line option to selectively suppress some
2399
+ classes of assembly warning messages.
2400
+
2401
+ \b Added the `-p' pre-include and `-d' pre-define command-line options.
2402
+
2403
+ \b Added an include file search path: the `-i' command line option.
2404
+
2405
+ \b Fixed a silly little preprocessor bug whereby starting a line with a
2406
+ `%!' environment-variable reference caused an `unknown directive'
2407
+ error.
2408
+
2409
+ \b Added the long-awaited listing file support: the `-l' command line
2410
+ option.
2411
+
2412
+ \b Fixed a problem with OBJ format whereby, in the absence of any
2413
+ explicit segment definition, non-global symbols declared in the
2414
+ implicit default segment generated spurious EXTDEF records in the
2415
+ output.
2416
+
2417
+ \b Added the NASM environment variable.
2418
+
2419
+ \b From this version forward, Win32 console-mode binaries will be
2420
+ included in the DOS distribution in addition to the 16-bit binaries.
2421
+ Added Makefile.vc for this purpose.
2422
+
2423
+ \b Added `return 0;' to test/objlink.c to prevent compiler warnings.
2424
+
2425
+ \b Added the __NASM_MAJOR__ and __NASM_MINOR__ standard defines.
2426
+
2427
+ \b Added an alternative memory-reference syntax in which prefixing an
2428
+ operand with `&' is equivalent to enclosing it in square brackets,
2429
+ at the request of Fox Cutter.
2430
+
2431
+ \b Errors in pass two now cause the program to return a non-zero error
2432
+ code, which they didn't before.
2433
+
2434
+ \b Fixed the single-line macro cycle detection, which didn't work at
2435
+ all on macros with no parameters (caused an infinite loop). Also
2436
+ changed the behaviour of single-line macro cycle detection to work
2437
+ like cpp, so that macros like `extrn' as given in the documentation
2438
+ can be implemented.
2439
+
2440
+ \b Fixed the implementation of WRT, which was too restrictive in that
2441
+ you couldn't do `mov ax,[di+abc wrt dgroup]' because (di+abc) wasn't
2442
+ a relocatable reference.
2443
+
2444
+
2445
+ \S{cl-0.94 released April 1997} Version 0.94 released April 1997
2446
+
2447
+
2448
+ \b Major item: added the macro processor.
2449
+
2450
+ \b Added undocumented instructions SMI, IBTS, XBTS and LOADALL286. Also
2451
+ reorganised CMPXCHG instruction into early-486 and Pentium forms.
2452
+ Thanks to Thobias Jones for the information.
2453
+
2454
+ \b Fixed two more stupid bugs in ELF, which were causing `ld' to
2455
+ continue to seg-fault in a lot of non-trivial cases.
2456
+
2457
+ \b Fixed a seg-fault in the label manager.
2458
+
2459
+ \b Stopped FBLD and FBSTP from _requiring_ the TWORD keyword, which is
2460
+ the only option for BCD loads/stores in any case.
2461
+
2462
+ \b Ensured FLDCW, FSTCW and FSTSW can cope with the WORD keyword, if
2463
+ anyone bothers to provide it. Previously they complained unless no
2464
+ keyword at all was present.
2465
+
2466
+ \b Some forms of FDIV/FDIVR and FSUB/FSUBR were still inverted: a
2467
+ vestige of a bug that I thought had been fixed in 0.92. This was
2468
+ fixed, hopefully for good this time...
2469
+
2470
+ \b Another minor phase error (insofar as a phase error can _ever_ be
2471
+ minor) fixed, this one occurring in code of the form
2472
+
2473
+ \c rol ax,forward_reference
2474
+ \c forward_reference equ 1
2475
+
2476
+ \b The number supplied to TIMES is now sanity-checked for positivity,
2477
+ and also may be greater than 64K (which previously didn't work on
2478
+ 16-bit systems).
2479
+
2480
+ \b Added Watcom C makefiles, and misc/pmw.bat, donated by Dominik Behr.
2481
+
2482
+ \b Added the INCBIN pseudo-opcode.
2483
+
2484
+ \b Due to the advent of the preprocessor, the [INCLUDE] and [INC]
2485
+ directives have become obsolete. They are still supported in this
2486
+ version, with a warning, but won't be in the next.
2487
+
2488
+ \b Fixed a bug in OBJ format, which caused incorrect object records to
2489
+ be output when absolute labels were made global.
2490
+
2491
+ \b Updates to RDOFF subdirectory, and changes to outrdf.c.
2492
+
2493
+
2494
+ \S{cl-0.93 released January 1997} Version 0.93 released January 1997
2495
+
2496
+ This release went out in a great hurry after semi-crippling bugs
2497
+ were found in 0.92.
2498
+
2499
+ \b Really \e{did} fix the stack overflows this time. *blush*
2500
+
2501
+ \b Had problems with EA instruction sizes changing between passes, when
2502
+ an offset contained a forward reference and so 4 bytes were
2503
+ allocated for the offset in pass one; by pass two the symbol had
2504
+ been defined and happened to be a small absolute value, so only 1
2505
+ byte got allocated, causing instruction size mismatch between passes
2506
+ and hence incorrect address calculations. Fixed.
2507
+
2508
+ \b Stupid bug in the revised ELF section generation fixed (associated
2509
+ string-table section for .symtab was hard-coded as 7, even when this
2510
+ didn't fit with the real section table). Was causing `ld' to
2511
+ seg-fault under Linux.
2512
+
2513
+ \b Included a new Borland C makefile, Makefile.bc2, donated by Fox
2514
+ Cutter <lmb@comtch.iea.com>.
2515
+
2516
+
2517
+ \S{cl-0.92 released January 1997} Version 0.92 released January 1997
2518
+
2519
+ \b The FDIVP/FDIVRP and FSUBP/FSUBRP pairs had been inverted: this was
2520
+ fixed. This also affected the LCC driver.
2521
+
2522
+ \b Fixed a bug regarding 32-bit effective addresses of the form
2523
+ \c{[other_register+ESP]}.
2524
+
2525
+ \b Documentary changes, notably documentation of the fact that Borland
2526
+ Win32 compilers use `obj' rather than `win32' object format.
2527
+
2528
+ \b Fixed the COMENT record in OBJ files, which was formatted
2529
+ incorrectly.
2530
+
2531
+ \b Fixed a bug causing segfaults in large RDF files.
2532
+
2533
+ \b OBJ format now strips initial periods from segment and group
2534
+ definitions, in order to avoid complications with the local label
2535
+ syntax.
2536
+
2537
+ \b Fixed a bug in disassembling far calls and jumps in NDISASM.
2538
+
2539
+ \b Added support for user-defined sections in COFF and ELF files.
2540
+
2541
+ \b Compiled the DOS binaries with a sensible amount of stack, to
2542
+ prevent stack overflows on any arithmetic expression containing
2543
+ parentheses.
2544
+
2545
+ \b Fixed a bug in handling of files that do not terminate in a newline.
2546
+
2547
+
2548
+ \S{cl-0.91 released November 1996} Version 0.91 released November 1996
2549
+
2550
+ \b Loads of bug fixes.
2551
+
2552
+ \b Support for RDF added.
2553
+
2554
+ \b Support for DBG debugging format added.
2555
+
2556
+ \b Support for 32-bit extensions to Microsoft OBJ format added.
2557
+
2558
+ \b Revised for Borland C: some variable names changed, makefile added.
2559
+
2560
+ \b LCC support revised to actually work.
2561
+
2562
+ \b JMP/CALL NEAR/FAR notation added.
2563
+
2564
+ \b `a16', `o16', `a32' and `o32' prefixes added.
2565
+
2566
+ \b Range checking on short jumps implemented.
2567
+
2568
+ \b MMX instruction support added.
2569
+
2570
+ \b Negative floating point constant support added.
2571
+
2572
+ \b Memory handling improved to bypass 64K barrier under DOS.
2573
+
2574
+ \b \c{$} prefix to force treatment of reserved words as identifiers added.
2575
+
2576
+ \b Default-size mechanism for object formats added.
2577
+
2578
+ \b Compile-time configurability added.
2579
+
2580
+ \b \c{#}, \c{@}, \c{~} and c\{?} are now valid characters in labels.
2581
+
2582
+ \b \c{-e} and \c{-k} options in NDISASM added.
2583
+
2584
+
2585
+ \S{cl-0.90 released October 1996} Version 0.90 released October 1996
2586
+
2587
+ First release version. First support for object file output. Other
2588
+ changes from previous version (0.3x) too numerous to document.