]> git.saurik.com Git - apple/boot.git/blob - i386/nasm/standard.mac
boot-83.2.tar.gz
[apple/boot.git] / i386 / nasm / standard.mac
1 ; Standard macro set for NASM 0.97 -*- nasm -*-
2 ; Note that although some user-level forms of directives are defined
3 ; here, not all of them are: the user-level form of a format-specific
4 ; directive should be defined in the module for that directive.
5
6 %define __NASM_MAJOR__ 0
7 %define __NASM_MINOR__ 97
8
9 ; These two need to be defined, though the actual definitions will
10 ; be constantly updated during preprocessing.
11 %define __FILE__
12 %define __LINE__
13
14 %define __SECT__ ; it ought to be defined, even if as nothing
15
16 %imacro section 1+.nolist
17 %define __SECT__ [section %1]
18 __SECT__
19 %endmacro
20 %imacro segment 1+.nolist
21 %define __SECT__ [segment %1]
22 __SECT__
23 %endmacro
24
25 %imacro absolute 1+.nolist
26 %define __SECT__ [absolute %1]
27 __SECT__
28 %endmacro
29
30 %imacro struc 1.nolist
31 %push struc
32 %define %$strucname %1
33 [absolute 0]
34 %$strucname: ; allow definition of `.member' to work sanely
35 %endmacro
36 %imacro endstruc 0.nolist
37 %{$strucname}_size:
38 %pop
39 __SECT__
40 %endmacro
41
42 %imacro istruc 1.nolist
43 %push istruc
44 %define %$strucname %1
45 %$strucstart:
46 %endmacro
47 %imacro at 1-2+.nolist
48 times %1-($-%$strucstart) db 0
49 %2
50 %endmacro
51 %imacro iend 0.nolist
52 times %{$strucname}_size-($-%$strucstart) db 0
53 %pop
54 %endmacro
55
56 %imacro align 1-2+.nolist nop
57 times ($$-$) & ((%1)-1) %2
58 %endmacro
59 %imacro alignb 1-2+.nolist resb 1
60 times ($$-$) & ((%1)-1) %2
61 %endmacro
62
63 %imacro extern 1-*.nolist
64 %rep %0
65 [extern %1]
66 %rotate 1
67 %endrep
68 %endmacro
69
70 %imacro bits 1+.nolist
71 [bits %1]
72 %endmacro
73
74 %imacro global 1-*.nolist
75 %rep %0
76 [global %1]
77 %rotate 1
78 %endrep
79 %endmacro
80
81 %imacro common 1-*.nolist
82 %rep %0
83 [common %1]
84 %rotate 1
85 %endrep
86 %endmacro