From 8981724f176ad18aaeac570faa5a26cc28bfef08 Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin (Intel)" Date: Wed, 14 Aug 2019 15:24:56 -0700 Subject: masm.mac, parser: VERY limited MASM emulation package Very limited MASM emulation. The parser has been extended to emulate the PTR keyword if the corresponding macro is enabled, and the syntax displacement[index] for memory operations is now recognized. Signed-off-by: H. Peter Anvin (Intel) --- macros/masm.mac | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 macros/masm.mac (limited to 'macros') diff --git a/macros/masm.mac b/macros/masm.mac new file mode 100644 index 00000000..3e64f70a --- /dev/null +++ b/macros/masm.mac @@ -0,0 +1,80 @@ +;; -------------------------------------------------------------------------- +;; +;; 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 + %pragma ignore 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 + %pragma ignore 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 + + default rel -- cgit v1.2.1