summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorH. Peter Anvin (Intel) <hpa@zytor.com>2019-08-14 15:24:56 -0700
committerH. Peter Anvin (Intel) <hpa@zytor.com>2019-08-14 15:44:50 -0700
commit8981724f176ad18aaeac570faa5a26cc28bfef08 (patch)
treeeb4c77810945791e9ee1cd3fa37b6ddd87c31a0e /macros
parent02b60ddd1c86ba6d932301f4ab205027beafc688 (diff)
downloadnasm-8981724f176ad18aaeac570faa5a26cc28bfef08.tar.gz
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) <hpa@zytor.com>
Diffstat (limited to 'macros')
-rw-r--r--macros/masm.mac80
1 files changed, 80 insertions, 0 deletions
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