diff options
author | polwex <polwex@sortug.com> | 2025-10-05 21:56:51 +0700 |
---|---|---|
committer | polwex <polwex@sortug.com> | 2025-10-05 21:56:51 +0700 |
commit | fcedfddf00b3f994e4f4e40332ac7fc192c63244 (patch) | |
tree | 51d38e62c7bdfcc5f9a5e9435fe820c93cfc9a3d /vere/ext/nasm/macros |
claude is gud
Diffstat (limited to 'vere/ext/nasm/macros')
-rw-r--r-- | vere/ext/nasm/macros/altreg.mac | 107 | ||||
-rw-r--r-- | vere/ext/nasm/macros/fp.mac | 62 | ||||
-rw-r--r-- | vere/ext/nasm/macros/ifunc.mac | 48 | ||||
-rw-r--r-- | vere/ext/nasm/macros/macros.c | 875 | ||||
-rwxr-xr-x | vere/ext/nasm/macros/macros.pl | 311 | ||||
-rw-r--r-- | vere/ext/nasm/macros/masm.mac | 82 | ||||
-rw-r--r-- | vere/ext/nasm/macros/smartalign.mac | 191 | ||||
-rw-r--r-- | vere/ext/nasm/macros/standard.mac | 331 |
8 files changed, 2007 insertions, 0 deletions
diff --git a/vere/ext/nasm/macros/altreg.mac b/vere/ext/nasm/macros/altreg.mac new file mode 100644 index 0000000..16134cd --- /dev/null +++ b/vere/ext/nasm/macros/altreg.mac @@ -0,0 +1,107 @@ +;; -------------------------------------------------------------------------- +;; +;; Copyright 1996-2009 The NASM Authors - All Rights Reserved +;; See the file AUTHORS included with the NASM distribution for +;; the specific copyright holders. +;; +;; Redistribution and use in source and binary forms, with or without +;; modification, are permitted provided that the following +;; conditions are met: +;; +;; * Redistributions of source code must retain the above copyright +;; notice, this list of conditions and the following disclaimer. +;; * Redistributions in binary form must reproduce the above +;; copyright notice, this list of conditions and the following +;; disclaimer in the documentation and/or other materials provided +;; with the distribution. +;; +;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +;; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +;; NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +;; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +;; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +;; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +;; OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +;; EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +;; +;; -------------------------------------------------------------------------- + +;; +;; altreg.mac +;; +;; Alternate register names for 64-bit mode +;; + +USE: altreg + +;; +;; Intel documents R8L-R15L instead of R8B-R15B +;; (Warning: this may confuse people with an AT&T-style assembly +;; background, where "r8l" means R8D, etc.) +;; +%idefine r8l r8b +%idefine r9l r9b +%idefine r10l r10b +%idefine r11l r11b +%idefine r12l r12b +%idefine r13l r13b +%idefine r14l r14b +%idefine r15l r15b + +;; +;; Numeric register names for the lower 8 registers +;; +%idefine r0 rax +%idefine r1 rcx +%idefine r2 rdx +%idefine r3 rbx +%idefine r4 rsp +%idefine r5 rbp +%idefine r6 rsi +%idefine r7 rdi + +%idefine r0d eax +%idefine r1d ecx +%idefine r2d edx +%idefine r3d ebx +%idefine r4d esp +%idefine r5d ebp +%idefine r6d esi +%idefine r7d edi + +%idefine r0w ax +%idefine r1w cx +%idefine r2w dx +%idefine r3w bx +%idefine r4w sp +%idefine r5w bp +%idefine r6w si +%idefine r7w di + +%idefine r0b al +%idefine r1b cl +%idefine r2b dl +%idefine r3b bl +%idefine r4b spl +%idefine r5b bpl +%idefine r6b sil +%idefine r7b dil + +%idefine r0l al +%idefine r1l cl +%idefine r2l dl +%idefine r3l bl +%idefine r4l spl +%idefine r5l bpl +%idefine r6l sil +%idefine r7l dil + +%idefine r0h ah +%idefine r1h ch +%idefine r2h dh +%idefine r3h bh diff --git a/vere/ext/nasm/macros/fp.mac b/vere/ext/nasm/macros/fp.mac new file mode 100644 index 0000000..3a094a5 --- /dev/null +++ b/vere/ext/nasm/macros/fp.mac @@ -0,0 +1,62 @@ +;; -------------------------------------------------------------------------- +;; +;; Copyright 2010-2020 The NASM Authors - All Rights Reserved +;; See the file AUTHORS included with the NASM distribution for +;; the specific copyright holders. +;; +;; Redistribution and use in source and binary forms, with or without +;; modification, are permitted provided that the following +;; conditions are met: +;; +;; * Redistributions of source code must retain the above copyright +;; notice, this list of conditions and the following disclaimer. +;; * Redistributions in binary form must reproduce the above +;; copyright notice, this list of conditions and the following +;; disclaimer in the documentation and/or other materials provided +;; with the distribution. +;; +;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +;; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +;; NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +;; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +;; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +;; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +;; OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +;; EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +;; +;; -------------------------------------------------------------------------- + +;; +;; fp.mac +;; +;; Floating-point utility macros +;; + +USE: fp + +%define Inf __?Infinity?__ +%define NaN __?QNaN?__ +%define QNaN __?QNaN?__ +%define SNaN __?SNaN?__ + +%define float8(x) __?float8?__(x) +%define float16(x) __?float16?__(x) +%define bfloat16(x) __?bfloat16?__(x) +%define float32(x) __?float32?__(x) +%define float64(x) __?float64?__(x) +%define float80m(x) __?float80m?__(x) +%define float80e(x) __?float80e?__(x) +%define float128l(x) __?float128l?__(x) +%define float128h(x) __?float128h?__(x) + +%imacro bf16 1-*.nolist + %rep %0 + dw __?bfloat16?__(%1) + %rotate 1 + %endrep +%endmacro diff --git a/vere/ext/nasm/macros/ifunc.mac b/vere/ext/nasm/macros/ifunc.mac new file mode 100644 index 0000000..4db46d3 --- /dev/null +++ b/vere/ext/nasm/macros/ifunc.mac @@ -0,0 +1,48 @@ +;; -------------------------------------------------------------------------- +;; +;; Copyright 2012-2016 The NASM Authors - All Rights Reserved +;; See the file AUTHORS included with the NASM distribution for +;; the specific copyright holders. +;; +;; Redistribution and use in source and binary forms, with or without +;; modification, are permitted provided that the following +;; conditions are met: +;; +;; * Redistributions of source code must retain the above copyright +;; notice, this list of conditions and the following disclaimer. +;; * Redistributions in binary form must reproduce the above +;; copyright notice, this list of conditions and the following +;; disclaimer in the documentation and/or other materials provided +;; with the distribution. +;; +;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +;; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +;; NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +;; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +;; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +;; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +;; OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +;; EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +;; +;; -------------------------------------------------------------------------- + +;; +;; ifunc.mac +;; +;; Integer function utility macros +;; + +USE: ifunc + +%idefine ilog2(x) (__?ilog2e?__(x)) +%idefine ilog2e(x) (__?ilog2e?__(x)) +%idefine ilog2w(x) (__?ilog2w?__(x)) +%idefine ilog2fw(x) (__?ilog2w?__(x)) +%idefine ilog2f(x) (__?ilog2f?__(x)) +%idefine ilog2cw(x) (__?ilog2w?__(x) * 0 + __?ilog2c?__(x)) +%idefine ilog2c(x) (__?ilog2c?__(x)) diff --git a/vere/ext/nasm/macros/macros.c b/vere/ext/nasm/macros/macros.c new file mode 100644 index 0000000..b00e426 --- /dev/null +++ b/vere/ext/nasm/macros/macros.c @@ -0,0 +1,875 @@ +/* + * Do not edit - this file auto-generated by macros.pl from: + * version.mac + * ./macros/altreg.mac + * ./macros/fp.mac + * ./macros/ifunc.mac + * ./macros/masm.mac + * ./macros/smartalign.mac + * ./macros/standard.mac + * ./output/outaout.mac + * ./output/outas86.mac + * ./output/outbin.mac + * ./output/outcoff.mac + * ./output/outdbg.mac + * ./output/outelf.mac + * ./output/outmacho.mac + * ./output/outobj.mac + */ + +#include "tables.h" +#include "nasmlib.h" +#include "hashtbl.h" +#include "outform.h" + +#define p_if 128 +#define p_ifctx 129 +#define p_ifdef 130 +#define p_ifdefalias 131 +#define p_ifdifi 132 +#define p_ifempty 133 +#define p_ifenv 134 +#define p_ifid 135 +#define p_ifidn 136 +#define p_ifidni 137 +#define p_ifmacro 138 +#define p_ifnum 139 +#define p_ifstr 140 +#define p_iftoken 141 +#define p_ifusable 142 +#define p_ifusing 143 +#define p_ifn 144 +#define p_ifnctx 145 +#define p_ifndef 146 +#define p_ifndefalias 147 +#define p_ifndifi 148 +#define p_ifnempty 149 +#define p_ifnenv 150 +#define p_ifnid 151 +#define p_ifnidn 152 +#define p_ifnidni 153 +#define p_ifnmacro 154 +#define p_ifnnum 155 +#define p_ifnstr 156 +#define p_ifntoken 157 +#define p_ifnusable 158 +#define p_ifnusing 159 +#define p_elif 160 +#define p_elifctx 161 +#define p_elifdef 162 +#define p_elifdefalias 163 +#define p_elifdifi 164 +#define p_elifempty 165 +#define p_elifenv 166 +#define p_elifid 167 +#define p_elifidn 168 +#define p_elifidni 169 +#define p_elifmacro 170 +#define p_elifnum 171 +#define p_elifstr 172 +#define p_eliftoken 173 +#define p_elifusable 174 +#define p_elifusing 175 +#define p_elifn 176 +#define p_elifnctx 177 +#define p_elifndef 178 +#define p_elifndefalias 179 +#define p_elifndifi 180 +#define p_elifnempty 181 +#define p_elifnenv 182 +#define p_elifnid 183 +#define p_elifnidn 184 +#define p_elifnidni 185 +#define p_elifnmacro 186 +#define p_elifnnum 187 +#define p_elifnstr 188 +#define p_elifntoken 189 +#define p_elifnusable 190 +#define p_elifnusing 191 +#define p_aliases 192 +#define p_arg 193 +#define p_clear 194 +#define p_depend 195 +#define p_else 196 +#define p_endif 197 +#define p_endm 198 +#define p_endmacro 199 +#define p_endrep 200 +#define p_error 201 +#define p_exitmacro 202 +#define p_exitrep 203 +#define p_fatal 204 +#define p_include 205 +#define p_line 206 +#define p_local 207 +#define p_null 208 +#define p_pop 209 +#define p_pragma 210 +#define p_push 211 +#define p_rep 212 +#define p_repl 213 +#define p_require 214 +#define p_rotate 215 +#define p_stacksize 216 +#define p_undef 217 +#define p_undefalias 218 +#define p_use 219 +#define p_warning 220 +#define p_assign 222 +#define p_iassign 223 +#define p_defalias 224 +#define p_idefalias 225 +#define p_define 226 +#define p_idefine 227 +#define p_defstr 228 +#define p_idefstr 229 +#define p_deftok 230 +#define p_ideftok 231 +#define p_macro 232 +#define p_imacro 233 +#define p_pathsearch 234 +#define p_ipathsearch 235 +#define p_rmacro 236 +#define p_irmacro 237 +#define p_strcat 238 +#define p_istrcat 239 +#define p_strlen 240 +#define p_istrlen 241 +#define p_substr 242 +#define p_isubstr 243 +#define p_xdefine 244 +#define p_ixdefine 245 +#define p_unmacro 246 +#define p_unimacro 247 +#define EOL 127 + + +#if 1 +const unsigned char nasm_stdmac_version[] = { + /* From version.mac */ + /* 0 */ p_define,'_','_','?','N','A','S','M','_','M','A','J','O','R','?','_','_',' ','2',EOL, + /* 20 */ p_define,'_','_','?','N','A','S','M','_','M','I','N','O','R','?','_','_',' ','1','6',EOL, + /* 41 */ p_define,'_','_','?','N','A','S','M','_','S','U','B','M','I','N','O','R','?','_','_',' ','1',EOL, + /* 64 */ p_define,'_','_','?','N','A','S','M','_','P','A','T','C','H','L','E','V','E','L','?','_','_',' ','0',EOL, + /* 89 */ p_define,'_','_','?','N','A','S','M','_','V','E','R','S','I','O','N','_','I','D','?','_','_',' ','0','0','2','1','0','0','1','0','0','h',EOL, + /* 123 */ p_define,'_','_','?','N','A','S','M','_','V','E','R','?','_','_',' ','\"','2','.','1','6','.','0','1','\"',EOL, + /* 149 */ EOL +}; +#endif + +#if 1 +static const unsigned char nasm_usemac_altreg[] = { + /* From ./macros/altreg.mac */ + /* 0 */ p_define,'_','_','?','U','S','E','_','A','L','T','R','E','G','?','_','_',EOL, + /* 0 */ p_defalias,'_','_','U','S','E','_','A','L','T','R','E','G','_','_',' ','_','_','?','U','S','E','A','L','T','R','E','G','?','_','_',EOL, + /* 32 */ p_idefine,'r','8','l',' ','r','8','b',EOL, + /* 41 */ p_idefine,'r','9','l',' ','r','9','b',EOL, + /* 50 */ p_idefine,'r','1','0','l',' ','r','1','0','b',EOL, + /* 61 */ p_idefine,'r','1','1','l',' ','r','1','1','b',EOL, + /* 72 */ p_idefine,'r','1','2','l',' ','r','1','2','b',EOL, + /* 83 */ p_idefine,'r','1','3','l',' ','r','1','3','b',EOL, + /* 94 */ p_idefine,'r','1','4','l',' ','r','1','4','b',EOL, + /* 105 */ p_idefine,'r','1','5','l',' ','r','1','5','b',EOL, + /* 116 */ p_idefine,'r','0',' ','r','a','x',EOL, + /* 124 */ p_idefine,'r','1',' ','r','c','x',EOL, + /* 132 */ p_idefine,'r','2',' ','r','d','x',EOL, + /* 140 */ p_idefine,'r','3',' ','r','b','x',EOL, + /* 148 */ p_idefine,'r','4',' ','r','s','p',EOL, + /* 156 */ p_idefine,'r','5',' ','r','b','p',EOL, + /* 164 */ p_idefine,'r','6',' ','r','s','i',EOL, + /* 172 */ p_idefine,'r','7',' ','r','d','i',EOL, + /* 180 */ p_idefine,'r','0','d',' ','e','a','x',EOL, + /* 189 */ p_idefine,'r','1','d',' ','e','c','x',EOL, + /* 198 */ p_idefine,'r','2','d',' ','e','d','x',EOL, + /* 207 */ p_idefine,'r','3','d',' ','e','b','x',EOL, + /* 216 */ p_idefine,'r','4','d',' ','e','s','p',EOL, + /* 225 */ p_idefine,'r','5','d',' ','e','b','p',EOL, + /* 234 */ p_idefine,'r','6','d',' ','e','s','i',EOL, + /* 243 */ p_idefine,'r','7','d',' ','e','d','i',EOL, + /* 252 */ p_idefine,'r','0','w',' ','a','x',EOL, + /* 260 */ p_idefine,'r','1','w',' ','c','x',EOL, + /* 268 */ p_idefine,'r','2','w',' ','d','x',EOL, + /* 276 */ p_idefine,'r','3','w',' ','b','x',EOL, + /* 284 */ p_idefine,'r','4','w',' ','s','p',EOL, + /* 292 */ p_idefine,'r','5','w',' ','b','p',EOL, + /* 300 */ p_idefine,'r','6','w',' ','s','i',EOL, + /* 308 */ p_idefine,'r','7','w',' ','d','i',EOL, + /* 316 */ p_idefine,'r','0','b',' ','a','l',EOL, + /* 324 */ p_idefine,'r','1','b',' ','c','l',EOL, + /* 332 */ p_idefine,'r','2','b',' ','d','l',EOL, + /* 340 */ p_idefine,'r','3','b',' ','b','l',EOL, + /* 348 */ p_idefine,'r','4','b',' ','s','p','l',EOL, + /* 357 */ p_idefine,'r','5','b',' ','b','p','l',EOL, + /* 366 */ p_idefine,'r','6','b',' ','s','i','l',EOL, + /* 375 */ p_idefine,'r','7','b',' ','d','i','l',EOL, + /* 384 */ p_idefine,'r','0','l',' ','a','l',EOL, + /* 392 */ p_idefine,'r','1','l',' ','c','l',EOL, + /* 400 */ p_idefine,'r','2','l',' ','d','l',EOL, + /* 408 */ p_idefine,'r','3','l',' ','b','l',EOL, + /* 416 */ p_idefine,'r','4','l',' ','s','p','l',EOL, + /* 425 */ p_idefine,'r','5','l',' ','b','p','l',EOL, + /* 434 */ p_idefine,'r','6','l',' ','s','i','l',EOL, + /* 443 */ p_idefine,'r','7','l',' ','d','i','l',EOL, + /* 452 */ p_idefine,'r','0','h',' ','a','h',EOL, + /* 460 */ p_idefine,'r','1','h',' ','c','h',EOL, + /* 468 */ p_idefine,'r','2','h',' ','d','h',EOL, + /* 476 */ p_idefine,'r','3','h',' ','b','h',EOL, + /* 484 */ EOL +}; +#endif + +#if 1 +static const unsigned char nasm_usemac_fp[] = { + /* From ./macros/fp.mac */ + /* 0 */ p_define,'_','_','?','U','S','E','_','F','P','?','_','_',EOL, + /* 0 */ p_defalias,'_','_','U','S','E','_','F','P','_','_',' ','_','_','?','U','S','E','F','P','?','_','_',EOL, + /* 24 */ p_define,'I','n','f',' ','_','_','?','I','n','f','i','n','i','t','y','?','_','_',EOL, + /* 44 */ p_define,'N','a','N',' ','_','_','?','Q','N','a','N','?','_','_',EOL, + /* 60 */ p_define,'Q','N','a','N',' ','_','_','?','Q','N','a','N','?','_','_',EOL, + /* 77 */ p_define,'S','N','a','N',' ','_','_','?','S','N','a','N','?','_','_',EOL, + /* 94 */ p_define,'f','l','o','a','t','8','(','x',')',' ','_','_','?','f','l','o','a','t','8','?','_','_','(','x',')',EOL, + /* 121 */ p_define,'f','l','o','a','t','1','6','(','x',')',' ','_','_','?','f','l','o','a','t','1','6','?','_','_','(','x',')',EOL, + /* 150 */ p_define,'b','f','l','o','a','t','1','6','(','x',')',' ','_','_','?','b','f','l','o','a','t','1','6','?','_','_','(','x',')',EOL, + /* 181 */ p_define,'f','l','o','a','t','3','2','(','x',')',' ','_','_','?','f','l','o','a','t','3','2','?','_','_','(','x',')',EOL, + /* 210 */ p_define,'f','l','o','a','t','6','4','(','x',')',' ','_','_','?','f','l','o','a','t','6','4','?','_','_','(','x',')',EOL, + /* 239 */ p_define,'f','l','o','a','t','8','0','m','(','x',')',' ','_','_','?','f','l','o','a','t','8','0','m','?','_','_','(','x',')',EOL, + /* 270 */ p_define,'f','l','o','a','t','8','0','e','(','x',')',' ','_','_','?','f','l','o','a','t','8','0','e','?','_','_','(','x',')',EOL, + /* 301 */ p_define,'f','l','o','a','t','1','2','8','l','(','x',')',' ','_','_','?','f','l','o','a','t','1','2','8','l','?','_','_','(','x',')',EOL, + /* 334 */ p_define,'f','l','o','a','t','1','2','8','h','(','x',')',' ','_','_','?','f','l','o','a','t','1','2','8','h','?','_','_','(','x',')',EOL, + /* 367 */ p_imacro,'b','f','1','6',' ','1','-','*','.','n','o','l','i','s','t',EOL, + /* 384 */ p_rep,'%','0',EOL, + /* 388 */ 'd','w',' ','_','_','?','b','f','l','o','a','t','1','6','?','_','_','(','%','1',')',EOL, + /* 410 */ p_rotate,'1',EOL, + /* 413 */ p_endrep,EOL, + /* 415 */ p_endmacro,EOL, + /* 417 */ EOL +}; +#endif + +#if 1 +static const unsigned char nasm_usemac_ifunc[] = { + /* From ./macros/ifunc.mac */ + /* 0 */ p_define,'_','_','?','U','S','E','_','I','F','U','N','C','?','_','_',EOL, + /* 0 */ p_defalias,'_','_','U','S','E','_','I','F','U','N','C','_','_',' ','_','_','?','U','S','E','I','F','U','N','C','?','_','_',EOL, + /* 30 */ p_idefine,'i','l','o','g','2','(','x',')',' ','(','_','_','?','i','l','o','g','2','e','?','_','_','(','x',')',')',EOL, + /* 58 */ p_idefine,'i','l','o','g','2','e','(','x',')',' ','(','_','_','?','i','l','o','g','2','e','?','_','_','(','x',')',')',EOL, + /* 87 */ p_idefine,'i','l','o','g','2','w','(','x',')',' ','(','_','_','?','i','l','o','g','2','w','?','_','_','(','x',')',')',EOL, + /* 116 */ p_idefine,'i','l','o','g','2','f','w','(','x',')',' ','(','_','_','?','i','l','o','g','2','w','?','_','_','(','x',')',')',EOL, + /* 146 */ p_idefine,'i','l','o','g','2','f','(','x',')',' ','(','_','_','?','i','l','o','g','2','f','?','_','_','(','x',')',')',EOL, + /* 175 */ p_idefine,'i','l','o','g','2','c','w','(','x',')',' ','(','_','_','?','i','l','o','g','2','w','?','_','_','(','x',')',' ','*',' ','0',' ','+',' ','_','_','?','i','l','o','g','2','c','?','_','_','(','x',')',')',EOL, + /* 227 */ p_idefine,'i','l','o','g','2','c','(','x',')',' ','(','_','_','?','i','l','o','g','2','c','?','_','_','(','x',')',')',EOL, + /* 256 */ EOL +}; +#endif + +#if 1 +static const unsigned char nasm_usemac_masm[] = { + /* From ./macros/masm.mac */ + /* 0 */ p_define,'_','_','?','U','S','E','_','M','A','S','M','?','_','_',EOL, + /* 0 */ p_defalias,'_','_','U','S','E','_','M','A','S','M','_','_',' ','_','_','?','U','S','E','M','A','S','M','?','_','_',EOL, + /* 28 */ p_unimacro,'s','e','g','m','e','n','t',' ','1','+',EOL, + /* 40 */ p_imacro,'s','e','g','m','e','n','t',' ','0','-','1','+','.','n','o','l','i','s','t',EOL, + /* 61 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','s','e','g','m','e','n','t',' ','%','0','0',' ','%','1',']',EOL, + /* 90 */ '_','_','?','S','E','C','T','?','_','_',EOL, + /* 101 */ p_endmacro,EOL, + /* 103 */ p_imacro,'e','n','d','s',' ','0','+','.','n','o','l','i','s','t',EOL, + /* 119 */ p_null,'e','n','d','s',' ','%','0','0',EOL, + /* 129 */ p_endmacro,EOL, + /* 131 */ p_imacro,'p','r','o','c',' ','0','-','*','.','n','o','l','i','s','t',EOL, + /* 148 */ p_rep,'%','0',EOL, + /* 152 */ p_ifidni,'%','1',',','f','a','r',EOL, + /* 160 */ p_idefine,'r','e','t',' ','r','e','t','f',EOL, + /* 170 */ p_else,EOL, + /* 172 */ p_idefine,'r','e','t',' ','r','e','t','n',EOL, + /* 182 */ p_endif,EOL, + /* 184 */ p_rotate,'1',EOL, + /* 187 */ p_endrep,EOL, + /* 189 */ p_endmacro,EOL, + /* 191 */ p_imacro,'e','n','d','p',' ','0','.','n','o','l','i','s','t',EOL, + /* 206 */ p_null,'e','n','d','p',' ','%','0','0',EOL, + /* 216 */ p_undef,'r','e','t',EOL, + /* 221 */ p_endmacro,EOL, + /* 223 */ p_idefine,'p','t','r',' ','_','_','?','m','a','s','m','_','p','t','r','?','_','_',EOL, + /* 243 */ p_idefine,'f','l','a','t',' ','_','_','?','m','a','s','m','_','f','l','a','t','?','_','_',EOL, + /* 265 */ p_idefine,'o','f','f','s','e','t',EOL, + /* 273 */ p_imacro,'e','n','d',' ','0','+','.','n','o','l','i','s','t',EOL, + /* 288 */ p_endmacro,EOL, + /* 290 */ p_idefine,'t','b','y','t','e',' ','t','w','o','r','d',EOL, + /* 303 */ 'd','e','f','a','u','l','t',' ','r','e','l',EOL, + /* 315 */ EOL +}; +#endif + +#if 1 +static const unsigned char nasm_usemac_smartalign[] = { + /* From ./macros/smartalign.mac */ + /* 0 */ p_define,'_','_','?','U','S','E','_','S','M','A','R','T','A','L','I','G','N','?','_','_',EOL, + /* 0 */ p_defalias,'_','_','U','S','E','_','S','M','A','R','T','A','L','I','G','N','_','_',' ','_','_','?','U','S','E','S','M','A','R','T','A','L','I','G','N','?','_','_',EOL, + /* 40 */ p_imacro,'a','l','i','g','n','m','o','d','e',' ','1','-','2','.','n','o','l','i','s','t',EOL, + /* 62 */ p_ifidni,'%','1',',','n','o','p',EOL, + /* 70 */ p_define,'_','_','?','A','L','I','G','N','_','J','M','P','_','T','H','R','E','S','H','O','L','D','?','_','_',' ','1','6',EOL, + /* 100 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 127 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','G','R','O','U','P','?','_','_',' ','1',EOL, + /* 154 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 181 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','G','R','O','U','P','?','_','_',' ','1',EOL, + /* 208 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 235 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','G','R','O','U','P','?','_','_',' ','1',EOL, + /* 262 */ p_elifidni,'%','1',',','g','e','n','e','r','i','c',EOL, + /* 274 */ p_define,'_','_','?','A','L','I','G','N','_','J','M','P','_','T','H','R','E','S','H','O','L','D','?','_','_',' ','8',EOL, + /* 303 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 330 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','2','B','?','_','_',' ','0','x','8','9',',','0','x','f','6',EOL, + /* 362 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','3','B','?','_','_',' ','0','x','8','d',',','0','x','7','4',',','0','x','0','0',EOL, + /* 399 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','4','B','?','_','_',' ','0','x','8','d',',','0','x','b','4',',','0','x','0','0',',','0','x','0','0',EOL, + /* 441 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','5','B','?','_','_',' ','0','x','8','d',',','0','x','b','4',',','0','x','0','0',',','0','x','0','0',',','0','x','9','0',EOL, + /* 488 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','6','B','?','_','_',' ','0','x','8','d',',','0','x','b','4',',','0','x','0','0',',','0','x','0','0',',','0','x','8','9',',','0','x','f','f',EOL, + /* 540 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','7','B','?','_','_',' ','0','x','8','d',',','0','x','b','4',',','0','x','0','0',',','0','x','0','0',',','0','x','8','d',',','0','x','7','d',',','0','x','0','0',EOL, + /* 597 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','8','B','?','_','_',' ','0','x','8','d',',','0','x','b','4',',','0','x','0','0',',','0','x','0','0',',','0','x','8','d',',','0','x','b','d',',','0','x','0','0',',','0','x','0','0',EOL, + /* 659 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','G','R','O','U','P','?','_','_',' ','8',EOL, + /* 686 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 713 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','2','B','?','_','_',' ','0','x','8','9',',','0','x','f','6',EOL, + /* 745 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','3','B','?','_','_',' ','0','x','8','d',',','0','x','7','6',',','0','x','0','0',EOL, + /* 782 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','4','B','?','_','_',' ','0','x','8','d',',','0','x','7','4',',','0','x','2','6',',','0','x','0','0',EOL, + /* 824 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','5','B','?','_','_',' ','0','x','9','0',',','0','x','8','d',',','0','x','7','4',',','0','x','2','6',',','0','x','0','0',EOL, + /* 871 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','6','B','?','_','_',' ','0','x','8','d',',','0','x','b','6',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',EOL, + /* 923 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','7','B','?','_','_',' ','0','x','8','d',',','0','x','b','4',',','0','x','2','6',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',EOL, + /* 980 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','G','R','O','U','P','?','_','_',' ','7',EOL, + /* 1007 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 1034 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','2','B','?','_','_',' ','0','x','6','6',',','0','x','9','0',EOL, + /* 1066 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','3','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 1103 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','4','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 1145 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','G','R','O','U','P','?','_','_',' ','4',EOL, + /* 1172 */ p_elifidni,'%','1',',','k','8',EOL, + /* 1179 */ p_define,'_','_','?','A','L','I','G','N','_','J','M','P','_','T','H','R','E','S','H','O','L','D','?','_','_',' ','1','6',EOL, + /* 1209 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 1236 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','2','B','?','_','_',' ','0','x','6','6',',','0','x','9','0',EOL, + /* 1268 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','3','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 1305 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','4','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 1347 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','G','R','O','U','P','?','_','_',' ','4',EOL, + /* 1374 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 1401 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','2','B','?','_','_',' ','0','x','6','6',',','0','x','9','0',EOL, + /* 1433 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','3','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 1470 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','4','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 1512 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','G','R','O','U','P','?','_','_',' ','4',EOL, + /* 1539 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 1566 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','2','B','?','_','_',' ','0','x','6','6',',','0','x','9','0',EOL, + /* 1598 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','3','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 1635 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','4','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 1677 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','G','R','O','U','P','?','_','_',' ','4',EOL, + /* 1704 */ p_elifidni,'%','1',',','k','7',EOL, + /* 1711 */ p_define,'_','_','?','A','L','I','G','N','_','J','M','P','_','T','H','R','E','S','H','O','L','D','?','_','_',' ','1','6',EOL, + /* 1741 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 1768 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','2','B','?','_','_',' ','0','x','6','6',',','0','x','9','0',EOL, + /* 1800 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','3','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 1837 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','4','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 1879 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','G','R','O','U','P','?','_','_',' ','4',EOL, + /* 1906 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 1933 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','2','B','?','_','_',' ','0','x','8','b',',','0','x','c','0',EOL, + /* 1965 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','3','B','?','_','_',' ','0','x','8','d',',','0','x','0','4',',','0','x','2','0',EOL, + /* 2002 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','4','B','?','_','_',' ','0','x','8','d',',','0','x','4','4',',','0','x','2','0',',','0','x','0','0',EOL, + /* 2044 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','5','B','?','_','_',' ','0','x','8','d',',','0','x','4','4',',','0','x','2','0',',','0','x','0','0',',','0','x','9','0',EOL, + /* 2091 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','6','B','?','_','_',' ','0','x','8','d',',','0','x','8','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',EOL, + /* 2143 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','7','B','?','_','_',' ','0','x','8','d',',','0','x','0','4',',','0','x','0','5',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',EOL, + /* 2200 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','G','R','O','U','P','?','_','_',' ','7',EOL, + /* 2227 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 2254 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','2','B','?','_','_',' ','0','x','6','6',',','0','x','9','0',EOL, + /* 2286 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','3','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 2323 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','4','B','?','_','_',' ','0','x','6','6',',','0','x','6','6',',','0','x','6','6',',','0','x','9','0',EOL, + /* 2365 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','G','R','O','U','P','?','_','_',' ','4',EOL, + /* 2392 */ p_elifidni,'%','1',',','p','6',EOL, + /* 2399 */ p_define,'_','_','?','A','L','I','G','N','_','J','M','P','_','T','H','R','E','S','H','O','L','D','?','_','_',' ','1','6',EOL, + /* 2429 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 2456 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','2','B','?','_','_',' ','0','x','6','6',',','0','x','9','0',EOL, + /* 2488 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','3','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','0','0',EOL, + /* 2525 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','4','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','4','0',',','0','x','0','0',EOL, + /* 2567 */ p_define,'_','_','?','A','L','I','G','N','_','1','6','B','I','T','_','G','R','O','U','P','?','_','_',' ','4',EOL, + /* 2594 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 2621 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','2','B','?','_','_',' ','0','x','6','6',',','0','x','9','0',EOL, + /* 2653 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','3','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','0','0',EOL, + /* 2690 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','4','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','4','0',',','0','x','0','0',EOL, + /* 2732 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','5','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','4','4',',','0','x','0','0',',','0','x','0','0',EOL, + /* 2779 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','6','B','?','_','_',' ','0','x','6','6',',','0','x','0','f',',','0','x','1','f',',','0','x','4','4',',','0','x','0','0',',','0','x','0','0',EOL, + /* 2831 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','7','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','8','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',EOL, + /* 2888 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','8','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','8','4',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',EOL, + /* 2950 */ p_define,'_','_','?','A','L','I','G','N','_','3','2','B','I','T','_','G','R','O','U','P','?','_','_',' ','8',EOL, + /* 2977 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','1','B','?','_','_',' ','0','x','9','0',EOL, + /* 3004 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','2','B','?','_','_',' ','0','x','6','6',',','0','x','9','0',EOL, + /* 3036 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','3','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','0','0',EOL, + /* 3073 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','4','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','4','0',',','0','x','0','0',EOL, + /* 3115 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','5','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','4','4',',','0','x','0','0',',','0','x','0','0',EOL, + /* 3162 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','6','B','?','_','_',' ','0','x','6','6',',','0','x','0','f',',','0','x','1','f',',','0','x','4','4',',','0','x','0','0',',','0','x','0','0',EOL, + /* 3214 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','7','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','8','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',EOL, + /* 3271 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','8','B','?','_','_',' ','0','x','0','f',',','0','x','1','f',',','0','x','8','4',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',',','0','x','0','0',EOL, + /* 3333 */ p_define,'_','_','?','A','L','I','G','N','_','6','4','B','I','T','_','G','R','O','U','P','?','_','_',' ','8',EOL, + /* 3360 */ p_else,EOL, + /* 3362 */ p_error,'u','n','k','n','o','w','n',' ','a','l','i','g','n','m','e','n','t',' ','m','o','d','e',':',' ','%','1',EOL, + /* 3390 */ p_endif,EOL, + /* 3392 */ p_ifnempty,'%','2',EOL, + /* 3396 */ p_ifidni,'%','2',',','n','o','j','m','p',EOL, + /* 3406 */ p_xdefine,'_','_','?','A','L','I','G','N','_','J','M','P','_','T','H','R','E','S','H','O','L','D','?','_','_',' ','-','1',EOL, + /* 3436 */ p_else,EOL, + /* 3438 */ p_xdefine,'_','_','?','A','L','I','G','N','_','J','M','P','_','T','H','R','E','S','H','O','L','D','?','_','_',' ','%','2',EOL, + /* 3468 */ p_endif,EOL, + /* 3470 */ p_endif,EOL, + /* 3472 */ p_xdefine,'_','_','?','A','L','I','G','N','M','O','D','E','?','_','_',' ','%','1',',','_','_','?','A','L','I','G','N','_','J','M','P','_','T','H','R','E','S','H','O','L','D','?','_','_',EOL, + /* 3518 */ p_endmacro,EOL, + /* 3520 */ p_defalias,'_','_','A','L','I','G','N','M','O','D','E','_','_',' ','_','_','?','A','L','I','G','N','M','O','D','E','?','_','_',EOL, + /* 3551 */ p_unimacro,'a','l','i','g','n',' ','1','-','2','+','.','n','o','l','i','s','t',EOL, + /* 3570 */ p_imacro,'a','l','i','g','n',' ','1','-','2','+','.','n','o','l','i','s','t',EOL, + /* 3589 */ 's','e','c','t','a','l','i','g','n',' ','%','1',EOL, + /* 3602 */ p_ifnempty,'%','2',EOL, + /* 3606 */ 't','i','m','e','s',' ','(','(','(','%','1',')',' ','-',' ','(','(','$','-','$','$',')',' ','%',' ','(','%','1',')',')',')',' ','%',' ','(','%','1',')',')',' ','%','2',EOL, + /* 3649 */ p_elif,'_','_','?','P','A','S','S','?','_','_',' ','=','=',' ','0',' ','|','|',' ','_','_','?','P','A','S','S','?','_','_',' ','=','=',' ','3',EOL, + /* 3685 */ 't','i','m','e','s',' ','(','(','(','%','1',')',' ','-',' ','(','(','$','-','$','$',')',' ','%',' ','(','%','1',')',')',')',' ','%',' ','(','%','1',')',')',' ','n','o','p',EOL, + /* 3729 */ p_else,EOL, + /* 3731 */ p_push,EOL, + /* 3733 */ p_assign,'%','$','p','a','d',' ','(','(','(','%','1',')',' ','-',' ','(','(','$','-','$','$',')',' ','%',' ','(','%','1',')',')',')',' ','%',' ','(','%','1',')',')',EOL, + /* 3774 */ p_if,'_','_','?','A','L','I','G','N','_','J','M','P','_','T','H','R','E','S','H','O','L','D','?','_','_',' ','!','=',' ','-','1',' ','&','&',' ','%','$','p','a','d',' ','>',' ','_','_','?','A','L','I','G','N','_','J','M','P','_','T','H','R','E','S','H','O','L','D','?','_','_',EOL, + /* 3844 */ 'j','m','p',' ','%','$','e','n','d',EOL, + /* 3854 */ 't','i','m','e','s',' ','(','(','(','%','1',')',' ','-',' ','(','(','$','-','$','$',')',' ','%',' ','(','%','1',')',')',')',' ','%',' ','(','%','1',')',')',' ','n','o','p',EOL, + /* 3898 */ p_else,EOL, + /* 3900 */ 't','i','m','e','s',' ','(','%','$','p','a','d',' ','/',' ','_','_','?','A','L','I','G','N','_','%','[','_','_','?','B','I','T','S','?','_','_',']','B','I','T','_','G','R','O','U','P','?','_','_',')',' ','d','b',' ','_','_','?','A','L','I','G','N','_','%','[','_','_','?','B','I','T','S','?','_','_',']','B','I','T','_','%','[','_','_','?','A','L','I','G','N','_','%','[','_','_','?','B','I','T','S','?','_','_',']','B','I','T','_','G','R','O','U','P','?','_','_',']','B','?','_','_',EOL, + /* 4022 */ p_assign,'%','$','p','a','d',' ','%','$','p','a','d',' ','%',' ','_','_','?','A','L','I','G','N','_','%','[','_','_','?','B','I','T','S','?','_','_',']','B','I','T','_','G','R','O','U','P','?','_','_',EOL, + /* 4072 */ p_if,'%','$','p','a','d',' ','>',' ','0',EOL, + /* 4083 */ 'd','b',' ','_','_','?','A','L','I','G','N','_','%','[','_','_','?','B','I','T','S','?','_','_',']','B','I','T','_','%','[','%','$','p','a','d',']','B','?','_','_',EOL, + /* 4125 */ p_endif,EOL, + /* 4127 */ p_endif,EOL, + /* 4129 */ '%','$','e','n','d',':',EOL, + /* 4136 */ p_pop,EOL, + /* 4138 */ p_endif,EOL, + /* 4140 */ p_endmacro,EOL, + /* 4142 */ 'a','l','i','g','n','m','o','d','e',' ','g','e','n','e','r','i','c',EOL, + /* 4160 */ EOL +}; +#endif + +#if 1 +const unsigned char nasm_stdmac_tasm[] = { + /* From ./macros/standard.mac */ + /* 0 */ p_idefine,'I','D','E','A','L',EOL, + /* 7 */ p_idefine,'J','U','M','P','S',EOL, + /* 14 */ p_idefine,'P','3','8','6',EOL, + /* 20 */ p_idefine,'P','4','8','6',EOL, + /* 26 */ p_idefine,'P','5','8','6',EOL, + /* 32 */ p_idefine,'E','N','D',EOL, + /* 37 */ EOL +}; +#endif + +#if 1 +const unsigned char nasm_stdmac_nasm[] = { + /* From ./macros/standard.mac */ + /* 0 */ p_define,'_','_','?','S','E','C','T','?','_','_',EOL, + /* 12 */ p_defalias,'_','_','S','E','C','T','_','_',' ','_','_','?','S','E','C','T','?','_','_',EOL, + /* 33 */ p_imacro,'s','e','c','t','i','o','n',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 52 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','s','e','c','t','i','o','n',' ','%','1',']',EOL, + /* 77 */ '_','_','?','S','E','C','T','?','_','_',EOL, + /* 88 */ p_endmacro,EOL, + /* 90 */ p_imacro,'s','e','g','m','e','n','t',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 109 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','s','e','g','m','e','n','t',' ','%','1',']',EOL, + /* 134 */ '_','_','?','S','E','C','T','?','_','_',EOL, + /* 145 */ p_endmacro,EOL, + /* 147 */ p_define,'_','_','?','S','E','C','T','A','L','I','G','N','_','A','L','I','G','N','_','U','P','D','A','T','E','S','_','S','E','C','T','I','O','N','?','_','_',' ','1',EOL, + /* 188 */ p_imacro,'s','e','c','t','a','l','i','g','n',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 209 */ p_ifidni,'%','1',',','o','f','f',EOL, + /* 217 */ p_define,'_','_','?','S','E','C','T','A','L','I','G','N','_','A','L','I','G','N','_','U','P','D','A','T','E','S','_','S','E','C','T','I','O','N','?','_','_',' ','0',EOL, + /* 258 */ p_elifidni,'%','1',',','o','n',EOL, + /* 265 */ p_define,'_','_','?','S','E','C','T','A','L','I','G','N','_','A','L','I','G','N','_','U','P','D','A','T','E','S','_','S','E','C','T','I','O','N','?','_','_',' ','1',EOL, + /* 306 */ p_else,EOL, + /* 308 */ '[','s','e','c','t','a','l','i','g','n',' ','%','1',']',EOL, + /* 323 */ p_endif,EOL, + /* 325 */ p_endmacro,EOL, + /* 327 */ p_defalias,'_','_','S','E','C','T','A','L','I','G','N','_','A','L','I','G','N','_','U','P','D','A','T','E','S','_','S','E','C','T','I','O','N','_','_',' ','_','_','?','S','E','C','T','A','L','I','G','N','_','A','L','I','G','N','_','U','P','D','A','T','E','S','_','S','E','C','T','I','O','N','?','_','_',EOL, + /* 402 */ p_imacro,'a','b','s','o','l','u','t','e',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 422 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','a','b','s','o','l','u','t','e',' ','%','1',']',EOL, + /* 448 */ '_','_','?','S','E','C','T','?','_','_',EOL, + /* 459 */ p_endmacro,EOL, + /* 461 */ p_imacro,'s','t','r','u','c',' ','1','-','2','.','n','o','l','i','s','t',' ','0',EOL, + /* 481 */ p_push,EOL, + /* 483 */ p_define,'%','$','s','t','r','u','c','n','a','m','e',' ','%','1',EOL, + /* 499 */ '[','a','b','s','o','l','u','t','e',' ','%','2',']',EOL, + /* 513 */ '%','$','s','t','r','u','c','n','a','m','e',':',EOL, + /* 526 */ p_endmacro,EOL, + /* 528 */ p_imacro,'e','n','d','s','t','r','u','c',' ','0','.','n','o','l','i','s','t',EOL, + /* 547 */ '%','{','$','s','t','r','u','c','n','a','m','e','}','_','s','i','z','e',' ','e','q','u',' ','(','$','-','%','$','s','t','r','u','c','n','a','m','e',')',EOL, + /* 586 */ p_pop,EOL, + /* 588 */ '_','_','?','S','E','C','T','?','_','_',EOL, + /* 599 */ p_endmacro,EOL, + /* 601 */ p_imacro,'i','s','t','r','u','c',' ','1','.','n','o','l','i','s','t',EOL, + /* 618 */ p_push,EOL, + /* 620 */ p_define,'%','$','s','t','r','u','c','n','a','m','e',' ','%','1',EOL, + /* 636 */ '%','$','s','t','r','u','c','s','t','a','r','t',':',EOL, + /* 650 */ p_endmacro,EOL, + /* 652 */ p_imacro,'a','t',' ','1','-','2','+','.','n','o','l','i','s','t',EOL, + /* 668 */ p_defstr,'%','$','m','e','m','b','e','r',' ','%','1',EOL, + /* 681 */ p_substr,'%','$','m','e','m','b','e','r','1',' ','%','$','m','e','m','b','e','r',' ','1',EOL, + /* 703 */ p_ifidn,'%','$','m','e','m','b','e','r','1',',',' ','\'','.','\'',EOL, + /* 719 */ 't','i','m','e','s',' ','(','%','$','s','t','r','u','c','n','a','m','e','%','1','-','%','$','s','t','r','u','c','n','a','m','e',')','-','(','$','-','%','$','s','t','r','u','c','s','t','a','r','t',')',' ','d','b',' ','0',EOL, + /* 775 */ p_else,EOL, + /* 777 */ 't','i','m','e','s',' ','(','%','1','-','%','$','s','t','r','u','c','n','a','m','e',')','-','(','$','-','%','$','s','t','r','u','c','s','t','a','r','t',')',' ','d','b',' ','0',EOL, + /* 822 */ p_endif,EOL, + /* 824 */ '%','2',EOL, + /* 827 */ p_endmacro,EOL, + /* 829 */ p_imacro,'i','e','n','d',' ','0','.','n','o','l','i','s','t',EOL, + /* 844 */ 't','i','m','e','s',' ','%','{','$','s','t','r','u','c','n','a','m','e','}','_','s','i','z','e','-','(','$','-','%','$','s','t','r','u','c','s','t','a','r','t',')',' ','d','b',' ','0',EOL, + /* 891 */ p_pop,EOL, + /* 893 */ p_endmacro,EOL, + /* 895 */ p_imacro,'a','l','i','g','n',' ','1','-','2','+','.','n','o','l','i','s','t',' ','n','o','p',EOL, + /* 918 */ p_if,'_','_','?','S','E','C','T','A','L','I','G','N','_','A','L','I','G','N','_','U','P','D','A','T','E','S','_','S','E','C','T','I','O','N','?','_','_',EOL, + /* 957 */ 's','e','c','t','a','l','i','g','n',' ','%','1',EOL, + /* 970 */ p_endif,EOL, + /* 972 */ 't','i','m','e','s',' ','(','(','(','%','1',')',' ','-',' ','(','(','$','-','$','$',')',' ','%',' ','(','%','1',')',')',')',' ','%',' ','(','%','1',')',')',' ','%','2',EOL, + /* 1015 */ p_endmacro,EOL, + /* 1017 */ p_imacro,'a','l','i','g','n','b',' ','1','-','2','+','.','n','o','l','i','s','t',EOL, + /* 1037 */ p_if,'_','_','?','S','E','C','T','A','L','I','G','N','_','A','L','I','G','N','_','U','P','D','A','T','E','S','_','S','E','C','T','I','O','N','?','_','_',EOL, + /* 1076 */ 's','e','c','t','a','l','i','g','n',' ','%','1',EOL, + /* 1089 */ p_endif,EOL, + /* 1091 */ p_ifempty,'%','2',EOL, + /* 1095 */ '[','w','a','r','n','i','n','g',' ','p','u','s','h',']',EOL, + /* 1110 */ '[','w','a','r','n','i','n','g',' ','-','z','e','r','o','i','n','g',']',EOL, + /* 1129 */ 'r','e','s','b',' ','(','(','(','%','1',')',' ','-',' ','(','(','$','-','$','$',')',' ','%',' ','(','%','1',')',')',')',' ','%',' ','(','%','1',')',')',EOL, + /* 1168 */ '[','w','a','r','n','i','n','g',' ','p','o','p',']',EOL, + /* 1182 */ p_else,EOL, + /* 1184 */ 't','i','m','e','s',' ','(','(','(','%','1',')',' ','-',' ','(','(','$','-','$','$',')',' ','%',' ','(','%','1',')',')',')',' ','%',' ','(','%','1',')',')',' ','%','2',EOL, + /* 1227 */ p_endif,EOL, + /* 1229 */ p_endmacro,EOL, + /* 1231 */ p_imacro,'b','i','t','s',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 1247 */ '[','b','i','t','s',' ','%','1',']',EOL, + /* 1257 */ p_endmacro,EOL, + /* 1259 */ p_imacro,'u','s','e','1','6',' ','0','.','n','o','l','i','s','t',EOL, + /* 1275 */ '[','b','i','t','s',' ','1','6',']',EOL, + /* 1285 */ p_endmacro,EOL, + /* 1287 */ p_imacro,'u','s','e','3','2',' ','0','.','n','o','l','i','s','t',EOL, + /* 1303 */ '[','b','i','t','s',' ','3','2',']',EOL, + /* 1313 */ p_endmacro,EOL, + /* 1315 */ p_imacro,'u','s','e','6','4',' ','0','.','n','o','l','i','s','t',EOL, + /* 1331 */ '[','b','i','t','s',' ','6','4',']',EOL, + /* 1341 */ p_endmacro,EOL, + /* 1343 */ p_imacro,'e','x','t','e','r','n',' ','1','-','*','.','n','o','l','i','s','t',EOL, + /* 1362 */ p_rep,'%','0',EOL, + /* 1366 */ '[','e','x','t','e','r','n',' ','%','1',']',EOL, + /* 1378 */ p_rotate,'1',EOL, + /* 1381 */ p_endrep,EOL, + /* 1383 */ p_endmacro,EOL, + /* 1385 */ p_imacro,'s','t','a','t','i','c',' ','1','-','*','.','n','o','l','i','s','t',EOL, + /* 1404 */ p_rep,'%','0',EOL, + /* 1408 */ '[','s','t','a','t','i','c',' ','%','1',']',EOL, + /* 1420 */ p_rotate,'1',EOL, + /* 1423 */ p_endrep,EOL, + /* 1425 */ p_endmacro,EOL, + /* 1427 */ p_imacro,'g','l','o','b','a','l',' ','1','-','*','.','n','o','l','i','s','t',EOL, + /* 1446 */ p_rep,'%','0',EOL, + /* 1450 */ '[','g','l','o','b','a','l',' ','%','1',']',EOL, + /* 1462 */ p_rotate,'1',EOL, + /* 1465 */ p_endrep,EOL, + /* 1467 */ p_endmacro,EOL, + /* 1469 */ p_imacro,'r','e','q','u','i','r','e','d',' ','1','-','*','.','n','o','l','i','s','t',EOL, + /* 1490 */ p_rep,'%','0',EOL, + /* 1494 */ '[','r','e','q','u','i','r','e','d',' ','%','1',']',EOL, + /* 1508 */ p_rotate,'1',EOL, + /* 1511 */ p_endrep,EOL, + /* 1513 */ p_endmacro,EOL, + /* 1515 */ p_imacro,'c','o','m','m','o','n',' ','1','-','*','.','n','o','l','i','s','t',EOL, + /* 1534 */ p_rep,'%','0',EOL, + /* 1538 */ '[','c','o','m','m','o','n',' ','%','1',']',EOL, + /* 1550 */ p_rotate,'1',EOL, + /* 1553 */ p_endrep,EOL, + /* 1555 */ p_endmacro,EOL, + /* 1557 */ p_imacro,'c','p','u',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 1572 */ '[','c','p','u',' ','%','1',']',EOL, + /* 1581 */ p_endmacro,EOL, + /* 1583 */ p_define,'_','_','?','F','L','O','A','T','_','D','A','Z','?','_','_',' ','n','o','d','a','z',EOL, + /* 1606 */ p_define,'_','_','?','F','L','O','A','T','_','R','O','U','N','D','?','_','_',' ','n','e','a','r',EOL, + /* 1630 */ p_define,'_','_','?','F','L','O','A','T','?','_','_',' ','_','_','?','F','L','O','A','T','_','D','A','Z','?','_','_',',','_','_','?','F','L','O','A','T','_','R','O','U','N','D','?','_','_',EOL, + /* 1677 */ p_defalias,'_','_','F','L','O','A','T','_','D','A','Z','_','_',' ','_','_','?','F','L','O','A','T','_','D','A','Z','?','_','_',EOL, + /* 1708 */ p_defalias,'_','_','F','L','O','A','T','_','R','O','U','N','D','_','_',' ','_','_','?','F','L','O','A','T','_','R','O','U','N','D','?','_','_',EOL, + /* 1743 */ p_defalias,'_','_','F','L','O','A','T','_','_',' ','_','_','?','F','L','O','A','T','?','_','_',EOL, + /* 1766 */ p_imacro,'f','l','o','a','t',' ','1','-','*','.','n','o','l','i','s','t',EOL, + /* 1784 */ p_rep,'%','0',EOL, + /* 1788 */ '[','f','l','o','a','t',' ','%','1',']',EOL, + /* 1799 */ p_ifidni,'%','1',',','d','a','z',EOL, + /* 1807 */ p_define,'_','_','?','F','L','O','A','T','_','D','A','Z','?','_','_',' ','d','a','z',EOL, + /* 1828 */ p_elifidni,'%','1',',','n','o','d','a','z',EOL, + /* 1838 */ p_define,'_','_','?','F','L','O','A','T','_','D','A','Z','?','_','_',' ','n','o','d','a','z',EOL, + /* 1861 */ p_elifidni,'%','1',',','n','e','a','r',EOL, + /* 1870 */ p_define,'_','_','?','F','L','O','A','T','_','R','O','U','N','D','?','_','_',' ','n','e','a','r',EOL, + /* 1894 */ p_elifidni,'%','1',',','u','p',EOL, + /* 1901 */ p_define,'_','_','?','F','L','O','A','T','_','R','O','U','N','D','?','_','_',' ','u','p',EOL, + /* 1923 */ p_elifidni,'%','1',',','d','o','w','n',EOL, + /* 1932 */ p_define,'_','_','?','F','L','O','A','T','_','R','O','U','N','D','?','_','_',' ','d','o','w','n',EOL, + /* 1956 */ p_elifidni,'%','1',',','z','e','r','o',EOL, + /* 1965 */ p_define,'_','_','?','F','L','O','A','T','_','R','O','U','N','D','?','_','_',' ','z','e','r','o',EOL, + /* 1989 */ p_elifidni,'%','1',',','d','e','f','a','u','l','t',EOL, + /* 2001 */ p_define,'_','_','?','F','L','O','A','T','_','D','A','Z','?','_','_',' ','n','o','d','a','z',EOL, + /* 2024 */ p_define,'_','_','?','F','L','O','A','T','_','R','O','U','N','D','?','_','_',' ','n','e','a','r',EOL, + /* 2048 */ p_endif,EOL, + /* 2050 */ p_rotate,'1',EOL, + /* 2053 */ p_endrep,EOL, + /* 2055 */ p_endmacro,EOL, + /* 2057 */ p_imacro,'d','e','f','a','u','l','t',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 2076 */ '[','d','e','f','a','u','l','t',' ','%','1',']',EOL, + /* 2089 */ p_endmacro,EOL, + /* 2091 */ p_imacro,'u','s','e','r','e','l',' ','0','.','n','o','l','i','s','t',EOL, + /* 2108 */ '[','d','e','f','a','u','l','t',' ','r','e','l',']',EOL, + /* 2122 */ p_endmacro,EOL, + /* 2124 */ p_imacro,'u','s','e','a','b','s',' ','0','.','n','o','l','i','s','t',EOL, + /* 2141 */ '[','d','e','f','a','u','l','t',' ','a','b','s',']',EOL, + /* 2155 */ p_endmacro,EOL, + /* 2157 */ p_imacro,'u','s','e','b','n','d',' ','0','.','n','o','l','i','s','t',EOL, + /* 2174 */ '[','d','e','f','a','u','l','t',' ','b','n','d',']',EOL, + /* 2188 */ p_endmacro,EOL, + /* 2190 */ p_imacro,'u','s','e','n','o','b','n','d',' ','0','.','n','o','l','i','s','t',EOL, + /* 2209 */ '[','d','e','f','a','u','l','t',' ','n','o','b','n','d',']',EOL, + /* 2225 */ p_endmacro,EOL, + /* 2227 */ p_imacro,'i','n','c','b','i','n',' ','1','-','2','+','.','n','o','l','i','s','t',' ','0',EOL, + /* 2249 */ p_push,EOL, + /* 2251 */ p_pathsearch,'%','$','d','e','p',' ','%','1',EOL, + /* 2261 */ p_depend,'%','$','d','e','p',EOL, + /* 2268 */ '%','?',' ','%','$','d','e','p',',','%','2',EOL, + /* 2280 */ p_pop,EOL, + /* 2282 */ p_endmacro,EOL, + /* 2284 */ p_defalias,'_','_','N','A','S','M','_','M','A','J','O','R','_','_',' ','_','_','?','N','A','S','M','_','M','A','J','O','R','?','_','_',EOL, + /* 2317 */ p_defalias,'_','_','N','A','S','M','_','M','I','N','O','R','_','_',' ','_','_','?','N','A','S','M','_','M','I','N','O','R','?','_','_',EOL, + /* 2350 */ p_defalias,'_','_','N','A','S','M','_','S','U','B','M','I','N','O','R','_','_',' ','_','_','?','N','A','S','M','_','S','U','B','M','I','N','O','R','?','_','_',EOL, + /* 2389 */ p_defalias,'_','_','N','A','S','M','_','P','A','T','C','H','L','E','V','E','L','_','_',' ','_','_','?','N','A','S','M','_','P','A','T','C','H','L','E','V','E','L','?','_','_',EOL, + /* 2432 */ p_defalias,'_','_','N','A','S','M','_','S','N','A','P','S','H','O','T','_','_',' ','_','_','?','N','A','S','M','_','S','N','A','P','S','H','O','T','?','_','_',EOL, + /* 2471 */ p_defalias,'_','_','N','A','S','M','_','V','E','R','S','I','O','N','_','I','D','_','_',' ','_','_','?','N','A','S','M','_','V','E','R','S','I','O','N','_','I','D','?','_','_',EOL, + /* 2514 */ p_defalias,'_','_','N','A','S','M','_','V','E','R','_','_',' ','_','_','?','N','A','S','M','_','V','E','R','?','_','_',EOL, + /* 2543 */ p_defalias,'_','_','O','U','T','P','U','T','_','F','O','R','M','A','T','_','_',' ','_','_','?','O','U','T','P','U','T','_','F','O','R','M','A','T','?','_','_',EOL, + /* 2582 */ p_defalias,'_','_','D','E','B','U','G','_','F','O','R','M','A','T','_','_',' ','_','_','?','D','E','B','U','G','_','F','O','R','M','A','T','?','_','_',EOL, + /* 2619 */ p_defalias,'_','_','D','A','T','E','_','_',' ','_','_','?','D','A','T','E','?','_','_',EOL, + /* 2640 */ p_defalias,'_','_','D','A','T','E','_','N','U','M','_','_',' ','_','_','?','D','A','T','E','_','N','U','M','?','_','_',EOL, + /* 2669 */ p_defalias,'_','_','T','I','M','E','_','_',' ','_','_','?','T','I','M','E','?','_','_',EOL, + /* 2690 */ p_defalias,'_','_','T','I','M','E','_','N','U','M','_','_',' ','_','_','?','T','I','M','E','_','N','U','M','?','_','_',EOL, + /* 2719 */ p_defalias,'_','_','U','T','C','_','D','A','T','E','_','_',' ','_','_','?','U','T','C','_','D','A','T','E','?','_','_',EOL, + /* 2748 */ p_defalias,'_','_','U','T','C','_','D','A','T','E','_','N','U','M','_','_',' ','_','_','?','U','T','C','_','D','A','T','E','_','N','U','M','?','_','_',EOL, + /* 2785 */ p_defalias,'_','_','U','T','C','_','T','I','M','E','_','_',' ','_','_','?','U','T','C','_','T','I','M','E','?','_','_',EOL, + /* 2814 */ p_defalias,'_','_','U','T','C','_','T','I','M','E','_','N','U','M','_','_',' ','_','_','?','U','T','C','_','T','I','M','E','_','N','U','M','?','_','_',EOL, + /* 2851 */ p_defalias,'_','_','P','O','S','I','X','_','T','I','M','E','_','_',' ','_','_','?','P','O','S','I','X','_','T','I','M','E','?','_','_',EOL, + /* 2884 */ p_defalias,'_','_','F','I','L','E','_','_',' ','_','_','?','F','I','L','E','?','_','_',EOL, + /* 2905 */ p_defalias,'_','_','L','I','N','E','_','_',' ','_','_','?','L','I','N','E','?','_','_',EOL, + /* 2926 */ p_defalias,'_','_','B','I','T','S','_','_',' ','_','_','?','B','I','T','S','?','_','_',EOL, + /* 2947 */ p_defalias,'_','_','P','T','R','_','_',' ','_','_','?','P','T','R','?','_','_',EOL, + /* 2966 */ p_defalias,'_','_','P','A','S','S','_','_',' ','_','_','?','P','A','S','S','?','_','_',EOL, + /* 2987 */ p_idefine,'_','_','?','i','n','f','i','n','i','t','y','?','_','_',' ','%','?',EOL, + /* 3006 */ p_idefine,'_','_','?','n','a','n','?','_','_',' ','%','?',EOL, + /* 3020 */ p_idefine,'_','_','?','q','n','a','n','?','_','_',' ','%','?',EOL, + /* 3035 */ p_idefine,'_','_','?','s','n','a','n','?','_','_',' ','%','?',EOL, + /* 3050 */ p_idefine,'_','_','?','f','l','o','a','t','8','?','_','_',' ','%','?',EOL, + /* 3067 */ p_idefine,'_','_','?','f','l','o','a','t','1','6','?','_','_',' ','%','?',EOL, + /* 3085 */ p_idefine,'_','_','?','f','l','o','a','t','3','2','?','_','_',' ','%','?',EOL, + /* 3103 */ p_idefine,'_','_','?','f','l','o','a','t','6','4','?','_','_',' ','%','?',EOL, + /* 3121 */ p_idefine,'_','_','?','f','l','o','a','t','8','0','m','?','_','_',' ','%','?',EOL, + /* 3140 */ p_idefine,'_','_','?','f','l','o','a','t','8','0','e','?','_','_',' ','%','?',EOL, + /* 3159 */ p_idefine,'_','_','?','f','l','o','a','t','1','2','8','l','?','_','_',' ','%','?',EOL, + /* 3179 */ p_idefine,'_','_','?','f','l','o','a','t','1','2','8','h','?','_','_',' ','%','?',EOL, + /* 3199 */ p_idefine,'_','_','?','u','t','f','1','6','?','_','_',' ','%','?',EOL, + /* 3215 */ p_idefine,'_','_','?','u','t','f','1','6','l','e','?','_','_',' ','%','?',EOL, + /* 3233 */ p_idefine,'_','_','?','u','t','f','1','6','b','e','?','_','_',' ','%','?',EOL, + /* 3251 */ p_idefine,'_','_','?','u','t','f','3','2','?','_','_',' ','%','?',EOL, + /* 3267 */ p_idefine,'_','_','?','u','t','f','3','2','l','e','?','_','_',' ','%','?',EOL, + /* 3285 */ p_idefine,'_','_','?','u','t','f','3','2','b','e','?','_','_',' ','%','?',EOL, + /* 3303 */ p_idefine,'_','_','?','i','l','o','g','2','e','?','_','_',' ','%','?',EOL, + /* 3320 */ p_idefine,'_','_','?','i','l','o','g','2','w','?','_','_',' ','%','?',EOL, + /* 3337 */ p_idefine,'_','_','?','i','l','o','g','2','f','?','_','_',' ','%','?',EOL, + /* 3354 */ p_idefine,'_','_','?','i','l','o','g','2','c','?','_','_',' ','%','?',EOL, + /* 3371 */ p_idefalias,'_','_','i','n','f','i','n','i','t','y','_','_',' ','_','_','?','i','n','f','i','n','i','t','y','?','_','_',EOL, + /* 3400 */ p_idefalias,'_','_','n','a','n','_','_',' ','_','_','?','n','a','n','?','_','_',EOL, + /* 3419 */ p_idefalias,'_','_','q','n','a','n','_','_',' ','_','_','?','q','n','a','n','?','_','_',EOL, + /* 3440 */ p_idefalias,'_','_','s','n','a','n','_','_',' ','_','_','?','s','n','a','n','?','_','_',EOL, + /* 3461 */ p_idefalias,'_','_','f','l','o','a','t','8','_','_',' ','_','_','?','f','l','o','a','t','8','?','_','_',EOL, + /* 3486 */ p_idefalias,'_','_','f','l','o','a','t','1','6','_','_',' ','_','_','?','f','l','o','a','t','1','6','?','_','_',EOL, + /* 3513 */ p_idefalias,'_','_','f','l','o','a','t','3','2','_','_',' ','_','_','?','f','l','o','a','t','3','2','?','_','_',EOL, + /* 3540 */ p_idefalias,'_','_','f','l','o','a','t','6','4','_','_',' ','_','_','?','f','l','o','a','t','6','4','?','_','_',EOL, + /* 3567 */ p_idefalias,'_','_','f','l','o','a','t','8','0','m','_','_',' ','_','_','?','f','l','o','a','t','8','0','m','?','_','_',EOL, + /* 3596 */ p_idefalias,'_','_','f','l','o','a','t','8','0','e','_','_',' ','_','_','?','f','l','o','a','t','8','0','e','?','_','_',EOL, + /* 3625 */ p_idefalias,'_','_','f','l','o','a','t','1','2','8','l','_','_',' ','_','_','?','f','l','o','a','t','1','2','8','l','?','_','_',EOL, + /* 3656 */ p_idefalias,'_','_','f','l','o','a','t','1','2','8','h','_','_',' ','_','_','?','f','l','o','a','t','1','2','8','h','?','_','_',EOL, + /* 3687 */ p_idefalias,'_','_','u','t','f','1','6','_','_',' ','_','_','?','u','t','f','1','6','?','_','_',EOL, + /* 3710 */ p_idefalias,'_','_','u','t','f','1','6','l','e','_','_',' ','_','_','?','u','t','f','1','6','l','e','?','_','_',EOL, + /* 3737 */ p_idefalias,'_','_','u','t','f','1','6','b','e','_','_',' ','_','_','?','u','t','f','1','6','b','e','?','_','_',EOL, + /* 3764 */ p_idefalias,'_','_','u','t','f','3','2','_','_',' ','_','_','?','u','t','f','3','2','?','_','_',EOL, + /* 3787 */ p_idefalias,'_','_','u','t','f','3','2','l','e','_','_',' ','_','_','?','u','t','f','3','2','l','e','?','_','_',EOL, + /* 3814 */ p_idefalias,'_','_','u','t','f','3','2','b','e','_','_',' ','_','_','?','u','t','f','3','2','b','e','?','_','_',EOL, + /* 3841 */ p_idefalias,'_','_','i','l','o','g','2','e','_','_',' ','_','_','?','i','l','o','g','2','e','?','_','_',EOL, + /* 3866 */ p_idefalias,'_','_','i','l','o','g','2','w','_','_',' ','_','_','?','i','l','o','g','2','w','?','_','_',EOL, + /* 3891 */ p_idefalias,'_','_','i','l','o','g','2','f','_','_',' ','_','_','?','i','l','o','g','2','f','?','_','_',EOL, + /* 3916 */ p_idefalias,'_','_','i','l','o','g','2','c','_','_',' ','_','_','?','i','l','o','g','2','c','?','_','_',EOL, + /* 3941 */ EOL +}; +#endif + +#if defined(OF_AOUT) || defined(OF_AOUTB) +const unsigned char aout_stdmac[] = { + /* From ./output/outaout.mac */ + /* 0 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','s','e','c','t','i','o','n',' ','.','t','e','x','t',']',EOL, + /* 28 */ p_macro,'_','_','?','N','A','S','M','_','C','D','e','c','l','?','_','_',' ','1',EOL, + /* 48 */ p_endmacro,EOL, + /* 50 */ EOL +}; +#endif + +#if defined(OF_AS86) +const unsigned char as86_stdmac[] = { + /* From ./output/outas86.mac */ + /* 0 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','s','e','c','t','i','o','n',' ','.','t','e','x','t',']',EOL, + /* 28 */ p_macro,'_','_','?','N','A','S','M','_','C','D','e','c','l','?','_','_',' ','1',EOL, + /* 48 */ p_endmacro,EOL, + /* 50 */ EOL +}; +#endif + +#if defined(OF_BIN) +const unsigned char bin_stdmac[] = { + /* From ./output/outbin.mac */ + /* 0 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','s','e','c','t','i','o','n',' ','.','t','e','x','t',']',EOL, + /* 28 */ p_imacro,'o','r','g',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 43 */ '[','o','r','g',' ','%','1',']',EOL, + /* 52 */ p_endmacro,EOL, + /* 54 */ p_macro,'_','_','?','N','A','S','M','_','C','D','e','c','l','?','_','_',' ','1',EOL, + /* 74 */ p_endmacro,EOL, + /* 76 */ EOL +}; +#endif + +#if defined(OF_COFF) || defined(OF_WIN32) || defined(OF_WIN64) +const unsigned char coff_stdmac[] = { + /* From ./output/outcoff.mac */ + /* 0 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','s','e','c','t','i','o','n',' ','.','t','e','x','t',']',EOL, + /* 28 */ p_macro,'_','_','?','N','A','S','M','_','C','D','e','c','l','?','_','_',' ','1',EOL, + /* 48 */ p_endmacro,EOL, + /* 50 */ p_imacro,'e','x','p','o','r','t',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 68 */ '[','e','x','p','o','r','t',' ','%','1',']',EOL, + /* 80 */ p_endmacro,EOL, + /* 82 */ p_imacro,'s','a','f','e','s','e','h',' ','1','.','n','o','l','i','s','t',EOL, + /* 100 */ '[','s','a','f','e','s','e','h',' ','%','1',']',EOL, + /* 113 */ p_endmacro,EOL, + /* 115 */ EOL +}; +#endif + +#if defined(OF_DBG) +const unsigned char dbg_stdmac[] = { + /* From ./output/outdbg.mac */ + /* 0 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','s','e','c','t','i','o','n',' ','.','t','e','x','t',']',EOL, + /* 28 */ p_imacro,'g','r','o','u','p',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 45 */ '[','g','r','o','u','p',' ','%','1',']',EOL, + /* 56 */ p_endmacro,EOL, + /* 58 */ p_imacro,'u','p','p','e','r','c','a','s','e',' ','0','+','.','n','o','l','i','s','t',EOL, + /* 79 */ p_pragma,'d','b','g',' ','u','p','p','e','r','c','a','s','e',' ','%','1',EOL, + /* 97 */ p_endmacro,EOL, + /* 99 */ p_imacro,'e','x','p','o','r','t',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 117 */ p_pragma,'d','b','g',' ','e','x','p','o','r','t',' ','%','1',EOL, + /* 132 */ p_endmacro,EOL, + /* 134 */ p_imacro,'i','m','p','o','r','t',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 152 */ p_pragma,'d','b','g',' ','i','m','p','o','r','t',' ','%','1',EOL, + /* 167 */ p_endmacro,EOL, + /* 169 */ p_imacro,'o','r','g',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 184 */ p_pragma,'d','b','g',' ','o','r','g',' ','%','1',EOL, + /* 196 */ p_endmacro,EOL, + /* 198 */ p_macro,'_','_','?','N','A','S','M','_','C','D','e','c','l','?','_','_',' ','1',EOL, + /* 218 */ p_endmacro,EOL, + /* 220 */ EOL +}; +#endif + +#if defined(OF_ELF) || defined(OF_ELF32) || defined(OF_ELF64) +const unsigned char elf_stdmac[] = { + /* From ./output/outelf.mac */ + /* 0 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','s','e','c','t','i','o','n',' ','.','t','e','x','t',']',EOL, + /* 28 */ p_macro,'_','_','?','N','A','S','M','_','C','D','e','c','l','?','_','_',' ','1',EOL, + /* 48 */ p_define,'$','_','%','1',' ','$','%','1',EOL, + /* 58 */ p_endmacro,EOL, + /* 60 */ p_imacro,'o','s','a','b','i',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 77 */ '[','%','?',' ','%','1',']',EOL, + /* 85 */ p_endmacro,EOL, + /* 87 */ EOL +}; +#endif + +#if defined(OF_MACHO) || defined(OF_MACHO32) || defined(OF_MACHO64) +const unsigned char macho_stdmac[] = { + /* From ./output/outmacho.mac */ + /* 0 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','s','e','c','t','i','o','n',' ','.','t','e','x','t',']',EOL, + /* 28 */ p_macro,'_','_','?','N','A','S','M','_','C','D','e','c','l','?','_','_',' ','1',EOL, + /* 48 */ p_endmacro,EOL, + /* 50 */ p_imacro,'s','u','b','s','e','c','t','i','o','n','s','_','v','i','a','_','s','y','m','b','o','l','s',' ','0','.','n','o','l','i','s','t',EOL, + /* 84 */ p_pragma,'_','_','?','O','U','T','P','U','T','_','F','O','R','M','A','T','?','_','_',' ','%','?',EOL, + /* 108 */ p_endmacro,EOL, + /* 110 */ p_imacro,'n','o','_','d','e','a','d','_','s','t','r','i','p',' ','1','-','*','.','n','o','l','i','s','t',EOL, + /* 136 */ p_rep,'%','0',EOL, + /* 140 */ p_pragma,'_','_','?','O','U','T','P','U','T','_','F','O','R','M','A','T','?','_','_',' ','%','?',' ','%','1',EOL, + /* 167 */ p_rotate,'1',EOL, + /* 170 */ p_endrep,EOL, + /* 172 */ p_endmacro,EOL, + /* 174 */ EOL +}; +#endif + +#if defined(OF_OBJ) +const unsigned char obj_stdmac[] = { + /* From ./output/outobj.mac */ + /* 0 */ p_define,'_','_','?','S','E','C','T','?','_','_',' ','[','s','e','c','t','i','o','n',' ','.','t','e','x','t',']',EOL, + /* 28 */ p_imacro,'g','r','o','u','p',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 45 */ '[','g','r','o','u','p',' ','%','1',']',EOL, + /* 56 */ p_endmacro,EOL, + /* 58 */ p_imacro,'u','p','p','e','r','c','a','s','e',' ','0','+','.','n','o','l','i','s','t',EOL, + /* 79 */ '[','u','p','p','e','r','c','a','s','e',' ','%','1',']',EOL, + /* 94 */ p_endmacro,EOL, + /* 96 */ p_imacro,'e','x','p','o','r','t',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 114 */ '[','e','x','p','o','r','t',' ','%','1',']',EOL, + /* 126 */ p_endmacro,EOL, + /* 128 */ p_imacro,'i','m','p','o','r','t',' ','1','+','.','n','o','l','i','s','t',EOL, + /* 146 */ '[','i','m','p','o','r','t',' ','%','1',']',EOL, + /* 158 */ p_endmacro,EOL, + /* 160 */ p_macro,'_','_','?','N','A','S','M','_','C','D','e','c','l','?','_','_',' ','1',EOL, + /* 180 */ p_endmacro,EOL, + /* 182 */ EOL +}; +#endif +const int use_package_count = 5; + +const struct use_package *nasm_find_use_package(const char *name) +{ + static const struct use_package packages[5] = { + { "altreg", nasm_usemac_altreg, 0 }, + { "fp", nasm_usemac_fp, 1 }, + { "ifunc", nasm_usemac_ifunc, 2 }, + { "masm", nasm_usemac_masm, 3 }, + { "smartalign", nasm_usemac_smartalign, 4 }, + }; +#define INVALID_HASH_ENTRY (65535/3) + static const int16_t hashdata[16] = { + INVALID_HASH_ENTRY, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 2, + 0, + INVALID_HASH_ENTRY, + 3, + 0, + 1, + 0, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + 4, + INVALID_HASH_ENTRY, + INVALID_HASH_ENTRY, + }; + uint32_t k1, k2; + uint64_t crc; + uint16_t ix; + + crc = crc64i(UINT64_C(0x076259c3e291c26c), name); + k1 = ((uint32_t)crc & 0xe) + 0; + k2 = ((uint32_t)(crc >> 32) & 0xe) + 1; + + ix = hashdata[k1] + hashdata[k2]; + if (ix >= 5) + return NULL; + + if (nasm_stricmp(packages[ix].package, name)) + return NULL; + + return &packages[ix]; +} diff --git a/vere/ext/nasm/macros/macros.pl b/vere/ext/nasm/macros/macros.pl new file mode 100755 index 0000000..03a6486 --- /dev/null +++ b/vere/ext/nasm/macros/macros.pl @@ -0,0 +1,311 @@ +#!/usr/bin/perl +## -------------------------------------------------------------------------- +## +## Copyright 1996-2009 The NASM Authors - All Rights Reserved +## See the file AUTHORS included with the NASM distribution for +## the specific copyright holders. +## +## Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following +## conditions are met: +## +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above +## copyright notice, this list of conditions and the following +## disclaimer in the documentation and/or other materials provided +## with the distribution. +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +## CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +## INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +## DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +## NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +## LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +## CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +## OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +## EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +## +## -------------------------------------------------------------------------- + +# +# macros.pl produce macros.c from standard.mac +# + +require 'phash.ph'; +require 'asm/pptok.ph'; + +use bytes; + +my $fname; +my $line = 0; +my $index = 0; +my $tasm_count = 0; +my @pname; + +# Default names for various bytes +for (my $o = 0; $o < 256; $o++) { + my $c = chr($o); + if ($o < 32 || $o > 126) { + $pname[$o] = sprintf("%d", $o); + } elsif ($c =~ /^[\'\"\\]$/) { + $pname[$o] = "\'\\".$c."\'"; + } else { + $pname[$o] = "\'".$c."\'"; + } +} + +# +# Print out a string as a character array +# +sub charcify(@) { + my $l = ''; + my ($c, $o); + my $space = 1; + my $quote = 0; + + foreach $o (unpack("C*", join('',@_))) { + $c = pack("C", $o); + if ($quote) { + if ($o == $quote) { + $quote = 0; + } + } elsif ($c =~ /^[\'\"\`]$/) { + $quote = $o; + } else { + if ($c eq ' ') { + next if ($space); + $o = 32; + $c = ' '; + $space = 1; + } elsif ($o < 32 || $o > 126) { + $space = 1; # Implicit space after compacted directive + } else { + $space = 0; + } + } + $l .= $pname[$o]; + $l .= ','; + } + return $l; +} + + +# +# Generate macros.c +# +open(OUT, '>', 'macros/macros.c') or die "unable to open macros.c\n"; + +print OUT "/*\n"; +print OUT " * Do not edit - this file auto-generated by macros.pl from:\n"; +print OUT " * ", join("\n * ", @ARGV), "\n"; +print OUT " */\n"; +print OUT "\n"; +print OUT "#include \"tables.h\"\n"; +print OUT "#include \"nasmlib.h\"\n"; +print OUT "#include \"hashtbl.h\"\n"; +print OUT "#include \"outform.h\"\n"; +print OUT "\n"; + +my $name = undef; +my $npkg = 0; +my @pkg_list = (); +my %pkg_number = (); +my $pkg; +my @out_list = (); +my @std_list = (); +my $outfmt; +my $lastname; +my $z; + +my @pptok_list = sort { $pptok_hash{$a} <=> $pptok_hash{$b} } keys %pptok_hash; +my %pnum; + +foreach my $pt (@pptok_list) { + my $n = $pptok_hash{$pt}; + if ($pt !~ /[A-Z]/ && $n < 256-96) { + $n = ($n+128) & 255; + (my $et = $pt) =~ s/^\%/p_/; + printf OUT "#define %-24s %3d\n", $et, $n; + $pnum{$pt} = $n; + $pname[$n] = $et; + } +} +printf OUT "#define %-24s %3d\n\n", 'EOL', 127; + +foreach $args ( @ARGV ) { + my @file_list = glob ( $args ); + foreach $fname ( @file_list ) { + open(INPUT,'<', $fname) or die "$0: $fname: $!\n"; + while (<INPUT>) { + $line++; + chomp; + while (/^(.*)\\$/) { + $_ = $1; + $_ .= <INPUT>; + chomp; + $line++; + } + s/^\s*(([^\'\"\;]|\"[^\"]*\"|\'[^\']*\')*?)\s*(\;.*)?$/$1/; + s/\s+/ /g; + next if ($_ eq ''); + + if (m/^OUT:\s*(\S.*)$/) { + undef $pkg; + my @out_alias = split(/\s+/, $1); + if (defined($name)) { + printf OUT " /* %4d */ EOL\n", $index++; + print OUT "};\n#endif\n"; + undef $name; + } + $index = 0; + print OUT "\n"; + my $pfx = '#if'; + foreach my $al (@out_alias) { + print OUT $pfx, " defined(OF_\U${al}\E)"; + $pfx = ' ||'; + } + $name = $out_alias[0] . '_stdmac'; + print OUT "\nconst unsigned char ${name}[] = {\n"; + print OUT " /* From $fname */\n"; + $lastname = $fname; + } elsif (m/^STD:\s*(\S+)$/) { + undef $pkg; + my $std = $1; + if (defined($name)) { + printf OUT " /* %4d */ EOL\n", $index++; + print OUT "};\n#endif\n"; + undef $name; + } + $index = 0; + print OUT "\n#if 1"; + $name = 'nasm_stdmac_' . $std; + print OUT "\nconst unsigned char ${name}[] = {\n"; + print OUT " /* From $fname */\n"; + $lastname = $fname; + } elsif (m/^USE:\s*(\S+)$/) { + $pkg = $1; + if (defined($pkg_number{$pkg})) { + die "$0: $fname: duplicate package: $pkg\n"; + } + if (defined($name)) { + printf OUT " /* %4d */ EOL\n", $index++; + print OUT "};\n#endif\n"; + undef $name; + } + $index = 0; + print OUT "\n#if 1"; + $name = 'nasm_usemac_' . $pkg; + print OUT "\nstatic const unsigned char ${name}[] = {\n"; + print OUT " /* From $fname */\n"; + $lastname = $fname; + push(@pkg_list, $pkg); + $pkg_number{$pkg} = $npkg++; + $z = pack("C", $pnum{'%define'})."__?USE_\U$pkg\E?__"; + printf OUT " /* %4d */ %sEOL,\n", $index, charcify($z); + $z = pack("C", $pnum{'%defalias'})."__USE_\U$pkg\E__ __?USE\U$pkg\E?__"; + printf OUT " /* %4d */ %sEOL,\n", $index, charcify($z); + $index += length($z)+1; + } else { + my($s1, $s2, $pd, $ws); + + if (!defined($name)) { + die "$0: $fname: macro declarations outside a known block\n"; + } + + $s1 = $_; + $s2 = ''; + while ($s1 =~ /(\%[a-zA-Z_][a-zA-Z0-9_]*)((\s+)(.*)|)$/) { + $s2 .= "$'"; + $pd = $1; + $ws = $3; + $s1 = $4; + if (defined($pnum{$pd})) { + $s2 .= pack("C", $pnum{$pd}); + } else { + $s2 .= $pd.$ws; + } + } + $s2 .= $s1; + if (length($s2) > 0) { + if ($lastname ne $fname) { + print OUT "\n /* From $fname */\n"; + $lastname = $fname; + } + printf OUT " /* %4d */ %sEOL,\n", + $index, charcify($s2); + $index += length($s2)+1; + } + } + } + close(INPUT); + } +} + +if (defined($name)) { + printf OUT " /* %4d */ EOL\n", $index++; + print OUT "};\n#endif\n"; + undef $name; +} + +my @hashinfo = gen_perfect_hash(\%pkg_number); +if (!@hashinfo) { + die "$0: no hash found\n"; +} +# Paranoia... +verify_hash_table(\%pkg_number, \@hashinfo); +my ($n, $sv, $g) = @hashinfo; +die if ($n & ($n-1)); +$n <<= 1; + +printf OUT "const int use_package_count = %d;\n\n", $npkg; + +print OUT "const struct use_package *nasm_find_use_package(const char *name)\n"; +print OUT "{\n"; +print OUT " static const struct use_package packages[$npkg] = {\n"; +my $ix = 0; +foreach $pkg (@pkg_list) { + printf OUT " { \"%s\", nasm_usemac_%s, %d },\n", + $pkg, $pkg, $ix++; +} +print OUT " };\n"; + +# Put a large value in unused slots. This makes it extremely unlikely +# that any combination that involves unused slot will pass the range test. +# This speeds up rejection of unrecognized tokens, i.e. identifiers. +print OUT "#define INVALID_HASH_ENTRY (65535/3)\n"; + +print OUT " static const int16_t hashdata[$n] = {\n"; +for ($i = 0; $i < $n; $i++) { + my $h = ${$g}[$i]; + print OUT " ", defined($h) ? $h : 'INVALID_HASH_ENTRY', ",\n"; +} +print OUT " };\n"; + +print OUT " uint32_t k1, k2;\n"; +print OUT " uint64_t crc;\n"; +# For correct overflow behavior, "ix" should be unsigned of the same +# width as the hash arrays. +print OUT " uint16_t ix;\n"; +print OUT "\n"; + +printf OUT " crc = crc64i(UINT64_C(0x%08x%08x), name);\n", + $$sv[0], $$sv[1]; +printf OUT " k1 = ((uint32_t)crc & 0x%x) + 0;\n", $n-2; +printf OUT " k2 = ((uint32_t)(crc >> 32) & 0x%x) + 1;\n", $n-2; +print OUT "\n"; +printf OUT " ix = hashdata[k1] + hashdata[k2];\n"; +printf OUT " if (ix >= %d)\n", scalar(@pkg_list); +print OUT " return NULL;\n"; +print OUT "\n"; +print OUT " if (nasm_stricmp(packages[ix].package, name))\n"; +print OUT " return NULL;\n"; +print OUT "\n"; +print OUT " return &packages[ix];\n"; +print OUT "}\n"; + +close(OUT); diff --git a/vere/ext/nasm/macros/masm.mac b/vere/ext/nasm/macros/masm.mac new file mode 100644 index 0000000..f476364 --- /dev/null +++ b/vere/ext/nasm/macros/masm.mac @@ -0,0 +1,82 @@ +;; -------------------------------------------------------------------------- +;; +;; Copyright 2019 The NASM Authors - All Rights Reserved +;; See the file AUTHORS included with the NASM distribution for +;; the specific copyright holders. +;; +;; Redistribution and use in source and binary forms, with or without +;; modification, are permitted provided that the following +;; conditions are met: +;; +;; * Redistributions of source code must retain the above copyright +;; notice, this list of conditions and the following disclaimer. +;; * Redistributions in binary form must reproduce the above +;; copyright notice, this list of conditions and the following +;; disclaimer in the documentation and/or other materials provided +;; with the distribution. +;; +;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +;; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +;; NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +;; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +;; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +;; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +;; OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +;; EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +;; +;; -------------------------------------------------------------------------- + +;; +;; masm.mac +;; +;; Very limited MASM compatibility package; intended to be used +;; primarily with machine-generated code. It does not include any +;; "programmer friendly" shortcuts, nor does it in any way support +;; ASSUME, symbol typing, or MASM-style structures. +;; + +USE: masm + +%unimacro segment 1+ + +%imacro segment 0-1+.nolist + %define __?SECT?__ [segment %00 %1] + __?SECT?__ +%endmacro + +%imacro ends 0+.nolist + %null ends %00 +%endmacro + +%imacro proc 0-*.nolist + %rep %0 + %ifidni %1,far + %idefine ret retf + %else + %idefine ret retn + %endif + %rotate 1 + %endrep +%endmacro + +%imacro endp 0.nolist + %null endp %00 + %undef ret +%endmacro + +%idefine ptr __?masm_ptr?__ +%idefine flat __?masm_flat?__ ; is %idefine really correct here? +%idefine offset + +%imacro end 0+.nolist + ; Nothing +%endmacro + +%idefine tbyte tword + + default rel diff --git a/vere/ext/nasm/macros/smartalign.mac b/vere/ext/nasm/macros/smartalign.mac new file mode 100644 index 0000000..abd496e --- /dev/null +++ b/vere/ext/nasm/macros/smartalign.mac @@ -0,0 +1,191 @@ +;; -------------------------------------------------------------------------- +;; +;; Copyright 1996-2017 The NASM Authors - All Rights Reserved +;; See the file AUTHORS included with the NASM distribution for +;; the specific copyright holders. +;; +;; Redistribution and use in source and binary forms, with or without +;; modification, are permitted provided that the following +;; conditions are met: +;; +;; * Redistributions of source code must retain the above copyright +;; notice, this list of conditions and the following disclaimer. +;; * Redistributions in binary form must reproduce the above +;; copyright notice, this list of conditions and the following +;; disclaimer in the documentation and/or other materials provided +;; with the distribution. +;; +;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +;; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +;; NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +;; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +;; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +;; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +;; OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +;; EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +;; +;; -------------------------------------------------------------------------- + +; +; Smart alignment macros +; +USE: smartalign + +%imacro alignmode 1-2.nolist + %ifidni %1,nop + %define __?ALIGN_JMP_THRESHOLD?__ 16 + + %define __?ALIGN_16BIT_1B?__ 0x90 + %define __?ALIGN_16BIT_GROUP?__ 1 + + %define __?ALIGN_32BIT_1B?__ 0x90 + %define __?ALIGN_32BIT_GROUP?__ 1 + + %define __?ALIGN_64BIT_1B?__ 0x90 + %define __?ALIGN_64BIT_GROUP?__ 1 + %elifidni %1,generic + %define __?ALIGN_JMP_THRESHOLD?__ 8 + + %define __?ALIGN_16BIT_1B?__ 0x90 + %define __?ALIGN_16BIT_2B?__ 0x89,0xf6 + %define __?ALIGN_16BIT_3B?__ 0x8d,0x74,0x00 + %define __?ALIGN_16BIT_4B?__ 0x8d,0xb4,0x00,0x00 + %define __?ALIGN_16BIT_5B?__ 0x8d,0xb4,0x00,0x00,0x90 + %define __?ALIGN_16BIT_6B?__ 0x8d,0xb4,0x00,0x00,0x89,0xff + %define __?ALIGN_16BIT_7B?__ 0x8d,0xb4,0x00,0x00,0x8d,0x7d,0x00 + %define __?ALIGN_16BIT_8B?__ 0x8d,0xb4,0x00,0x00,0x8d,0xbd,0x00,0x00 + %define __?ALIGN_16BIT_GROUP?__ 8 + + %define __?ALIGN_32BIT_1B?__ 0x90 + %define __?ALIGN_32BIT_2B?__ 0x89,0xf6 + %define __?ALIGN_32BIT_3B?__ 0x8d,0x76,0x00 + %define __?ALIGN_32BIT_4B?__ 0x8d,0x74,0x26,0x00 + %define __?ALIGN_32BIT_5B?__ 0x90,0x8d,0x74,0x26,0x00 + %define __?ALIGN_32BIT_6B?__ 0x8d,0xb6,0x00,0x00,0x00,0x00 + %define __?ALIGN_32BIT_7B?__ 0x8d,0xb4,0x26,0x00,0x00,0x00,0x00 + %define __?ALIGN_32BIT_GROUP?__ 7 + + %define __?ALIGN_64BIT_1B?__ 0x90 + %define __?ALIGN_64BIT_2B?__ 0x66,0x90 + %define __?ALIGN_64BIT_3B?__ 0x66,0x66,0x90 + %define __?ALIGN_64BIT_4B?__ 0x66,0x66,0x66,0x90 + %define __?ALIGN_64BIT_GROUP?__ 4 + %elifidni %1,k8 + %define __?ALIGN_JMP_THRESHOLD?__ 16 + + %define __?ALIGN_16BIT_1B?__ 0x90 + %define __?ALIGN_16BIT_2B?__ 0x66,0x90 + %define __?ALIGN_16BIT_3B?__ 0x66,0x66,0x90 + %define __?ALIGN_16BIT_4B?__ 0x66,0x66,0x66,0x90 + %define __?ALIGN_16BIT_GROUP?__ 4 + + %define __?ALIGN_32BIT_1B?__ 0x90 + %define __?ALIGN_32BIT_2B?__ 0x66,0x90 + %define __?ALIGN_32BIT_3B?__ 0x66,0x66,0x90 + %define __?ALIGN_32BIT_4B?__ 0x66,0x66,0x66,0x90 + %define __?ALIGN_32BIT_GROUP?__ 4 + + %define __?ALIGN_64BIT_1B?__ 0x90 + %define __?ALIGN_64BIT_2B?__ 0x66,0x90 + %define __?ALIGN_64BIT_3B?__ 0x66,0x66,0x90 + %define __?ALIGN_64BIT_4B?__ 0x66,0x66,0x66,0x90 + %define __?ALIGN_64BIT_GROUP?__ 4 + %elifidni %1,k7 + %define __?ALIGN_JMP_THRESHOLD?__ 16 + + %define __?ALIGN_16BIT_1B?__ 0x90 + %define __?ALIGN_16BIT_2B?__ 0x66,0x90 + %define __?ALIGN_16BIT_3B?__ 0x66,0x66,0x90 + %define __?ALIGN_16BIT_4B?__ 0x66,0x66,0x66,0x90 + %define __?ALIGN_64BIT_GROUP?__ 4 + + %define __?ALIGN_32BIT_1B?__ 0x90 + %define __?ALIGN_32BIT_2B?__ 0x8b,0xc0 + %define __?ALIGN_32BIT_3B?__ 0x8d,0x04,0x20 + %define __?ALIGN_32BIT_4B?__ 0x8d,0x44,0x20,0x00 + %define __?ALIGN_32BIT_5B?__ 0x8d,0x44,0x20,0x00,0x90 + %define __?ALIGN_32BIT_6B?__ 0x8d,0x80,0x00,0x00,0x00,0x00 + %define __?ALIGN_32BIT_7B?__ 0x8d,0x04,0x05,0x00,0x00,0x00,0x00 + %define __?ALIGN_32BIT_GROUP?__ 7 + + %define __?ALIGN_64BIT_1B?__ 0x90 + %define __?ALIGN_64BIT_2B?__ 0x66,0x90 + %define __?ALIGN_64BIT_3B?__ 0x66,0x66,0x90 + %define __?ALIGN_64BIT_4B?__ 0x66,0x66,0x66,0x90 + %define __?ALIGN_64BIT_GROUP?__ 4 + %elifidni %1,p6 + %define __?ALIGN_JMP_THRESHOLD?__ 16 + + %define __?ALIGN_16BIT_1B?__ 0x90 + %define __?ALIGN_16BIT_2B?__ 0x66,0x90 + %define __?ALIGN_16BIT_3B?__ 0x0f,0x1f,0x00 + %define __?ALIGN_16BIT_4B?__ 0x0f,0x1f,0x40,0x00 + %define __?ALIGN_16BIT_GROUP?__ 4 + + %define __?ALIGN_32BIT_1B?__ 0x90 + %define __?ALIGN_32BIT_2B?__ 0x66,0x90 + %define __?ALIGN_32BIT_3B?__ 0x0f,0x1f,0x00 + %define __?ALIGN_32BIT_4B?__ 0x0f,0x1f,0x40,0x00 + %define __?ALIGN_32BIT_5B?__ 0x0f,0x1f,0x44,0x00,0x00 + %define __?ALIGN_32BIT_6B?__ 0x66,0x0f,0x1f,0x44,0x00,0x00 + %define __?ALIGN_32BIT_7B?__ 0x0f,0x1f,0x80,0x00,0x00,0x00,0x00 + %define __?ALIGN_32BIT_8B?__ 0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00 + %define __?ALIGN_32BIT_GROUP?__ 8 + + %define __?ALIGN_64BIT_1B?__ 0x90 + %define __?ALIGN_64BIT_2B?__ 0x66,0x90 + %define __?ALIGN_64BIT_3B?__ 0x0f,0x1f,0x00 + %define __?ALIGN_64BIT_4B?__ 0x0f,0x1f,0x40,0x00 + %define __?ALIGN_64BIT_5B?__ 0x0f,0x1f,0x44,0x00,0x00 + %define __?ALIGN_64BIT_6B?__ 0x66,0x0f,0x1f,0x44,0x00,0x00 + %define __?ALIGN_64BIT_7B?__ 0x0f,0x1f,0x80,0x00,0x00,0x00,0x00 + %define __?ALIGN_64BIT_8B?__ 0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00 + %define __?ALIGN_64BIT_GROUP?__ 8 + %else + %error unknown alignment mode: %1 + %endif + %ifnempty %2 + %ifidni %2,nojmp + %xdefine __?ALIGN_JMP_THRESHOLD?__ -1 + %else + %xdefine __?ALIGN_JMP_THRESHOLD?__ %2 + %endif + %endif + %xdefine __?ALIGNMODE?__ %1,__?ALIGN_JMP_THRESHOLD?__ +%endmacro + +%defalias __ALIGNMODE__ __?ALIGNMODE?__ + +%unimacro align 1-2+.nolist +%imacro align 1-2+.nolist + sectalign %1 ; align a segment as well + %ifnempty %2 + times (((%1) - (($-$$) % (%1))) % (%1)) %2 + %elif __?PASS?__ == 0 || __?PASS?__ == 3 + times (((%1) - (($-$$) % (%1))) % (%1)) nop + %else + %push + %assign %$pad (((%1) - (($-$$) % (%1))) % (%1)) + %if __?ALIGN_JMP_THRESHOLD?__ != -1 && %$pad > __?ALIGN_JMP_THRESHOLD?__ + jmp %$end + ; We can't re-use %$pad here as $ will have changed! + times (((%1) - (($-$$) % (%1))) % (%1)) nop + %else + times (%$pad / __?ALIGN_%[__?BITS?__]BIT_GROUP?__) \ + db __?ALIGN_%[__?BITS?__]BIT_%[__?ALIGN_%[__?BITS?__]BIT_GROUP?__]B?__ + %assign %$pad %$pad % __?ALIGN_%[__?BITS?__]BIT_GROUP?__ + %if %$pad > 0 + db __?ALIGN_%[__?BITS?__]BIT_%[%$pad]B?__ + %endif + %endif +%$end: + %pop + %endif +%endmacro + + alignmode generic diff --git a/vere/ext/nasm/macros/standard.mac b/vere/ext/nasm/macros/standard.mac new file mode 100644 index 0000000..3d875e3 --- /dev/null +++ b/vere/ext/nasm/macros/standard.mac @@ -0,0 +1,331 @@ +;; -------------------------------------------------------------------------- +;; +;; Copyright 1996-2019 The NASM Authors - All Rights Reserved +;; See the file AUTHORS included with the NASM distribution for +;; the specific copyright holders. +;; +;; Redistribution and use in source and binary forms, with or without +;; modification, are permitted provided that the following +;; conditions are met: +;; +;; * Redistributions of source code must retain the above copyright +;; notice, this list of conditions and the following disclaimer. +;; * Redistributions in binary form must reproduce the above +;; copyright notice, this list of conditions and the following +;; disclaimer in the documentation and/or other materials provided +;; with the distribution. +;; +;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +;; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +;; NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +;; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +;; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +;; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +;; OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +;; EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +;; +;; -------------------------------------------------------------------------- + +; Standard macro set for NASM -*- nasm -*- + +; Macros to make NASM ignore some TASM directives +STD: tasm + %idefine IDEAL + %idefine JUMPS + %idefine P386 + %idefine P486 + %idefine P586 + %idefine END + +; The normal standard macros +STD: nasm + +; Note that although some user-level forms of directives are defined +; here, not all of them are: the user-level form of a format-specific +; directive should be defined in the module for that directive. + +%define __?SECT?__ ; it ought to be defined, even if as nothing +%defalias __SECT__ __?SECT?__ + +%imacro section 1+.nolist + %define __?SECT?__ [section %1] + __?SECT?__ +%endmacro + +%imacro segment 1+.nolist + %define __?SECT?__ [segment %1] + __?SECT?__ +%endmacro + +%define __?SECTALIGN_ALIGN_UPDATES_SECTION?__ 1 +%imacro sectalign 1+.nolist + %ifidni %1,off + %define __?SECTALIGN_ALIGN_UPDATES_SECTION?__ 0 + %elifidni %1,on + %define __?SECTALIGN_ALIGN_UPDATES_SECTION?__ 1 + %else + [sectalign %1] + %endif +%endmacro +%defalias __SECTALIGN_ALIGN_UPDATES_SECTION__ __?SECTALIGN_ALIGN_UPDATES_SECTION?__ + +%imacro absolute 1+.nolist + %define __?SECT?__ [absolute %1] + __?SECT?__ +%endmacro + +%imacro struc 1-2.nolist 0 + %push + %define %$strucname %1 + [absolute %2] + %$strucname: ; allow definition of `.member' to work sanely +%endmacro + +%imacro endstruc 0.nolist + %{$strucname}_size equ ($-%$strucname) + %pop + __?SECT?__ +%endmacro + +%imacro istruc 1.nolist + %push + %define %$strucname %1 + %$strucstart: +%endmacro + +%imacro at 1-2+.nolist + %defstr %$member %1 + %substr %$member1 %$member 1 + %ifidn %$member1, '.' + times (%$strucname%1-%$strucname)-($-%$strucstart) db 0 + %else + times (%1-%$strucname)-($-%$strucstart) db 0 + %endif + %2 +%endmacro + +%imacro iend 0.nolist + times %{$strucname}_size-($-%$strucstart) db 0 + %pop +%endmacro + +%imacro align 1-2+.nolist nop + %if __?SECTALIGN_ALIGN_UPDATES_SECTION?__ + sectalign %1 + %endif + times (((%1) - (($-$$) % (%1))) % (%1)) %2 +%endmacro + +%imacro alignb 1-2+.nolist + %if __?SECTALIGN_ALIGN_UPDATES_SECTION?__ + sectalign %1 + %endif + %ifempty %2 + [warning push] + [warning -zeroing] + resb (((%1) - (($-$$) % (%1))) % (%1)) + [warning pop] + %else + times (((%1) - (($-$$) % (%1))) % (%1)) %2 + %endif +%endmacro + +%imacro bits 1+.nolist + [bits %1] +%endmacro + +%imacro use16 0.nolist + [bits 16] +%endmacro + +%imacro use32 0.nolist + [bits 32] +%endmacro + +%imacro use64 0.nolist + [bits 64] +%endmacro + +%imacro extern 1-*.nolist + %rep %0 + [extern %1] + %rotate 1 + %endrep +%endmacro + +%imacro static 1-*.nolist + %rep %0 + [static %1] + %rotate 1 + %endrep +%endmacro + +%imacro global 1-*.nolist + %rep %0 + [global %1] + %rotate 1 + %endrep +%endmacro + +%imacro required 1-*.nolist + %rep %0 + [required %1] + %rotate 1 + %endrep +%endmacro + +%imacro common 1-*.nolist + %rep %0 + [common %1] + %rotate 1 + %endrep +%endmacro + +%imacro cpu 1+.nolist + [cpu %1] +%endmacro + +%define __?FLOAT_DAZ?__ nodaz +%define __?FLOAT_ROUND?__ near +; __?FLOAT?__ contains the whole floating-point configuration so it can +; be saved and restored +%define __?FLOAT?__ __?FLOAT_DAZ?__,__?FLOAT_ROUND?__ + +%defalias __FLOAT_DAZ__ __?FLOAT_DAZ?__ +%defalias __FLOAT_ROUND__ __?FLOAT_ROUND?__ +%defalias __FLOAT__ __?FLOAT?__ + +%imacro float 1-*.nolist + %rep %0 + [float %1] + %ifidni %1,daz + %define __?FLOAT_DAZ?__ daz + %elifidni %1,nodaz + %define __?FLOAT_DAZ?__ nodaz + %elifidni %1,near + %define __?FLOAT_ROUND?__ near + %elifidni %1,up + %define __?FLOAT_ROUND?__ up + %elifidni %1,down + %define __?FLOAT_ROUND?__ down + %elifidni %1,zero + %define __?FLOAT_ROUND?__ zero + %elifidni %1,default + %define __?FLOAT_DAZ?__ nodaz + %define __?FLOAT_ROUND?__ near + %endif + %rotate 1 + %endrep +%endmacro + +%imacro default 1+.nolist + [default %1] +%endmacro + +%imacro userel 0.nolist + [default rel] +%endmacro +%imacro useabs 0.nolist + [default abs] +%endmacro +%imacro usebnd 0.nolist + [default bnd] +%endmacro +%imacro usenobnd 0.nolist + [default nobnd] +%endmacro + +%imacro incbin 1-2+.nolist 0 + %push + %pathsearch %$dep %1 + %depend %$dep + %? %$dep,%2 + %pop +%endmacro + +; Compatibility macro aliases +%defalias __NASM_MAJOR__ __?NASM_MAJOR?__ +%defalias __NASM_MINOR__ __?NASM_MINOR?__ +%defalias __NASM_SUBMINOR__ __?NASM_SUBMINOR?__ +%defalias __NASM_PATCHLEVEL__ __?NASM_PATCHLEVEL?__ +%defalias __NASM_SNAPSHOT__ __?NASM_SNAPSHOT?__ +%defalias __NASM_VERSION_ID__ __?NASM_VERSION_ID?__ +%defalias __NASM_VER__ __?NASM_VER?__ + +%defalias __OUTPUT_FORMAT__ __?OUTPUT_FORMAT?__ +%defalias __DEBUG_FORMAT__ __?DEBUG_FORMAT?__ + +%defalias __DATE__ __?DATE?__ +%defalias __DATE_NUM__ __?DATE_NUM?__ +%defalias __TIME__ __?TIME?__ +%defalias __TIME_NUM__ __?TIME_NUM?__ +%defalias __UTC_DATE__ __?UTC_DATE?__ +%defalias __UTC_DATE_NUM__ __?UTC_DATE_NUM?__ +%defalias __UTC_TIME__ __?UTC_TIME?__ +%defalias __UTC_TIME_NUM__ __?UTC_TIME_NUM?__ +%defalias __POSIX_TIME__ __?POSIX_TIME?__ + +%defalias __FILE__ __?FILE?__ +%defalias __LINE__ __?LINE?__ +%defalias __BITS__ __?BITS?__ +%defalias __PTR__ __?PTR?__ +%defalias __PASS__ __?PASS?__ + +; Backwards compatibility aliases for tokens. The extra level of indirection here +; means %aliases on|off will do the right thing for these as well. +%idefine __?infinity?__ %? +%idefine __?nan?__ %? +%idefine __?qnan?__ %? +%idefine __?snan?__ %? + +%idefine __?float8?__ %? +%idefine __?float16?__ %? +%idefine __?float32?__ %? +%idefine __?float64?__ %? +%idefine __?float80m?__ %? +%idefine __?float80e?__ %? +%idefine __?float128l?__ %? +%idefine __?float128h?__ %? + +%idefine __?utf16?__ %? +%idefine __?utf16le?__ %? +%idefine __?utf16be?__ %? +%idefine __?utf32?__ %? +%idefine __?utf32le?__ %? +%idefine __?utf32be?__ %? + +%idefine __?ilog2e?__ %? +%idefine __?ilog2w?__ %? +%idefine __?ilog2f?__ %? +%idefine __?ilog2c?__ %? + +%idefalias __infinity__ __?infinity?__ +%idefalias __nan__ __?nan?__ +%idefalias __qnan__ __?qnan?__ +%idefalias __snan__ __?snan?__ + +%idefalias __float8__ __?float8?__ +%idefalias __float16__ __?float16?__ +%idefalias __float32__ __?float32?__ +%idefalias __float64__ __?float64?__ +%idefalias __float80m__ __?float80m?__ +%idefalias __float80e__ __?float80e?__ +%idefalias __float128l__ __?float128l?__ +%idefalias __float128h__ __?float128h?__ + +%idefalias __utf16__ __?utf16?__ +%idefalias __utf16le__ __?utf16le?__ +%idefalias __utf16be__ __?utf16be?__ +%idefalias __utf32__ __?utf32?__ +%idefalias __utf32le__ __?utf32le?__ +%idefalias __utf32be__ __?utf32be?__ + +%idefalias __ilog2e__ __?ilog2e?__ +%idefalias __ilog2w__ __?ilog2w?__ +%idefalias __ilog2f__ __?ilog2f?__ +%idefalias __ilog2c__ __?ilog2c?__ |