From fcedfddf00b3f994e4f4e40332ac7fc192c63244 Mon Sep 17 00:00:00 2001 From: polwex Date: Sun, 5 Oct 2025 21:56:51 +0700 Subject: claude is gud --- vere/ext/nasm/macros/standard.mac | 331 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 331 insertions(+) create mode 100644 vere/ext/nasm/macros/standard.mac (limited to 'vere/ext/nasm/macros/standard.mac') 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?__ -- cgit v1.2.3