blob: 6bd27273c585d23546cf1c3e86a55835b44ae3ed [file] [log] [blame]
H. Peter Anvin (Intel)89817242019-08-14 15:24:56 -07001;; --------------------------------------------------------------------------
2;;
3;; Copyright 2019 The NASM Authors - All Rights Reserved
4;; See the file AUTHORS included with the NASM distribution for
5;; the specific copyright holders.
6;;
7;; Redistribution and use in source and binary forms, with or without
8;; modification, are permitted provided that the following
9;; conditions are met:
10;;
11;; * Redistributions of source code must retain the above copyright
12;; notice, this list of conditions and the following disclaimer.
13;; * Redistributions in binary form must reproduce the above
14;; copyright notice, this list of conditions and the following
15;; disclaimer in the documentation and/or other materials provided
16;; with the distribution.
17;;
18;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
19;; CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
20;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21;; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
23;; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
25;; NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26;; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27;; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28;; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29;; OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30;; EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31;;
32;; --------------------------------------------------------------------------
33
34;;
35;; masm.mac
36;;
37;; Very limited MASM compatiblity package; intended to be used
38;; primarily with machine-generated code. It does not include any
39;; "programmer friendly" shortcuts, nor does it in any way support
40;; ASSUME, symbol typing, or MASM-style structures.
41;;
42
43USE: masm
44
45%unimacro segment 1+
46
47%imacro segment 0-1+.nolist
H. Peter Anvind2354082019-08-27 16:38:48 -070048 %define __?SECT?__ [segment %00 %1]
49 __?SECT?__
H. Peter Anvin (Intel)89817242019-08-14 15:24:56 -070050%endmacro
51
52%imacro ends 0+.nolist
H. Peter Anvin (Intel)a79a7002020-07-10 02:55:50 -070053 %null ends %00
H. Peter Anvin (Intel)89817242019-08-14 15:24:56 -070054%endmacro
55
56%imacro proc 0-*.nolist
57 %rep %0
58 %ifidni %1,far
59 %idefine ret retf
60 %else
61 %idefine ret retn
62 %endif
63 %rotate 1
64 %endrep
65%endmacro
66
67%imacro endp 0.nolist
H. Peter Anvin (Intel)a79a7002020-07-10 02:55:50 -070068 %null endp %00
H. Peter Anvin (Intel)89817242019-08-14 15:24:56 -070069 %undef ret
70%endmacro
71
H. Peter Anvind2354082019-08-27 16:38:48 -070072%idefine ptr __?masm_ptr?__
73%idefine flat __?masm_flat?__ ; is %idefine really correct here?
H. Peter Anvin (Intel)89817242019-08-14 15:24:56 -070074%idefine offset
75
76%imacro end 0+.nolist
77 ; Nothing
78%endmacro
79
H. Peter Anvin (Intel)522bcad2019-08-14 21:29:21 -070080%idefine tbyte tword
81
H. Peter Anvin (Intel)89817242019-08-14 15:24:56 -070082 default rel