| ;; -------------------------------------------------------------------------- |
| ;; |
| ;; 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 compatiblity 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 |