]>
Commit | Line | Data |
---|---|---|
14c7c974 A |
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 |