annotate doc/manual/x378.html @ 285:9010796c6253 2.3 2.3.1

Generated manual for distribution
author lost
date Fri, 24 Apr 2009 22:36:09 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
285
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
2 <HTML
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
3 ><HEAD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
4 ><TITLE
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
5 >Macros</TITLE
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
6 ><META
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
7 NAME="GENERATOR"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
8 CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
9 REL="HOME"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
10 TITLE="LW Tool Chain"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
11 HREF="index.html"><LINK
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
12 REL="UP"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
13 TITLE="LWASM"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
14 HREF="c35.html"><LINK
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
15 REL="PREVIOUS"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
16 TITLE="Assembler Directives"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
17 HREF="x146.html"><LINK
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
18 REL="NEXT"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
19 TITLE="Object Files and Sections"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
20 HREF="x400.html"></HEAD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
21 ><BODY
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
22 CLASS="SECTION"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
23 BGCOLOR="#FFFFFF"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
24 TEXT="#000000"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
25 LINK="#0000FF"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
26 VLINK="#840084"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
27 ALINK="#0000FF"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
28 ><DIV
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
29 CLASS="NAVHEADER"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
30 ><TABLE
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
31 SUMMARY="Header navigation table"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
32 WIDTH="100%"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
33 BORDER="0"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
34 CELLPADDING="0"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
35 CELLSPACING="0"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
36 ><TR
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
37 ><TH
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
38 COLSPAN="3"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
39 ALIGN="center"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
40 >LW Tool Chain</TH
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
41 ></TR
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
42 ><TR
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
43 ><TD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
44 WIDTH="10%"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
45 ALIGN="left"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
46 VALIGN="bottom"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
47 ><A
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
48 HREF="x146.html"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
49 ACCESSKEY="P"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
50 >Prev</A
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
51 ></TD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
52 ><TD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
53 WIDTH="80%"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
54 ALIGN="center"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
55 VALIGN="bottom"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
56 >Chapter 3. LWASM</TD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
57 ><TD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
58 WIDTH="10%"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
59 ALIGN="right"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
60 VALIGN="bottom"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
61 ><A
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
62 HREF="x400.html"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
63 ACCESSKEY="N"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
64 >Next</A
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
65 ></TD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
66 ></TR
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
67 ></TABLE
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
68 ><HR
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
69 ALIGN="LEFT"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
70 WIDTH="100%"></DIV
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
71 ><DIV
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
72 CLASS="SECTION"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
73 ><H1
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
74 CLASS="SECTION"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
75 ><A
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
76 NAME="AEN378"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
77 >3.7. Macros</A
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
78 ></H1
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
79 ><P
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
80 >LWASM is a macro assembler. A macro is simply a name that stands in for a
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
81 series of instructions. Once a macro is defined, it is used like any other
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
82 assembler directive. Defining a macro can be considered equivalent to adding
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
83 additional assembler directives.</P
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
84 ><P
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
85 >Macros my accept parameters. These parameters are referenced within
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
86 a macro by the a backslash ("\") followed by a digit 1 through 9 for the first
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
87 through ninth parameters. They may also be referenced by enclosing the
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
88 decimal parameter number in braces ("{num}"). These parameter references
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
89 are replaced with the verbatim text of the parameter passed to the macro. A
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
90 reference to a non-existent parameter will be replaced by an empty string.
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
91 Macro parameters are expanded everywhere on each source line. That means
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
92 the parameter to a macro could be used as a symbol or it could even appear
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
93 in a comment or could cause an entire source line to be commented out
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
94 when the macro is expanded.</P
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
95 ><P
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
96 >Parameters passed to a macro are separated by commas and the parameter list
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
97 is terminated by any whitespace. This means that neither a comma nor whitespace
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
98 may be included in a macro parameter.</P
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
99 ><P
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
100 >Macro expansion is done recursively. That is, within a macro, macros are
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
101 expanded. This can lead to infinite loops in macro expansion. If the assembler
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
102 hangs for a long time while assembling a file that uses macros, this may be
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
103 the reason.</P
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
104 ><P
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
105 >Each macro expansion receives its own local symbol context which is not
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
106 inherited by any macros called by it nor is it inherited from the context
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
107 the macro was instantiated in. That means it is possible to use local symbols
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
108 within macros without having them collide with symbols in other macros or
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
109 outside the macro itself. However, this also means that using a local symbol
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
110 as a parameter to a macro, while legal, will not do what it would seem to do
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
111 as it will result in looking up the local symbol in the macro's symbol context
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
112 rather than the enclosing context where it came from, likely yielding either
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
113 an undefined symbol error or bizarre assembly results.</P
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
114 ><P
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
115 >Note that there is no way to define a macro as local to a symbol context. All
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
116 macros are part of the global macro namespace. However, macros have a separate
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
117 namespace from symbols so it is possible to have a symbol with the same name
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
118 as a macro.</P
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
119 ><P
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
120 >Macros are defined only during the first pass. Macro expansion also
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
121 only occurs during the first pass. On the second pass, the macro
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
122 definition is simply ignored. Macros must be defined before they are used.</P
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
123 ><P
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
124 >The following directives are used when defining macros.</P
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
125 ><P
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
126 ></P
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
127 ><DIV
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
128 CLASS="VARIABLELIST"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
129 ><DL
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
130 ><DT
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
131 ><CODE
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
132 CLASS="PARAMETER"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
133 >macroname</CODE
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
134 > MACRO</DT
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
135 ><DD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
136 ><P
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
137 >This directive is used to being the definition of a macro called
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
138 <CODE
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
139 CLASS="PARAMETER"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
140 >macroname</CODE
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
141 >. If <CODE
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
142 CLASS="PARAMETER"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
143 >macroname</CODE
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
144 > already
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
145 exists, it is considered an error. Attempting to define a macro within a
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
146 macro is undefined. It may work and it may not so the behaviour should not
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
147 be relied upon.</P
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
148 ></DD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
149 ><DT
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
150 >ENDM</DT
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
151 ><DD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
152 ><P
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
153 >This directive indicates the end of the macro currently being defined. It
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
154 causes the assembler to resume interpreting source lines as normal.</P
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
155 ></DD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
156 ></DL
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
157 ></DIV
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
158 ></DIV
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
159 ><DIV
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
160 CLASS="NAVFOOTER"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
161 ><HR
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
162 ALIGN="LEFT"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
163 WIDTH="100%"><TABLE
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
164 SUMMARY="Footer navigation table"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
165 WIDTH="100%"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
166 BORDER="0"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
167 CELLPADDING="0"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
168 CELLSPACING="0"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
169 ><TR
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
170 ><TD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
171 WIDTH="33%"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
172 ALIGN="left"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
173 VALIGN="top"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
174 ><A
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
175 HREF="x146.html"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
176 ACCESSKEY="P"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
177 >Prev</A
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
178 ></TD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
179 ><TD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
180 WIDTH="34%"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
181 ALIGN="center"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
182 VALIGN="top"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
183 ><A
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
184 HREF="index.html"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
185 ACCESSKEY="H"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
186 >Home</A
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
187 ></TD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
188 ><TD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
189 WIDTH="33%"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
190 ALIGN="right"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
191 VALIGN="top"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
192 ><A
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
193 HREF="x400.html"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
194 ACCESSKEY="N"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
195 >Next</A
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
196 ></TD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
197 ></TR
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
198 ><TR
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
199 ><TD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
200 WIDTH="33%"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
201 ALIGN="left"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
202 VALIGN="top"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
203 >Assembler Directives</TD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
204 ><TD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
205 WIDTH="34%"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
206 ALIGN="center"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
207 VALIGN="top"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
208 ><A
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
209 HREF="c35.html"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
210 ACCESSKEY="U"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
211 >Up</A
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
212 ></TD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
213 ><TD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
214 WIDTH="33%"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
215 ALIGN="right"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
216 VALIGN="top"
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
217 >Object Files and Sections</TD
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
218 ></TR
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
219 ></TABLE
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
220 ></DIV
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
221 ></BODY
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
222 ></HTML
9010796c6253 Generated manual for distribution
lost
parents:
diff changeset
223 >