annotate doc/manual/manual.html @ 272:d5392bb5da3c 2.5

Added generated files
author lost
date Sun, 16 Aug 2009 17:16:49 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
272
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2 <HTML
d5392bb5da3c Added generated files
lost
parents:
diff changeset
3 ><HEAD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
4 ><TITLE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
5 >LW Tool Chain</TITLE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
6 ><META
d5392bb5da3c Added generated files
lost
parents:
diff changeset
7 NAME="GENERATOR"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
8 CONTENT="Modular DocBook HTML Stylesheet Version 1.79"></HEAD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
9 ><BODY
d5392bb5da3c Added generated files
lost
parents:
diff changeset
10 CLASS="BOOK"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
11 BGCOLOR="#FFFFFF"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
12 TEXT="#000000"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
13 LINK="#0000FF"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
14 VLINK="#840084"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
15 ALINK="#0000FF"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
16 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
17 CLASS="BOOK"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
18 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
19 NAME="AEN1"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
20 ></A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
21 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
22 CLASS="TITLEPAGE"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
23 ><H1
d5392bb5da3c Added generated files
lost
parents:
diff changeset
24 CLASS="TITLE"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
25 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
26 NAME="AEN2"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
27 >LW Tool Chain</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
28 ></H1
d5392bb5da3c Added generated files
lost
parents:
diff changeset
29 ><H3
d5392bb5da3c Added generated files
lost
parents:
diff changeset
30 CLASS="AUTHOR"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
31 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
32 NAME="AEN4"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
33 ></A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
34 >William Astle</H3
d5392bb5da3c Added generated files
lost
parents:
diff changeset
35 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
36 CLASS="COPYRIGHT"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
37 >Copyright &copy; 2009 William Astle</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
38 ><HR></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
39 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
40 CLASS="TOC"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
41 ><DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
42 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
43 ><B
d5392bb5da3c Added generated files
lost
parents:
diff changeset
44 >Table of Contents</B
d5392bb5da3c Added generated files
lost
parents:
diff changeset
45 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
46 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
47 >1. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
48 HREF="#AEN10"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
49 >Introduction</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
50 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
51 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
52 ><DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
53 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
54 >1.1. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
55 HREF="#AEN13"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
56 >History</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
57 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
58 ></DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
59 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
60 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
61 >2. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
62 HREF="#AEN18"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
63 >Output Formats</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
64 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
65 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
66 ><DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
67 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
68 >2.1. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
69 HREF="#AEN21"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
70 >Raw Binaries</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
71 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
72 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
73 >2.2. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
74 HREF="#AEN24"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
75 >DECB Binaries</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
76 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
77 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
78 >2.3. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
79 HREF="#AEN29"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
80 >OS9 Modules</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
81 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
82 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
83 >2.4. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
84 HREF="#AEN35"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
85 >Object Files</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
86 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
87 ></DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
88 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
89 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
90 >3. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
91 HREF="#AEN43"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
92 >LWASM</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
93 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
94 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
95 ><DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
96 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
97 >3.1. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
98 HREF="#AEN46"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
99 >Command Line Options</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
100 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
101 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
102 >3.2. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
103 HREF="#AEN144"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
104 >Dialects</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
105 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
106 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
107 >3.3. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
108 HREF="#AEN151"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
109 >Source Format</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
110 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
111 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
112 >3.4. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
113 HREF="#AEN160"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
114 >Symbols</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
115 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
116 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
117 >3.5. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
118 HREF="#AEN165"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
119 >Numbers and Expressions</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
120 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
121 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
122 >3.6. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
123 HREF="#AEN173"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
124 >Assembler Directives</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
125 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
126 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
127 ><DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
128 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
129 >3.6.1. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
130 HREF="#AEN176"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
131 >Data Directives</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
132 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
133 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
134 >3.6.2. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
135 HREF="#AEN276"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
136 >Address Definition</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
137 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
138 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
139 >3.6.3. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
140 HREF="#AEN323"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
141 >Conditional Assembly</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
142 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
143 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
144 >3.6.4. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
145 HREF="#AEN387"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
146 >OS9 Target Directives</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
147 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
148 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
149 >3.6.5. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
150 HREF="#AEN412"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
151 >Miscelaneous Directives</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
152 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
153 ></DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
154 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
155 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
156 >3.7. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
157 HREF="#AEN445"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
158 >Macros</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
159 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
160 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
161 >3.8. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
162 HREF="#AEN467"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
163 >Object Files and Sections</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
164 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
165 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
166 >3.9. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
167 HREF="#AEN525"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
168 >Assembler Modes and Pragmas</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
169 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
170 ></DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
171 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
172 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
173 >4. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
174 HREF="#AEN570"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
175 >LWLINK</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
176 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
177 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
178 ><DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
179 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
180 >4.1. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
181 HREF="#AEN573"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
182 >Command Line Options</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
183 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
184 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
185 >4.2. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
186 HREF="#AEN670"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
187 >Linker Operation</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
188 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
189 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
190 >4.3. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
191 HREF="#AEN684"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
192 >Linking Scripts</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
193 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
194 ></DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
195 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
196 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
197 >5. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
198 HREF="#AEN718"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
199 >Libraries and LWAR</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
200 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
201 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
202 ><DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
203 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
204 >5.1. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
205 HREF="#AEN722"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
206 >Command Line Options</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
207 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
208 ></DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
209 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
210 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
211 >6. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
212 HREF="#OBJCHAP"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
213 >Object Files</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
214 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
215 ></DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
216 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
217 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
218 CLASS="LOT"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
219 ><DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
220 CLASS="LOT"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
221 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
222 ><B
d5392bb5da3c Added generated files
lost
parents:
diff changeset
223 >List of Tables</B
d5392bb5da3c Added generated files
lost
parents:
diff changeset
224 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
225 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
226 >6-1. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
227 HREF="#AEN805"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
228 >Object File Term Types</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
229 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
230 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
231 >6-2. <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
232 HREF="#AEN835"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
233 >Object File Operator Numbers</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
234 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
235 ></DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
236 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
237 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
238 CLASS="CHAPTER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
239 ><HR><H1
d5392bb5da3c Added generated files
lost
parents:
diff changeset
240 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
241 NAME="AEN10"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
242 ></A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
243 >Chapter 1. Introduction</H1
d5392bb5da3c Added generated files
lost
parents:
diff changeset
244 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
245 >The LW tool chain provides utilities for building binaries for MC6809 and
d5392bb5da3c Added generated files
lost
parents:
diff changeset
246 HD6309 CPUs. The tool chain includes a cross-assembler and a cross-linker
d5392bb5da3c Added generated files
lost
parents:
diff changeset
247 which support several styles of output.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
248 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
249 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
250 ><HR><H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
251 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
252 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
253 NAME="AEN13"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
254 >1.1. History</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
255 ></H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
256 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
257 >For a long time, I have had an interest in creating an operating system for
d5392bb5da3c Added generated files
lost
parents:
diff changeset
258 the Coco3. I finally started working on that project around the beginning of
d5392bb5da3c Added generated files
lost
parents:
diff changeset
259 2006. I had a number of assemblers I could choose from. Eventually, I settled
d5392bb5da3c Added generated files
lost
parents:
diff changeset
260 on one and started tinkering. After a while, I realized that assembler was not
d5392bb5da3c Added generated files
lost
parents:
diff changeset
261 going to be sufficient due to lack of macros and issues with forward references.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
262 Then I tried another which handled forward references correctly but still did
d5392bb5da3c Added generated files
lost
parents:
diff changeset
263 not support macros. I looked around at other assemblers and they all lacked
d5392bb5da3c Added generated files
lost
parents:
diff changeset
264 one feature or another that I really wanted for creating my operating system.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
265 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
266 >The solution seemed clear at that point. I am a fair programmer so I figured
d5392bb5da3c Added generated files
lost
parents:
diff changeset
267 I could write an assembler that would do everything I wanted an assembler to
d5392bb5da3c Added generated files
lost
parents:
diff changeset
268 do. Thus the LWASM probject was born. After more than two years of on and off
d5392bb5da3c Added generated files
lost
parents:
diff changeset
269 work, version 1.0 of LWASM was released in October of 2008.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
270 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
271 >As the aforementioned operating system project progressed further, it became
d5392bb5da3c Added generated files
lost
parents:
diff changeset
272 clear that while assembling the whole project through a single file was doable,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
273 it was not practical. When I found myself playing some fancy games with macros
d5392bb5da3c Added generated files
lost
parents:
diff changeset
274 in a bid to simulate sections, I realized I needed a means of assembling
d5392bb5da3c Added generated files
lost
parents:
diff changeset
275 source files separately and linking them later. This spawned a major development
d5392bb5da3c Added generated files
lost
parents:
diff changeset
276 effort to add an object file support to LWASM. It also spawned the LWLINK
d5392bb5da3c Added generated files
lost
parents:
diff changeset
277 project to provide a means to actually link the files.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
278 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
279 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
280 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
281 CLASS="CHAPTER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
282 ><HR><H1
d5392bb5da3c Added generated files
lost
parents:
diff changeset
283 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
284 NAME="AEN18"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
285 ></A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
286 >Chapter 2. Output Formats</H1
d5392bb5da3c Added generated files
lost
parents:
diff changeset
287 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
288 >The LW tool chain supports multiple output formats. Each format has its
d5392bb5da3c Added generated files
lost
parents:
diff changeset
289 advantages and disadvantages. Each format is described below.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
290 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
291 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
292 ><HR><H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
293 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
294 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
295 NAME="AEN21"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
296 >2.1. Raw Binaries</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
297 ></H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
298 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
299 >A raw binary is simply a string of bytes. There are no headers or other
d5392bb5da3c Added generated files
lost
parents:
diff changeset
300 niceties. Both LWLINK and LWASM support generating raw binaries. ORG directives
d5392bb5da3c Added generated files
lost
parents:
diff changeset
301 in the source code only serve to set the addresses that will be used for
d5392bb5da3c Added generated files
lost
parents:
diff changeset
302 symbols but otherwise have no direct impact on the resulting binary.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
303 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
304 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
305 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
306 ><HR><H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
307 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
308 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
309 NAME="AEN24"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
310 >2.2. DECB Binaries</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
311 ></H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
312 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
313 >A DECB binary is compatible with the LOADM command in Disk Extended
d5392bb5da3c Added generated files
lost
parents:
diff changeset
314 Color Basic on the CoCo. They are also compatible with CLOADM from Extended
d5392bb5da3c Added generated files
lost
parents:
diff changeset
315 Color Basic. These binaries include the load address of the binary as well
d5392bb5da3c Added generated files
lost
parents:
diff changeset
316 as encoding an execution address. These binaries may contain multiple loadable
d5392bb5da3c Added generated files
lost
parents:
diff changeset
317 sections, each of which has its own load address.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
318 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
319 >Each binary starts with a preamble. Each preamble is five bytes long. The
d5392bb5da3c Added generated files
lost
parents:
diff changeset
320 first byte is zero. The next two bytes specify the number of bytes to load
d5392bb5da3c Added generated files
lost
parents:
diff changeset
321 and the last two bytes specify the address to load the bytes at. Then, a
d5392bb5da3c Added generated files
lost
parents:
diff changeset
322 string of bytes follows. After this string of bytes, there may be another
d5392bb5da3c Added generated files
lost
parents:
diff changeset
323 preamble or a postamble. A postamble is also five bytes in length. The first
d5392bb5da3c Added generated files
lost
parents:
diff changeset
324 byte of the postamble is $FF, the next two are zero, and the last two are
d5392bb5da3c Added generated files
lost
parents:
diff changeset
325 the execution address for the binary.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
326 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
327 >Both LWASM and LWLINK can output this format.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
328 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
329 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
330 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
331 ><HR><H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
332 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
333 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
334 NAME="AEN29"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
335 >2.3. OS9 Modules</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
336 ></H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
337 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
338 >&#13;Since version 2.5, LWASM is able to generate OS9 modules. The syntax is
d5392bb5da3c Added generated files
lost
parents:
diff changeset
339 basically the same as for other assemblers. A module starts with the MOD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
340 directive and ends with the EMOD directive. The OS9 directive is provided
d5392bb5da3c Added generated files
lost
parents:
diff changeset
341 as a shortcut for writing system calls.&#13;</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
342 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
343 >&#13;LWASM does NOT provide an OS9Defs file. You must provide your own. Also note
d5392bb5da3c Added generated files
lost
parents:
diff changeset
344 that the common practice of using "ifp1" around the inclusion of the OS9Defs
d5392bb5da3c Added generated files
lost
parents:
diff changeset
345 file is discouraged as it is pointless and can lead to unintentional
d5392bb5da3c Added generated files
lost
parents:
diff changeset
346 problems and phasing errors. Because LWASM reads each file exactly once,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
347 there is no benefit to restricting the inclusion to the first assembly pass.&#13;</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
348 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
349 >&#13;It is also critical to understand that unlike many OS9 assemblers, LWASM
d5392bb5da3c Added generated files
lost
parents:
diff changeset
350 does NOT maintain a separate data address counter. Thus, you must define
d5392bb5da3c Added generated files
lost
parents:
diff changeset
351 all your data offsets and so on outside of the mod/emod segment. It is,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
352 therefore, likely that source code targeted at other assemblers will require
d5392bb5da3c Added generated files
lost
parents:
diff changeset
353 edits to build correctly.&#13;</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
354 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
355 >&#13;LWLINK does not, yet, have the ability to create OS9 modules from object
d5392bb5da3c Added generated files
lost
parents:
diff changeset
356 files.&#13;</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
357 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
358 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
359 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
360 ><HR><H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
361 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
362 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
363 NAME="AEN35"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
364 >2.4. Object Files</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
365 ></H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
366 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
367 >LWASM supports generating a proprietary object file format which is
d5392bb5da3c Added generated files
lost
parents:
diff changeset
368 described in <A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
369 HREF="#OBJCHAP"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
370 >Chapter 6</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
371 >. LWLINK is then used to link these
d5392bb5da3c Added generated files
lost
parents:
diff changeset
372 object files into a final binary in any of LWLINK's supported binary
d5392bb5da3c Added generated files
lost
parents:
diff changeset
373 formats.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
374 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
375 >Object files also support the concept of sections which are not valid
d5392bb5da3c Added generated files
lost
parents:
diff changeset
376 for other output types. This allows related code from each object file
d5392bb5da3c Added generated files
lost
parents:
diff changeset
377 linked to be collapsed together in the final binary.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
378 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
379 >Object files are very flexible in that they allow references that are not
d5392bb5da3c Added generated files
lost
parents:
diff changeset
380 known at assembly time to be resolved at link time. However, because the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
381 addresses of such references are not known at assembly time, there is no way
d5392bb5da3c Added generated files
lost
parents:
diff changeset
382 for the assembler to deduce that an eight bit addressing mode is possible.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
383 That means the assember will default to using sixteen bit addressing
d5392bb5da3c Added generated files
lost
parents:
diff changeset
384 whenever an external or cross-section reference is used.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
385 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
386 >As of LWASM 2.4, it is possible to force direct page addressing for an
d5392bb5da3c Added generated files
lost
parents:
diff changeset
387 external reference. Care must be taken to ensure the resulting addresses
d5392bb5da3c Added generated files
lost
parents:
diff changeset
388 are really in the direct page since the linker does not know what the direct
d5392bb5da3c Added generated files
lost
parents:
diff changeset
389 page is supposed to be and does not emit errors for byte overflows.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
390 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
391 >It is also possible to use external references in an eight bit immediate
d5392bb5da3c Added generated files
lost
parents:
diff changeset
392 mode instruction. In this case, only the low order eight bits will be used.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
393 Again, no byte overflows will be flagged.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
394 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
395 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
396 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
397 CLASS="CHAPTER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
398 ><HR><H1
d5392bb5da3c Added generated files
lost
parents:
diff changeset
399 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
400 NAME="AEN43"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
401 ></A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
402 >Chapter 3. LWASM</H1
d5392bb5da3c Added generated files
lost
parents:
diff changeset
403 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
404 >The LWTOOLS assembler is called LWASM. This chapter documents the various
d5392bb5da3c Added generated files
lost
parents:
diff changeset
405 features of the assembler. It is not, however, a tutorial on 6x09 assembly
d5392bb5da3c Added generated files
lost
parents:
diff changeset
406 language programming.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
407 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
408 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
409 ><HR><H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
410 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
411 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
412 NAME="AEN46"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
413 >3.1. Command Line Options</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
414 ></H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
415 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
416 >The binary for LWASM is called "lwasm". Note that the binary is in lower
d5392bb5da3c Added generated files
lost
parents:
diff changeset
417 case. lwasm takes the following command line arguments.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
418 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
419 ></P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
420 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
421 CLASS="VARIABLELIST"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
422 ><DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
423 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
424 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
425 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
426 >--6309</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
427 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
428 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
429 >-3</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
430 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
431 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
432 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
433 >This will cause the assembler to accept the additional instructions available
d5392bb5da3c Added generated files
lost
parents:
diff changeset
434 on the 6309 processor. This is the default mode; this option is provided for
d5392bb5da3c Added generated files
lost
parents:
diff changeset
435 completeness and to override preset command arguments.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
436 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
437 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
438 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
439 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
440 >--6809</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
441 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
442 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
443 >-9</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
444 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
445 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
446 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
447 >This will cause the assembler to reject instructions that are only available
d5392bb5da3c Added generated files
lost
parents:
diff changeset
448 on the 6309 processor.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
449 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
450 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
451 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
452 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
453 >--decb</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
454 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
455 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
456 >-b</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
457 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
458 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
459 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
460 >Select the DECB output format target. Equivalent to <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
461 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
462 >--format=decb</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
463 >.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
464 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
465 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
466 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
467 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
468 >--format=type</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
469 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
470 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
471 >-f type</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
472 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
473 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
474 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
475 >Select the output format. Valid values are <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
476 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
477 >obj</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
478 > for the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
479 object file target, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
480 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
481 >decb</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
482 > for the DECB LOADM format,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
483 <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
484 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
485 >os9</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
486 > for creating OS9 modules, and <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
487 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
488 >raw</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
489 > for
d5392bb5da3c Added generated files
lost
parents:
diff changeset
490 a raw binary.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
491 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
492 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
493 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
494 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
495 >--list[=file]</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
496 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
497 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
498 >-l[file]</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
499 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
500 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
501 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
502 >Cause LWASM to generate a listing. If <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
503 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
504 >file</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
505 > is specified,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
506 the listing will go to that file. Otherwise it will go to the standard output
d5392bb5da3c Added generated files
lost
parents:
diff changeset
507 stream. By default, no listing is generated.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
508 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
509 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
510 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
511 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
512 >--obj</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
513 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
514 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
515 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
516 >Select the proprietary object file format as the output target.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
517 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
518 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
519 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
520 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
521 >--output=FILE</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
522 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
523 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
524 >-o FILE</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
525 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
526 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
527 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
528 >This option specifies the name of the output file. If not specified, the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
529 default is <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
530 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
531 >a.out</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
532 >.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
533 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
534 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
535 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
536 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
537 >--pragma=pragma</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
538 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
539 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
540 >-p pragma</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
541 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
542 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
543 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
544 >Specify assembler pragmas. Multiple pragmas are separated by commas. The
d5392bb5da3c Added generated files
lost
parents:
diff changeset
545 pragmas accepted are the same as for the PRAGMA assembler directive described
d5392bb5da3c Added generated files
lost
parents:
diff changeset
546 below.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
547 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
548 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
549 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
550 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
551 >--raw</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
552 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
553 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
554 >-r</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
555 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
556 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
557 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
558 >Select raw binary as the output target.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
559 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
560 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
561 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
562 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
563 >--help</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
564 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
565 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
566 >-?</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
567 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
568 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
569 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
570 >Present a help screen describing the command line options.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
571 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
572 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
573 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
574 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
575 >--usage</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
576 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
577 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
578 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
579 >Provide a summary of the command line options.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
580 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
581 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
582 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
583 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
584 >--version</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
585 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
586 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
587 >-V</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
588 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
589 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
590 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
591 >Display the software version.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
592 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
593 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
594 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
595 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
596 >--debug</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
597 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
598 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
599 >-d</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
600 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
601 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
602 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
603 >Increase the debugging level. Only really useful to people hacking on the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
604 LWASM source code itself.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
605 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
606 ></DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
607 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
608 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
609 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
610 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
611 ><HR><H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
612 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
613 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
614 NAME="AEN144"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
615 >3.2. Dialects</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
616 ></H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
617 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
618 >LWASM supports all documented MC6809 instructions as defined by Motorola.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
619 It also supports all known HD6309 instructions. While there is general
d5392bb5da3c Added generated files
lost
parents:
diff changeset
620 agreement on the pneumonics for most of the 6309 instructions, there is some
d5392bb5da3c Added generated files
lost
parents:
diff changeset
621 variance with the block transfer instructions. TFM for all four variations
d5392bb5da3c Added generated files
lost
parents:
diff changeset
622 seems to have gained the most traction and, thus, this is the form that is
d5392bb5da3c Added generated files
lost
parents:
diff changeset
623 recommended for LWASM. However, it also supports COPY, COPY-, IMP, EXP,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
624 TFRP, TFRM, TFRS, and TFRR. It further adds COPY+ as a synomym for COPY,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
625 IMPLODE for IMP, and EXPAND for EXP.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
626 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
627 >By default, LWASM accepts 6309 instructions. However, using the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
628 <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
629 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
630 >--6809</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
631 > parameter, you can cause it to throw errors on
d5392bb5da3c Added generated files
lost
parents:
diff changeset
632 6309 instructions instead.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
633 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
634 >The standard addressing mode specifiers are supported. These are the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
635 hash sign ("#") for immediate mode, the less than sign ("&lt;") for forced
d5392bb5da3c Added generated files
lost
parents:
diff changeset
636 eight bit modes, and the greater than sign ("&gt;") for forced sixteen bit modes.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
637 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
638 >Additionally, LWASM supports using the asterisk ("*") to indicate
d5392bb5da3c Added generated files
lost
parents:
diff changeset
639 base page addressing. This should not be used in hand-written source code,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
640 however, because it is non-standard and may or may not be present in future
d5392bb5da3c Added generated files
lost
parents:
diff changeset
641 versions of LWASM.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
642 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
643 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
644 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
645 ><HR><H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
646 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
647 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
648 NAME="AEN151"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
649 >3.3. Source Format</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
650 ></H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
651 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
652 >LWASM accepts plain text files in a relatively free form. It can handle
d5392bb5da3c Added generated files
lost
parents:
diff changeset
653 lines terminated with CR, LF, CRLF, or LFCR which means it should be able
d5392bb5da3c Added generated files
lost
parents:
diff changeset
654 to assemble files on any platform on which it compiles.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
655 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
656 >Each line may start with a symbol. If a symbol is present, there must not
d5392bb5da3c Added generated files
lost
parents:
diff changeset
657 be any whitespace preceding it. It is legal for a line to contain nothing
d5392bb5da3c Added generated files
lost
parents:
diff changeset
658 but a symbol.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
659 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
660 >The op code is separated from the symbol by whitespace. If there is
d5392bb5da3c Added generated files
lost
parents:
diff changeset
661 no symbol, there must be at least one white space character preceding it.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
662 If applicable, the operand follows separated by whitespace. Following the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
663 opcode and operand is an optional comment.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
664 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
665 >A comment can also be introduced with a * or a ;. The comment character is
d5392bb5da3c Added generated files
lost
parents:
diff changeset
666 optional for end of statement comments. However, if a symbol is the only
d5392bb5da3c Added generated files
lost
parents:
diff changeset
667 thing present on the line other than the comment, the comment character is
d5392bb5da3c Added generated files
lost
parents:
diff changeset
668 mandatory to prevent the assembler from interpreting the comment as an opcode.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
669 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
670 >For compatibility with the output generated by some C preprocessors, LWASM
d5392bb5da3c Added generated files
lost
parents:
diff changeset
671 will also ignore lines that begin with a #. This should not be used as a general
d5392bb5da3c Added generated files
lost
parents:
diff changeset
672 comment character, however.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
673 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
674 >The opcode is not treated case sensitively. Neither are register names in
d5392bb5da3c Added generated files
lost
parents:
diff changeset
675 the operand fields. Symbols, however, are case sensitive.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
676 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
677 >LWASM does not support line numbers in the file.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
678 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
679 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
680 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
681 ><HR><H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
682 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
683 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
684 NAME="AEN160"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
685 >3.4. Symbols</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
686 ></H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
687 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
688 >Symbols have no length restriction. They may contain letters, numbers, dots,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
689 dollar signs, and underscores. They must start with a letter, dot, or
d5392bb5da3c Added generated files
lost
parents:
diff changeset
690 underscore.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
691 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
692 >LWASM also supports the concept of a local symbol. A local symbol is one
d5392bb5da3c Added generated files
lost
parents:
diff changeset
693 which contains either a "?" or a "@", which can appear anywhere in the symbol.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
694 The scope of a local symbol is determined by a number of factors. First,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
695 each included file gets its own local symbol scope. A blank line will also
d5392bb5da3c Added generated files
lost
parents:
diff changeset
696 be considered a local scope barrier. Macros each have their own local symbol
d5392bb5da3c Added generated files
lost
parents:
diff changeset
697 scope as well (which has a side effect that you cannot use a local symbol
d5392bb5da3c Added generated files
lost
parents:
diff changeset
698 as an argument to a macro). There are other factors as well. In general,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
699 a local symbol is restricted to the block of code it is defined within.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
700 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
701 >By default, unless assembling to the os9 target, a "$" in the symbol will
d5392bb5da3c Added generated files
lost
parents:
diff changeset
702 also make it local. This can be controlled by the "dollarlocal" and
d5392bb5da3c Added generated files
lost
parents:
diff changeset
703 "nodollarlocal" pragmas. In the absence of a pragma to the contrary, For
d5392bb5da3c Added generated files
lost
parents:
diff changeset
704 the os9 target, a "$" in the symbol will not make it considered local while
d5392bb5da3c Added generated files
lost
parents:
diff changeset
705 for all other targets it will.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
706 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
707 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
708 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
709 ><HR><H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
710 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
711 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
712 NAME="AEN165"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
713 >3.5. Numbers and Expressions</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
714 ></H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
715 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
716 >&#13;Numbers can be expressed in binary, octal, decimal, or hexadecimal. Binary
d5392bb5da3c Added generated files
lost
parents:
diff changeset
717 numbers may be prefixed with a "%" symbol or suffixed with a "b" or "B".
d5392bb5da3c Added generated files
lost
parents:
diff changeset
718 Octal numbers may be prefixed with "@" or suffixed with "Q", "q", "O", or
d5392bb5da3c Added generated files
lost
parents:
diff changeset
719 "o". Hexadecimal numbers may be prefixed with "$", "0x" or "0X", or suffixed
d5392bb5da3c Added generated files
lost
parents:
diff changeset
720 with "H". No prefix or suffix is required for decimal numbers but they can
d5392bb5da3c Added generated files
lost
parents:
diff changeset
721 be prefixed with "&amp;" if desired. Any constant which begins with a letter
d5392bb5da3c Added generated files
lost
parents:
diff changeset
722 must be expressed with the correct prefix base identifier or be prefixed
d5392bb5da3c Added generated files
lost
parents:
diff changeset
723 with a 0. Thus hexadecimal FF would have to be written either 0FFH or $FF.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
724 Numbers are not case sensitive.&#13;</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
725 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
726 > A symbol may appear at any point where a number is acceptable. The
d5392bb5da3c Added generated files
lost
parents:
diff changeset
727 special symbol "*" can be used to represent the starting address of the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
728 current source line within expressions. </P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
729 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
730 >The ASCII value of a character can be included by prefixing it with a
d5392bb5da3c Added generated files
lost
parents:
diff changeset
731 single quote ('). The ASCII values of two characters can be included by
d5392bb5da3c Added generated files
lost
parents:
diff changeset
732 prefixing the characters with a quote (").</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
733 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
734 >&#13;LWASM supports the following basic binary operators: +, -, *, /, and %.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
735 These represent addition, subtraction, multiplication, division, and
d5392bb5da3c Added generated files
lost
parents:
diff changeset
736 modulus. It also supports unary negation and unary 1's complement (- and ^
d5392bb5da3c Added generated files
lost
parents:
diff changeset
737 respectively). It is also possible to use ~ for the unary 1's complement
d5392bb5da3c Added generated files
lost
parents:
diff changeset
738 operator. For completeness, a unary positive (+) is supported though it is
d5392bb5da3c Added generated files
lost
parents:
diff changeset
739 a no-op. LWASM also supports using |, &#38;, and ^ for bitwise or, bitwise and,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
740 and bitwise exclusive or respectively.&#13;</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
741 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
742 >&#13;Operator precedence follows the usual rules. Multiplication, division, and
d5392bb5da3c Added generated files
lost
parents:
diff changeset
743 modulus take precedence over addition and subtraction. Unary operators take
d5392bb5da3c Added generated files
lost
parents:
diff changeset
744 precedence over binary operators. Bitwise operators are lower precdence
d5392bb5da3c Added generated files
lost
parents:
diff changeset
745 than addition and subtraction. To force a specific order of evaluation,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
746 parentheses can be used in the usual manner.&#13;</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
747 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
748 >&#13;As of LWASM 2.5, the operators &#38;&#38; and || are recognized for boolean and and
d5392bb5da3c Added generated files
lost
parents:
diff changeset
749 boolean or respectively. They will return either 0 or 1 (false or true).
d5392bb5da3c Added generated files
lost
parents:
diff changeset
750 They have the lowest precedence of all the binary operators.&#13;</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
751 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
752 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
753 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
754 ><HR><H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
755 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
756 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
757 NAME="AEN173"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
758 >3.6. Assembler Directives</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
759 ></H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
760 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
761 >Various directives can be used to control the behaviour of the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
762 assembler or to include non-code/data in the resulting output. Those directives
d5392bb5da3c Added generated files
lost
parents:
diff changeset
763 that are not described in detail in other sections of this document are
d5392bb5da3c Added generated files
lost
parents:
diff changeset
764 described below.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
765 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
766 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
767 ><HR><H3
d5392bb5da3c Added generated files
lost
parents:
diff changeset
768 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
769 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
770 NAME="AEN176"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
771 >3.6.1. Data Directives</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
772 ></H3
d5392bb5da3c Added generated files
lost
parents:
diff changeset
773 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
774 ></P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
775 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
776 CLASS="VARIABLELIST"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
777 ><DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
778 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
779 >FCB <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
780 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
781 >expr[,...]</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
782 >, .DB <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
783 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
784 >expr[,...]</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
785 >, .BYTE <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
786 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
787 >expr[,...]</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
788 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
789 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
790 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
791 >Include one or more constant bytes (separated by commas) in the output.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
792 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
793 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
794 >FDB <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
795 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
796 >expr[,...]</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
797 >, .DW <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
798 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
799 >expr[,...]</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
800 >, .WORD <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
801 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
802 >expr[,...]</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
803 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
804 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
805 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
806 >Include one or more words (separated by commas) in the output.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
807 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
808 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
809 >FQB <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
810 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
811 >expr[,...]</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
812 >, .QUAD <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
813 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
814 >expr[,...]</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
815 >, .4BYTE <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
816 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
817 >expr[,...]</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
818 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
819 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
820 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
821 >Include one or more double words (separated by commas) in the output.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
822 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
823 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
824 >FCC <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
825 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
826 >string</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
827 >, .ASCII <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
828 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
829 >string</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
830 >, .STR <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
831 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
832 >string</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
833 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
834 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
835 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
836 >Include a string of text in the output. The first character of the operand
d5392bb5da3c Added generated files
lost
parents:
diff changeset
837 is the delimiter which must appear as the last character and cannot appear
d5392bb5da3c Added generated files
lost
parents:
diff changeset
838 within the string. The string is included with no modifications&#62;</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
839 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
840 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
841 >FCN <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
842 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
843 >string</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
844 >, .ASCIZ <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
845 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
846 >string</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
847 >, .STRZ <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
848 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
849 >string</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
850 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
851 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
852 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
853 >Include a NUL terminated string of text in the output. The first character of
d5392bb5da3c Added generated files
lost
parents:
diff changeset
854 the operand is the delimiter which must appear as the last character and
d5392bb5da3c Added generated files
lost
parents:
diff changeset
855 cannot appear within the string. A NUL byte is automatically appended to
d5392bb5da3c Added generated files
lost
parents:
diff changeset
856 the string.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
857 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
858 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
859 >FCS <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
860 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
861 >string</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
862 >, .ASCIS <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
863 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
864 >string</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
865 >, .STRS <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
866 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
867 >string</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
868 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
869 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
870 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
871 >Include a string of text in the output with bit 7 of the final byte set. The
d5392bb5da3c Added generated files
lost
parents:
diff changeset
872 first character of the operand is the delimiter which must appear as the last
d5392bb5da3c Added generated files
lost
parents:
diff changeset
873 character and cannot appear within the string.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
874 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
875 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
876 >ZMB <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
877 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
878 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
879 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
880 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
881 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
882 >Include a number of NUL bytes in the output. The number must be fully resolvable
d5392bb5da3c Added generated files
lost
parents:
diff changeset
883 during pass 1 of assembly so no forward or external references are permitted.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
884 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
885 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
886 >ZMD <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
887 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
888 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
889 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
890 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
891 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
892 >Include a number of zero words in the output. The number must be fully
d5392bb5da3c Added generated files
lost
parents:
diff changeset
893 resolvable during pass 1 of assembly so no forward or external references are
d5392bb5da3c Added generated files
lost
parents:
diff changeset
894 permitted.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
895 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
896 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
897 >ZMQ <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
898 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
899 >expr<CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
900 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
901 ></CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
902 ></CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
903 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
904 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
905 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
906 >Include a number of zero double-words in the output. The number must be fully
d5392bb5da3c Added generated files
lost
parents:
diff changeset
907 resolvable during pass 1 of assembly so no forward or external references are
d5392bb5da3c Added generated files
lost
parents:
diff changeset
908 permitted.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
909 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
910 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
911 >RMB <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
912 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
913 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
914 >, .BLKB <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
915 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
916 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
917 >, .DS <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
918 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
919 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
920 >, .RS <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
921 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
922 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
923 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
924 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
925 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
926 >Reserve a number of bytes in the output. The number must be fully resolvable
d5392bb5da3c Added generated files
lost
parents:
diff changeset
927 during pass 1 of assembly so no forward or external references are permitted.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
928 The value of the bytes is undefined.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
929 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
930 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
931 >RMD <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
932 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
933 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
934 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
935 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
936 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
937 >Reserve a number of words in the output. The number must be fully
d5392bb5da3c Added generated files
lost
parents:
diff changeset
938 resolvable during pass 1 of assembly so no forward or external references are
d5392bb5da3c Added generated files
lost
parents:
diff changeset
939 permitted. The value of the words is undefined.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
940 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
941 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
942 >RMQ <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
943 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
944 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
945 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
946 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
947 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
948 >Reserve a number of double-words in the output. The number must be fully
d5392bb5da3c Added generated files
lost
parents:
diff changeset
949 resolvable during pass 1 of assembly so no forward or external references are
d5392bb5da3c Added generated files
lost
parents:
diff changeset
950 permitted. The value of the double-words is undefined.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
951 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
952 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
953 >INCLUDEBIN <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
954 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
955 >filename</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
956 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
957 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
958 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
959 >Treat the contents of <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
960 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
961 >filename</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
962 > as a string of bytes to
d5392bb5da3c Added generated files
lost
parents:
diff changeset
963 be included literally at the current assembly point. This has the same effect
d5392bb5da3c Added generated files
lost
parents:
diff changeset
964 as converting the file contents to a series of FCB statements and including
d5392bb5da3c Added generated files
lost
parents:
diff changeset
965 those at the current assembly point.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
966 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
967 ></DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
968 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
969 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
970 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
971 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
972 ><HR><H3
d5392bb5da3c Added generated files
lost
parents:
diff changeset
973 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
974 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
975 NAME="AEN276"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
976 >3.6.2. Address Definition</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
977 ></H3
d5392bb5da3c Added generated files
lost
parents:
diff changeset
978 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
979 >The directives in this section all control the addresses of symbols
d5392bb5da3c Added generated files
lost
parents:
diff changeset
980 or the assembly process itself.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
981 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
982 ></P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
983 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
984 CLASS="VARIABLELIST"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
985 ><DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
986 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
987 >ORG <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
988 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
989 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
990 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
991 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
992 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
993 >Set the assembly address. The address must be fully resolvable on the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
994 first pass so no external or forward references are permitted. ORG is not
d5392bb5da3c Added generated files
lost
parents:
diff changeset
995 permitted within sections when outputting to object files. For the DECB
d5392bb5da3c Added generated files
lost
parents:
diff changeset
996 target, each ORG directive after which output is generated will cause
d5392bb5da3c Added generated files
lost
parents:
diff changeset
997 a new preamble to be output. ORG is only used to determine the addresses
d5392bb5da3c Added generated files
lost
parents:
diff changeset
998 of symbols when the raw target is used.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
999 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1000 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1001 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1002 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1003 >sym</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1004 > EQU <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1005 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1006 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1007 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1008 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1009 >sym</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1010 > = <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1011 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1012 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1013 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1014 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1015 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1016 >Define the value of <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1017 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1018 >sym</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1019 > to be <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1020 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1021 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1022 >.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1023 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1024 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1025 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1026 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1027 >sym</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1028 > SET <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1029 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1030 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1031 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1032 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1033 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1034 >Define the value of <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1035 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1036 >sym</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1037 > to be <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1038 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1039 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1040 >.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1041 Unlike EQU, SET permits symbols to be defined multiple times as long as SET
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1042 is used for all instances. Use of the symbol before the first SET statement
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1043 that sets its value is undefined.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1044 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1045 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1046 >SETDP <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1047 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1048 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1049 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1050 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1051 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1052 >Inform the assembler that it can assume the DP register contains
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1053 <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1054 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1055 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1056 >. This directive is only advice to the assembler
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1057 to determine whether an address is in the direct page and has no effect
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1058 on the contents of the DP register. The value must be fully resolved during
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1059 the first assembly pass because it affects the sizes of subsequent instructions.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1060 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1061 >This directive has no effect in the object file target.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1062 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1063 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1064 >ALIGN <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1065 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1066 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1067 >[,<CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1068 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1069 >value</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1070 >]</DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1071 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1072 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1073 >Force the current assembly address to be a multiple of
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1074 <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1075 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1076 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1077 >. If <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1078 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1079 >value</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1080 > is not
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1081 specified, a series of NUL bytes is output to force the alignment, if
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1082 required. Otherwise, the low order 8 bits of <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1083 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1084 >value</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1085 >
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1086 will be used as the fill. The alignment value must be fully resolved on the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1087 first pass because it affects the addresses of subsquent instructions.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1088 However, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1089 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1090 >value</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1091 > may include forward references; as
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1092 long as it resolves to a constant for the second pass, the value will be
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1093 accepted.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1094 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1095 >Unless <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1096 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1097 >value</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1098 > is specified as something like $12,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1099 this directive is not suitable for inclusion in the middle of actual code.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1100 The default padding value is $00 which is intended to be used within data
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1101 blocks. </P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1102 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1103 ></DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1104 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1105 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1106 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1107 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1108 ><HR><H3
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1109 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1110 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1111 NAME="AEN323"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1112 >3.6.3. Conditional Assembly</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1113 ></H3
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1114 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1115 >Portions of the source code can be excluded or included based on conditions
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1116 known at assembly time. Conditionals can be nested arbitrarily deeply. The
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1117 directives associated with conditional assembly are described in this section.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1118 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1119 >All conditionals must be fully bracketed. That is, every conditional
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1120 statement must eventually be followed by an ENDC at the same level of nesting.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1121 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1122 >Conditional expressions are only evaluated on the first assembly pass.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1123 It is not possible to game the assembly process by having a conditional
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1124 change its value between assembly passes. Thus there is not and never will
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1125 be any equivalent of IFP1 or IFP2 as provided by other assemblers.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1126 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1127 ></P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1128 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1129 CLASS="VARIABLELIST"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1130 ><DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1131 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1132 >IFEQ <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1133 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1134 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1135 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1136 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1137 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1138 >If <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1139 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1140 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1141 > evaluates to zero, the conditional
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1142 will be considered true.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1143 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1144 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1145 >IFNE <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1146 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1147 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1148 >, IF <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1149 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1150 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1151 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1152 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1153 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1154 >If <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1155 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1156 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1157 > evaluates to a non-zero value, the conditional
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1158 will be considered true.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1159 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1160 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1161 >IFGT <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1162 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1163 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1164 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1165 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1166 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1167 >If <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1168 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1169 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1170 > evaluates to a value greater than zero, the conditional
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1171 will be considered true.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1172 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1173 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1174 >IFGE <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1175 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1176 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1177 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1178 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1179 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1180 >If <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1181 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1182 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1183 > evaluates to a value greater than or equal to zero, the conditional
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1184 will be considered true.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1185 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1186 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1187 >IFLT <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1188 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1189 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1190 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1191 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1192 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1193 >If <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1194 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1195 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1196 > evaluates to a value less than zero, the conditional
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1197 will be considered true.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1198 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1199 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1200 >IFLE <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1201 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1202 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1203 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1204 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1205 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1206 >If <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1207 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1208 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1209 > evaluates to a value less than or equal to zero , the conditional
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1210 will be considered true.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1211 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1212 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1213 >IFDEF <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1214 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1215 >sym</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1216 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1217 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1218 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1219 >If <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1220 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1221 >sym</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1222 > is defined at this point in the assembly
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1223 process, the conditional
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1224 will be considered true.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1225 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1226 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1227 >IFNDEF <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1228 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1229 >sym</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1230 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1231 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1232 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1233 >If <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1234 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1235 >sym</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1236 > is not defined at this point in the assembly
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1237 process, the conditional
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1238 will be considered true.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1239 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1240 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1241 >ELSE</DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1242 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1243 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1244 >If the preceding conditional at the same level of nesting was false, the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1245 statements following will be assembled. If the preceding conditional at
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1246 the same level was true, the statements following will not be assembled.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1247 Note that the preceding conditional might have been another ELSE statement
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1248 although this behaviour is not guaranteed to be supported in future versions
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1249 of LWASM.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1250 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1251 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1252 >ENDC</DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1253 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1254 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1255 >This directive marks the end of a conditional construct. Every conditional
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1256 construct must end with an ENDC directive.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1257 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1258 ></DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1259 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1260 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1261 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1262 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1263 ><HR><H3
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1264 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1265 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1266 NAME="AEN387"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1267 >3.6.4. OS9 Target Directives</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1268 ></H3
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1269 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1270 >This section includes directives that apply solely to the OS9
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1271 target.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1272 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1273 ></P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1274 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1275 CLASS="VARIABLELIST"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1276 ><DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1277 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1278 >OS9 <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1279 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1280 >syscall</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1281 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1282 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1283 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1284 >&#13;This directive generates a call to the specified system call. <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1285 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1286 >syscall</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1287 > may be an arbitrary expression.&#13;</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1288 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1289 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1290 >MOD <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1291 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1292 >size</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1293 >,<CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1294 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1295 >name</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1296 >,<CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1297 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1298 >type</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1299 >,<CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1300 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1301 >flags</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1302 >,<CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1303 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1304 >execoff</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1305 >,<CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1306 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1307 >datasize</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1308 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1309 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1310 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1311 >&#13;This tells LWASM that the beginning of the actual module is here. It will
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1312 generate a module header based on the parameters specified. It will also
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1313 begin calcuating the module CRC.&#13;</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1314 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1315 >&#13;The precise meaning of the various parameters is beyond the scope of this
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1316 document since it is not a tutorial on OS9 module programming.&#13;</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1317 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1318 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1319 >EMOD</DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1320 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1321 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1322 >&#13;This marks the end of a module and causes LWASM to emit the calculated CRC
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1323 for the module.&#13;</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1324 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1325 ></DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1326 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1327 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1328 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1329 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1330 ><HR><H3
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1331 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1332 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1333 NAME="AEN412"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1334 >3.6.5. Miscelaneous Directives</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1335 ></H3
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1336 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1337 >This section includes directives that do not fit into the other
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1338 categories.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1339 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1340 ></P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1341 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1342 CLASS="VARIABLELIST"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1343 ><DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1344 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1345 >INCLUDE <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1346 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1347 >filename</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1348 >, USE <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1349 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1350 >filename</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1351 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1352 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1353 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1354 > Include the contents of <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1355 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1356 >filename</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1357 > at
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1358 this point in the assembly as though it were a part of the file currently
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1359 being processed. Note that if whitespace appears in the name of the file,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1360 you must enclose <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1361 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1362 >filename</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1363 > in quotes.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1364 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1365 >Note that the USE variation is provided only for compatibility with other
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1366 assemblers. It is recommended to use the INCLUDE variation.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1367 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1368 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1369 >END <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1370 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1371 >[expr]</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1372 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1373 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1374 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1375 >This directive causes the assembler to stop assembling immediately as though
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1376 it ran out of input. For the DECB target only, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1377 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1378 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1379 >
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1380 can be used to set the execution address of the resulting binary. For all
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1381 other targets, specifying <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1382 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1383 >expr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1384 > will cause an error.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1385 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1386 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1387 >ERROR <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1388 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1389 >string</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1390 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1391 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1392 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1393 >Causes a custom error message to be printed at this line. This will cause
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1394 assembly to fail. This directive is most useful inside conditional constructs
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1395 to cause assembly to fail if some condition that is known bad happens.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1396 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1397 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1398 >.MODULE <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1399 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1400 >string</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1401 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1402 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1403 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1404 >This directive is ignored for most output targets. If the output target
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1405 supports encoding a module name into it, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1406 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1407 >string</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1408 >
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1409 will be used as the module name.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1410 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1411 >As of version 2.2, no supported output targets support this directive.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1412 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1413 ></DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1414 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1415 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1416 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1417 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1418 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1419 ><HR><H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1420 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1421 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1422 NAME="AEN445"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1423 >3.7. Macros</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1424 ></H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1425 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1426 >LWASM is a macro assembler. A macro is simply a name that stands in for a
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1427 series of instructions. Once a macro is defined, it is used like any other
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1428 assembler directive. Defining a macro can be considered equivalent to adding
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1429 additional assembler directives.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1430 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1431 >Macros my accept parameters. These parameters are referenced within
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1432 a macro by the a backslash ("\") followed by a digit 1 through 9 for the first
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1433 through ninth parameters. They may also be referenced by enclosing the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1434 decimal parameter number in braces ("{num}"). These parameter references
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1435 are replaced with the verbatim text of the parameter passed to the macro. A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1436 reference to a non-existent parameter will be replaced by an empty string.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1437 Macro parameters are expanded everywhere on each source line. That means
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1438 the parameter to a macro could be used as a symbol or it could even appear
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1439 in a comment or could cause an entire source line to be commented out
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1440 when the macro is expanded.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1441 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1442 >Parameters passed to a macro are separated by commas and the parameter list
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1443 is terminated by any whitespace. This means that neither a comma nor whitespace
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1444 may be included in a macro parameter.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1445 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1446 >Macro expansion is done recursively. That is, within a macro, macros are
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1447 expanded. This can lead to infinite loops in macro expansion. If the assembler
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1448 hangs for a long time while assembling a file that uses macros, this may be
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1449 the reason.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1450 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1451 >Each macro expansion receives its own local symbol context which is not
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1452 inherited by any macros called by it nor is it inherited from the context
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1453 the macro was instantiated in. That means it is possible to use local symbols
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1454 within macros without having them collide with symbols in other macros or
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1455 outside the macro itself. However, this also means that using a local symbol
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1456 as a parameter to a macro, while legal, will not do what it would seem to do
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1457 as it will result in looking up the local symbol in the macro's symbol context
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1458 rather than the enclosing context where it came from, likely yielding either
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1459 an undefined symbol error or bizarre assembly results.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1460 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1461 >Note that there is no way to define a macro as local to a symbol context. All
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1462 macros are part of the global macro namespace. However, macros have a separate
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1463 namespace from symbols so it is possible to have a symbol with the same name
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1464 as a macro.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1465 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1466 >Macros are defined only during the first pass. Macro expansion also
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1467 only occurs during the first pass. On the second pass, the macro
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1468 definition is simply ignored. Macros must be defined before they are used.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1469 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1470 >The following directives are used when defining macros.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1471 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1472 ></P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1473 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1474 CLASS="VARIABLELIST"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1475 ><DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1476 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1477 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1478 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1479 >macroname</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1480 > MACRO</DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1481 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1482 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1483 >This directive is used to being the definition of a macro called
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1484 <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1485 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1486 >macroname</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1487 >. If <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1488 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1489 >macroname</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1490 > already
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1491 exists, it is considered an error. Attempting to define a macro within a
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1492 macro is undefined. It may work and it may not so the behaviour should not
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1493 be relied upon.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1494 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1495 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1496 >ENDM</DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1497 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1498 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1499 >This directive indicates the end of the macro currently being defined. It
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1500 causes the assembler to resume interpreting source lines as normal.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1501 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1502 ></DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1503 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1504 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1505 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1506 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1507 ><HR><H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1508 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1509 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1510 NAME="AEN467"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1511 >3.8. Object Files and Sections</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1512 ></H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1513 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1514 >The object file target is very useful for large project because it allows
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1515 multiple files to be assembled independently and then linked into the final
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1516 binary at a later time. It allows only the small portion of the project
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1517 that was modified to be re-assembled rather than requiring the entire set
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1518 of source code to be available to the assembler in a single assembly process.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1519 This can be particularly important if there are a large number of macros,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1520 symbol definitions, or other metadata that uses resources at assembly time.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1521 By far the largest benefit, however, is keeping the source files small enough
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1522 for a mere mortal to find things in them.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1523 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1524 >With multi-file projects, there needs to be a means of resolving references to
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1525 symbols in other source files. These are known as external references. The
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1526 addresses of these symbols cannot be known until the linker joins all the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1527 object files into a single binary. This means that the assembler must be
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1528 able to output the object code without knowing the value of the symbol. This
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1529 places some restrictions on the code generated by the assembler. For
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1530 example, the assembler cannot generate direct page addressing for instructions
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1531 that reference external symbols because the address of the symbol may not
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1532 be in the direct page. Similarly, relative branches and PC relative addressing
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1533 cannot be used in their eight bit forms. Everything that must be resolved
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1534 by the linker must be assembled to use the largest address size possible to
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1535 allow the linker to fill in the correct value at link time. Note that the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1536 same problem applies to absolute address references as well, even those in
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1537 the same source file, because the address is not known until link time.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1538 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1539 >It is often desired in multi-file projects to have code of various types grouped
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1540 together in the final binary generated by the linker as well. The same applies
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1541 to data. In order for the linker to do that, the bits that are to be grouped
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1542 must be tagged in some manner. This is where the concept of sections comes in.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1543 Each chunk of code or data is part of a section in the object file. Then,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1544 when the linker reads all the object files, it coalesces all sections of the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1545 same name into a single section and then considers it as a unit.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1546 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1547 >The existence of sections, however, raises a problem for symbols even
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1548 within the same source file. Thus, the assembler must treat symbols from
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1549 different sections within the same source file in the same manner as external
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1550 symbols. That is, it must leave them for the linker to resolve at link time,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1551 with all the limitations that entails.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1552 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1553 >In the object file target mode, LWASM requires all source lines that
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1554 cause bytes to be output to be inside a section. Any directives that do
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1555 not cause any bytes to be output can appear outside of a section. This includes
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1556 such things as EQU or RMB. Even ORG can appear outside a section. ORG, however,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1557 makes no sense within a section because it is the linker that determines
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1558 the starting address of the section's code, not the assembler.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1559 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1560 >All symbols defined globally in the assembly process are local to the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1561 source file and cannot be exported. All symbols defined within a section are
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1562 considered local to the source file unless otherwise explicitly exported.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1563 Symbols referenced from external source files must be declared external,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1564 either explicitly or by asking the assembler to assume that all undefined
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1565 symbols are external.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1566 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1567 >It is often handy to define a number of memory addresses that will be
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1568 used for data at run-time but which need not be included in the binary file.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1569 These memory addresses are not initialized until run-time, either by the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1570 program itself or by the program loader, depending on the operating environment.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1571 Such sections are often known as BSS sections. LWASM supports generating
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1572 sections with a BSS attribute set which causes the section definition including
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1573 symbols exported from that section and those symbols required to resolve
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1574 references from the local file, but with no actual code in the object file.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1575 It is illegal for any source lines within a BSS flagged section to cause any
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1576 bytes to be output.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1577 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1578 >The following directives apply to section handling.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1579 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1580 ></P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1581 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1582 CLASS="VARIABLELIST"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1583 ><DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1584 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1585 >SECTION <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1586 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1587 >name[,flags]</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1588 >, SECT <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1589 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1590 >name[,flags]</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1591 >, .AREA <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1592 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1593 >name[,flags]</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1594 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1595 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1596 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1597 >Instructs the assembler that the code following this directive is to be
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1598 considered part of the section <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1599 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1600 >name</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1601 >. A section name
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1602 may appear multiple times in which case it is as though all the code from
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1603 all the instances of that section appeared adjacent within the source file.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1604 However, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1605 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1606 >flags</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1607 > may only be specified on the first
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1608 instance of the section.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1609 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1610 >There is a single flag supported in <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1611 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1612 >flags</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1613 >. The
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1614 flag <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1615 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1616 >bss</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1617 > will cause the section to be treated as a BSS
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1618 section and, thus, no code will be included in the object file nor will any
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1619 bytes be permitted to be output.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1620 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1621 >If the section name is "bss" or ".bss" in any combination of upper and
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1622 lower case, the section is assumed to be a BSS section. In that case,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1623 the flag <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1624 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1625 >!bss</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1626 > can be used to override this assumption.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1627 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1628 >If assembly is already happening within a section, the section is implicitly
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1629 ended and the new section started. This is not considered an error although
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1630 it is recommended that all sections be explicitly closed.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1631 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1632 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1633 >ENDSECTION, ENDSECT, ENDS</DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1634 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1635 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1636 >This directive ends the current section. This puts assembly outside of any
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1637 sections until the next SECTION directive.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1638 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1639 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1640 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1641 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1642 >sym</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1643 > EXTERN, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1644 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1645 >sym</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1646 > EXTERNAL, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1647 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1648 >sym</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1649 > IMPORT</DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1650 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1651 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1652 >This directive defines <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1653 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1654 >sym</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1655 > as an external symbol.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1656 This directive may occur at any point in the source code. EXTERN definitions
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1657 are resolved on the first pass so an EXTERN definition anywhere in the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1658 source file is valid for the entire file. The use of this directive is
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1659 optional when the assembler is instructed to assume that all undefined
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1660 symbols are external. In fact, in that mode, if the symbol is referenced
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1661 before the EXTERN directive, an error will occur.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1662 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1663 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1664 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1665 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1666 >sym</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1667 > EXPORT, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1668 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1669 >sym</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1670 > .GLOBL, EXPORT <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1671 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1672 >sym</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1673 >, .GLOBL <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1674 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1675 >sym</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1676 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1677 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1678 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1679 >This directive defines <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1680 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1681 >sym</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1682 > as an exported symbol.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1683 This directive may occur at any point in the source code, even before the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1684 definition of the exported symbol.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1685 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1686 >Note that <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1687 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1688 >sym</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1689 > may appear as the operand or as the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1690 statement's symbol. If there is a symbol on the statement, that will
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1691 take precedence over any operand that is present.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1692 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1693 ></DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1694 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1695 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1696 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1697 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1698 ><HR><H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1699 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1700 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1701 NAME="AEN525"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1702 >3.9. Assembler Modes and Pragmas</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1703 ></H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1704 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1705 >There are a number of options that affect the way assembly is performed.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1706 Some of these options can only be specified on the command line because
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1707 they determine something absolute about the assembly process. These include
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1708 such things as the output target. Other things may be switchable during
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1709 the assembly process. These are known as pragmas and are, by definition,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1710 not portable between assemblers.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1711 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1712 >LWASM supports a number of pragmas that affect code generation or
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1713 otherwise affect the behaviour of the assembler. These may be specified by
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1714 way of a command line option or by assembler directives. The directives
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1715 are as follows.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1716 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1717 ></P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1718 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1719 CLASS="VARIABLELIST"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1720 ><DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1721 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1722 >PRAGMA <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1723 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1724 >pragma[,...]</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1725 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1726 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1727 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1728 >Specifies that the assembler should bring into force all <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1729 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1730 >pragma</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1731 >s
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1732 specified. Any unrecognized pragma will cause an assembly error. The new
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1733 pragmas will take effect immediately. This directive should be used when
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1734 the program will assemble incorrectly if the pragma is ignored or not supported.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1735 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1736 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1737 >*PRAGMA <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1738 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1739 >pragma[,...]</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1740 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1741 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1742 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1743 >This is identical to the PRAGMA directive except no error will occur with
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1744 unrecognized or unsupported pragmas. This directive, by virtue of starting
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1745 with a comment character, will also be ignored by assemblers that do not
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1746 support this directive. Use this variation if the pragma is not required
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1747 for correct functioning of the code.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1748 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1749 ></DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1750 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1751 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1752 >Each pragma supported has a positive version and a negative version.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1753 The positive version enables the pragma while the negative version disables
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1754 it. The negatitve version is simply the positive version with "no" prefixed
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1755 to it. For instance, "pragma" vs. "nopragma". Only the positive version is
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1756 listed below.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1757 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1758 >Pragmas are not case sensitive.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1759 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1760 ></P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1761 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1762 CLASS="VARIABLELIST"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1763 ><DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1764 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1765 >index0tonone</DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1766 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1767 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1768 >When in force, this pragma enables an optimization affecting indexed addressing
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1769 modes. When the offset expression in an indexed mode evaluates to zero but is
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1770 not explicity written as 0, this will replace the operand with the equivalent
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1771 no offset mode, thus creating slightly faster code. Because of the advantages
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1772 of this optimization, it is enabled by default.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1773 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1774 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1775 >cescapes</DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1776 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1777 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1778 >This pragma will cause strings in the FCC, FCS, and FCN pseudo operations to
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1779 have C-style escape sequences interpreted. The one departure from the official
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1780 spec is that unrecognized escape sequences will return either the character
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1781 immediately following the backslash or some undefined value. Do not rely
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1782 on the behaviour of undefined escape sequences.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1783 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1784 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1785 >importundefexport</DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1786 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1787 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1788 >This pragma is only valid for targets that support external references. When
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1789 in force, it will cause the EXPORT directive to act as IMPORT if the symbol
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1790 to be exported is not defined. This is provided for compatibility with the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1791 output of gcc6809 and should not be used in hand written code. Because of
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1792 the confusion this pragma can cause, it is disabled by default.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1793 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1794 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1795 >undefextern</DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1796 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1797 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1798 >This pragma is only valid for targets that support external references. When in
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1799 force, if the assembler sees an undefined symbol on the second pass, it will
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1800 automatically define it as an external symbol. This automatic definition will
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1801 apply for the remainder of the assembly process, even if the pragma is
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1802 subsequently turned off. Because this behaviour would be potentially surprising,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1803 this pragma defaults to off.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1804 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1805 >The primary use for this pragma is for projects that share a large number of
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1806 symbols between source files. In such cases, it is impractical to enumerate
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1807 all the external references in every source file. This allows the assembler
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1808 and linker to do the heavy lifting while not preventing a particular source
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1809 module from defining a local symbol of the same name as an external symbol
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1810 if it does not need the external symbol. (This pragma will not cause an
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1811 automatic external definition if there is already a locally defined symbol.)</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1812 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1813 >This pragma will often be specified on the command line for large projects.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1814 However, depending on the specific dynamics of the project, it may be sufficient
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1815 for one or two files to use this pragma internally.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1816 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1817 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1818 >dollarlocal</DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1819 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1820 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1821 >When set, a "$" in a symbol makes it local. When not set, "$" does not
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1822 cause a symbol to be local. It is set by default except when using the OS9
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1823 target.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1824 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1825 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1826 >dollarnotlocal</DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1827 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1828 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1829 > This is the same as the "dollarlocal" pragma except its sense is
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1830 reversed. That is, "dollarlocal" and "nodollarnotlocal" are equivalent and
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1831 "nodollarlocal" and "dollarnotlocal" are equivalent. </P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1832 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1833 ></DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1834 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1835 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1836 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1837 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1838 CLASS="CHAPTER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1839 ><HR><H1
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1840 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1841 NAME="AEN570"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1842 ></A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1843 >Chapter 4. LWLINK</H1
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1844 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1845 >The LWTOOLS linker is called LWLINK. This chapter documents the various features
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1846 of the linker.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1847 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1848 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1849 ><HR><H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1850 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1851 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1852 NAME="AEN573"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1853 >4.1. Command Line Options</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1854 ></H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1855 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1856 >The binary for LWLINK is called "lwlink". Note that the binary is in lower
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1857 case. lwlink takes the following command line arguments.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1858 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1859 ></P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1860 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1861 CLASS="VARIABLELIST"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1862 ><DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1863 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1864 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1865 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1866 >--decb</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1867 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1868 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1869 >-b</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1870 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1871 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1872 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1873 >Selects the DECB output format target. This is equivalent to <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1874 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1875 >--format=decb</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1876 ></P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1877 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1878 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1879 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1880 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1881 >--output=FILE</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1882 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1883 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1884 >-o FILE</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1885 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1886 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1887 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1888 >This option specifies the name of the output file. If not specified, the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1889 default is <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1890 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1891 >a.out</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1892 >.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1893 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1894 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1895 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1896 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1897 >--format=TYPE</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1898 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1899 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1900 >-f TYPE</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1901 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1902 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1903 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1904 >This option specifies the output format. Valid values are <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1905 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1906 >decb</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1907 >
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1908 and <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1909 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1910 >raw</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1911 ></P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1912 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1913 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1914 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1915 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1916 >--raw</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1917 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1918 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1919 >-r</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1920 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1921 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1922 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1923 >This option specifies the raw output format.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1924 It is equivalent to <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1925 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1926 >--format=raw</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1927 >.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1928 and <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1929 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1930 >raw</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1931 ></P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1932 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1933 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1934 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1935 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1936 >--script=FILE</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1937 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1938 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1939 >-s</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1940 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1941 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1942 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1943 >This option allows specifying a linking script to override the linker's
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1944 built in defaults.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1945 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1946 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1947 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1948 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1949 >--section-base=SECT=BASE</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1950 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1951 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1952 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1953 >Cause section SECT to load at base address BASE. This will be prepended
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1954 to the built-in link script. It is ignored if a link script is provided.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1955 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1956 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1957 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1958 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1959 >--map=FILE</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1960 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1961 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1962 >-m FILE</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1963 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1964 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1965 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1966 >This will output a description of the link result to FILE.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1967 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1968 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1969 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1970 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1971 >--library=LIBSPEC</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1972 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1973 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1974 >-l LIBSPEC</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1975 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1976 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1977 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1978 >Load a library using the library search path. LIBSPEC will have "lib" prepended
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1979 and ".a" appended.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1980 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1981 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1982 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1983 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1984 >--library-path=DIR</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1985 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1986 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1987 >-L DIR</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1988 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1989 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1990 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1991 >Add DIR to the library search path.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1992 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1993 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1994 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1995 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1996 >--debug</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1997 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1998 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
1999 >-d</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2000 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2001 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2002 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2003 >This option increases the debugging level. It is only useful for LWTOOLS
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2004 developers.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2005 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2006 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2007 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2008 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2009 >--help</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2010 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2011 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2012 >-?</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2013 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2014 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2015 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2016 >This provides a listing of command line options and a brief description
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2017 of each.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2018 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2019 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2020 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2021 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2022 >--usage</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2023 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2024 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2025 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2026 >This will display a usage summary.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2027 of each.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2028 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2029 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2030 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2031 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2032 >--version</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2033 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2034 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2035 >-V</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2036 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2037 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2038 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2039 >This will display the version of LWLINK.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2040 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2041 ></DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2042 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2043 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2044 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2045 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2046 ><HR><H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2047 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2048 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2049 NAME="AEN670"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2050 >4.2. Linker Operation</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2051 ></H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2052 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2053 >&#13;LWLINK takes one or more files in supported input formats and links them
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2054 into a single binary. Currently supported formats are the LWTOOLS object
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2055 file format and the archive format used by LWAR. While the precise method is
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2056 slightly different, linking can be conceptualized as the following steps.&#13;</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2057 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2058 ></P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2059 ><OL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2060 TYPE="1"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2061 ><LI
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2062 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2063 >First, the linker loads a linking script. If no script is specified, it
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2064 loads a built-in default script based on the output format selected. This
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2065 script tells the linker how to lay out the various sections in the final
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2066 binary.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2067 ></LI
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2068 ><LI
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2069 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2070 >Next, the linker reads all the input files into memory. At this time, it
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2071 flags any format errors in those files. It constructs a table of symbols
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2072 for each object at this time.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2073 ></LI
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2074 ><LI
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2075 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2076 >The linker then proceeds with organizing the sections loaded from each file
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2077 according to the linking script. As it does so, it is able to assign addresses
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2078 to each symbol defined in each object file. At this time, the linker may
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2079 also collapse different instances of the same section name into a single
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2080 section by appending the data from each subsequent instance of the section
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2081 to the first instance of the section.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2082 ></LI
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2083 ><LI
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2084 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2085 >Next, the linker looks through every object file for every incomplete reference.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2086 It then attempts to fully resolve that reference. If it cannot do so, it
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2087 throws an error. Once a reference is resolved, the value is placed into
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2088 the binary code at the specified section. It should be noted that an
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2089 incomplete reference can reference either a symbol internal to the object
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2090 file or an external symbol which is in the export list of another object
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2091 file.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2092 ></LI
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2093 ><LI
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2094 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2095 >If all of the above steps are successful, the linker opens the output file
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2096 and actually constructs the binary.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2097 ></LI
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2098 ></OL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2099 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2100 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2101 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2102 ><HR><H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2103 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2104 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2105 NAME="AEN684"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2106 >4.3. Linking Scripts</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2107 ></H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2108 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2109 >A linker script is used to instruct the linker about how to assemble the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2110 various sections into a completed binary. It consists of a series of
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2111 directives which are considered in the order they are encountered.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2112 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2113 >The sections will appear in the resulting binary in the order they are
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2114 specified in the script file. If a referenced section is not found, the linker will behave as though the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2115 section did exist but had a zero size, no relocations, and no exports.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2116 A section should only be referenced once. Any subsequent references will have
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2117 an undefined effect.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2118 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2119 >All numbers are in linking scripts are specified in hexadecimal. All directives
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2120 are case sensitive although the hexadecimal numbers are not.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2121 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2122 >A section name can be specified as a "*", then any section not
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2123 already matched by the script will be matched. The "*" can be followed
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2124 by a comma and a flag to narrow the section down slightly, also.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2125 If the flag is "!bss", then any section that is not flagged as a bss section
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2126 will be matched. If the flag is "bss", then any section that is flagged as
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2127 bss will be matched.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2128 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2129 >The following directives are understood in a linker script.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2130 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2131 ></P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2132 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2133 CLASS="VARIABLELIST"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2134 ><DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2135 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2136 >section <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2137 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2138 >name</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2139 > load <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2140 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2141 >addr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2142 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2143 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2144 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2145 >&#13;This causes the section <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2146 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2147 >name</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2148 > to load at
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2149 <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2150 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2151 >addr</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2152 >. For the raw target, only one "load at" entry is
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2153 allowed for non-bss sections and it must be the first one. For raw targets,
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2154 it affects the addresses the linker assigns to symbols but has no other
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2155 affect on the output. bss sections may all have separate load addresses but
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2156 since they will not appear in the binary anyway, this is okay.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2157 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2158 >For the decb target, each "load" entry will cause a new "block" to be
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2159 output to the binary which will contain the load address. It is legal for
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2160 sections to overlap in this manner - the linker assumes the loader will sort
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2161 everything out.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2162 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2163 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2164 >section <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2165 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2166 >name</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2167 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2168 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2169 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2170 >&#13;This will cause the section <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2171 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2172 >name</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2173 > to load after the previously listed
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2174 section.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2175 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2176 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2177 >exec <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2178 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2179 >addr or sym</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2180 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2181 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2182 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2183 >This will cause the execution address (entry point) to be the address
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2184 specified (in hex) or the specified symbol name. The symbol name must
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2185 match a symbol that is exported by one of the object files being linked.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2186 This has no effect for targets that do not encode the entry point into the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2187 resulting file. If not specified, the entry point is assumed to be address 0
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2188 which is probably not what you want. The default link scripts for targets
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2189 that support this directive automatically starts at the beginning of the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2190 first section (usually "init" or "code") that is emitted in the binary.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2191 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2192 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2193 >pad <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2194 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2195 >size</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2196 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2197 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2198 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2199 >This will cause the output file to be padded with NUL bytes to be exactly
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2200 <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2201 CLASS="PARAMETER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2202 >size</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2203 > bytes in length. This only makes sense for a raw target.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2204 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2205 ></DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2206 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2207 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2208 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2209 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2210 CLASS="CHAPTER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2211 ><HR><H1
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2212 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2213 NAME="AEN718"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2214 ></A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2215 >Chapter 5. Libraries and LWAR</H1
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2216 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2217 >LWTOOLS also includes a tool for managing libraries. These are analogous to
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2218 the static libraries created with the "ar" tool on POSIX systems. Each library
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2219 file contains one or more object files. The linker will treat the object
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2220 files within a library as though they had been specified individually on
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2221 the command line except when resolving external references. External references
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2222 are looked up first within the object files within the library and then, if
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2223 not found, the usual lookup based on the order the files are specified on
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2224 the command line occurs.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2225 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2226 >The tool for creating these libary files is called LWAR.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2227 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2228 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2229 ><HR><H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2230 CLASS="SECTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2231 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2232 NAME="AEN722"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2233 >5.1. Command Line Options</A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2234 ></H2
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2235 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2236 >The binary for LWAR is called "lwar". Note that the binary is in lower
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2237 case. The options lwar understands are listed below. For archive manipulation
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2238 options, the first non-option argument is the name of the archive. All other
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2239 non-option arguments are the names of files to operate on.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2240 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2241 ></P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2242 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2243 CLASS="VARIABLELIST"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2244 ><DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2245 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2246 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2247 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2248 >--add</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2249 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2250 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2251 >-a</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2252 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2253 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2254 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2255 >This option specifies that an archive is going to have files added to it.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2256 If the archive does not already exist, it is created. New files are added
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2257 to the end of the archive.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2258 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2259 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2260 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2261 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2262 >--create</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2263 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2264 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2265 >-c</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2266 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2267 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2268 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2269 >This option specifies that an archive is going to be created and have files
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2270 added to it. If the archive already exists, it is truncated.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2271 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2272 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2273 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2274 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2275 >--merge</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2276 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2277 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2278 >-m</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2279 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2280 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2281 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2282 >If specified, any files specified to be added to an archive will be checked
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2283 to see if they are archives themselves. If so, their constituent members are
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2284 added to the archive. This is useful for avoiding archives containing archives.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2285 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2286 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2287 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2288 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2289 >--list</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2290 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2291 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2292 >-l</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2293 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2294 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2295 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2296 >This will display a list of the files contained in the archive.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2297 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2298 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2299 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2300 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2301 >--debug</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2302 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2303 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2304 >-d</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2305 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2306 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2307 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2308 >This option increases the debugging level. It is only useful for LWTOOLS
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2309 developers.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2310 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2311 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2312 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2313 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2314 >--help</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2315 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2316 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2317 >-?</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2318 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2319 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2320 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2321 >This provides a listing of command line options and a brief description
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2322 of each.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2323 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2324 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2325 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2326 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2327 >--usage</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2328 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2329 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2330 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2331 >This will display a usage summary.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2332 of each.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2333 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2334 ><DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2335 ><CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2336 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2337 >--version</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2338 >, <CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2339 CLASS="OPTION"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2340 >-V</CODE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2341 ></DT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2342 ><DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2343 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2344 >This will display the version of LWLINK.
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2345 of each.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2346 ></DD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2347 ></DL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2348 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2349 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2350 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2351 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2352 CLASS="CHAPTER"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2353 ><HR><H1
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2354 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2355 NAME="OBJCHAP"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2356 ></A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2357 >Chapter 6. Object Files</H1
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2358 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2359 >LWTOOLS uses a proprietary object file format. It is proprietary in the sense
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2360 that it is specific to LWTOOLS, not that it is a hidden format. It would be
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2361 hard to keep it hidden in an open source tool chain anyway. This chapter
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2362 documents the object file format.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2363 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2364 >An object file consists of a series of sections each of which contains a
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2365 list of exported symbols, a list of incomplete references, and a list of
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2366 "local" symbols which may be used in calculating incomplete references. Each
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2367 section will obviously also contain the object code.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2368 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2369 >Exported symbols must be completely resolved to an address within the
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2370 section it is exported from. That is, an exported symbol must be a constant
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2371 rather than defined in terms of other symbols.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2372 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2373 >Each object file starts with a magic number and version number. The magic
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2374 number is the string "LWOBJ16" for this 16 bit object file format. The only
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2375 defined version number is currently 0. Thus, the first 8 bytes of the object
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2376 file are <FONT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2377 COLOR="RED"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2378 >4C574F424A313600</FONT
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2379 ></P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2380 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2381 >Each section has the following items in order:</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2382 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2383 ></P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2384 ><UL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2385 ><LI
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2386 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2387 >section name</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2388 ></LI
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2389 ><LI
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2390 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2391 >flags</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2392 ></LI
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2393 ><LI
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2394 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2395 >list of local symbols (and addresses within the section)</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2396 ></LI
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2397 ><LI
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2398 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2399 >list of exported symbols (and addresses within the section)</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2400 ></LI
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2401 ><LI
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2402 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2403 >list of incomplete references along with the expressions to calculate them</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2404 ></LI
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2405 ><LI
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2406 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2407 >the actual object code (for non-BSS sections)</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2408 ></LI
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2409 ></UL
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2410 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2411 >The section starts with the name of the section with a NUL termination
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2412 followed by a series of flag bytes terminated by NUL. There are only two
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2413 flag bytes defined. A NUL (0) indicates no more flags and a value of 1
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2414 indicates the section is a BSS section. For a BSS section, no actual
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2415 code is included in the object file.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2416 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2417 >Either a NULL section name or end of file indicate the presence of no more
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2418 sections.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2419 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2420 >Each entry in the exported and local symbols table consists of the symbol
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2421 (NUL terminated) followed by two bytes which contain the value in big endian
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2422 order. The end of a symbol table is indicated by a NULL symbol name.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2423 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2424 >Each entry in the incomplete references table consists of an expression
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2425 followed by a 16 bit offset where the reference goes. Expressions are
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2426 defined as a series of terms up to an "end of expression" term. Each term
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2427 consists of a single byte which identifies the type of term (see below)
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2428 followed by any data required by the term. Then end of the list is flagged
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2429 by a NULL expression (only an end of expression term).</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2430 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2431 CLASS="TABLE"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2432 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2433 NAME="AEN805"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2434 ></A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2435 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2436 ><B
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2437 >Table 6-1. Object File Term Types</B
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2438 ></P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2439 ><TABLE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2440 BORDER="1"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2441 FRAME="border"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2442 CLASS="CALSTABLE"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2443 ><COL><COL><THEAD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2444 ><TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2445 ><TH
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2446 >TERMTYPE</TH
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2447 ><TH
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2448 >Meaning</TH
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2449 ></TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2450 ></THEAD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2451 ><TBODY
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2452 ><TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2453 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2454 >00</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2455 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2456 >end of expression</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2457 ></TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2458 ><TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2459 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2460 >01</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2461 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2462 >integer (16 bit in big endian order follows)</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2463 ></TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2464 ><TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2465 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2466 >02</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2467 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2468 > external symbol reference (NUL terminated symbol name follows)</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2469 ></TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2470 ><TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2471 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2472 >03</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2473 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2474 >local symbol reference (NUL terminated symbol name follows)</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2475 ></TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2476 ><TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2477 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2478 >04</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2479 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2480 >operator (1 byte operator number)</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2481 ></TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2482 ><TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2483 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2484 >05</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2485 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2486 >section base address reference</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2487 ></TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2488 ><TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2489 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2490 >FF</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2491 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2492 >This term will set flags for the expression. Each one of these terms will set a single flag. All of them should be specified first in an expression. If they are not, the behaviour is undefined. The byte following is the flag. There is currently only one flag defined. Flag 01 indicates an 8 bit relocation.</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2493 ></TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2494 ></TBODY
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2495 ></TABLE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2496 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2497 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2498 >External references are resolved using other object files while local
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2499 references are resolved using the local symbol table(s) from this file. This
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2500 allows local symbols that are not exported to have the same names as
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2501 exported symbols or external references.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2502 ><DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2503 CLASS="TABLE"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2504 ><A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2505 NAME="AEN835"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2506 ></A
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2507 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2508 ><B
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2509 >Table 6-2. Object File Operator Numbers</B
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2510 ></P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2511 ><TABLE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2512 BORDER="1"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2513 FRAME="border"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2514 CLASS="CALSTABLE"
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2515 ><COL><COL><THEAD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2516 ><TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2517 ><TH
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2518 >Number</TH
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2519 ><TH
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2520 >Operator</TH
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2521 ></TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2522 ></THEAD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2523 ><TBODY
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2524 ><TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2525 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2526 >01</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2527 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2528 >addition (+)</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2529 ></TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2530 ><TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2531 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2532 >02</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2533 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2534 >subtraction (-)</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2535 ></TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2536 ><TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2537 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2538 >03</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2539 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2540 >multiplication (*)</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2541 ></TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2542 ><TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2543 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2544 >04</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2545 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2546 >division (/)</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2547 ></TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2548 ><TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2549 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2550 >05</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2551 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2552 >modulus (%)</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2553 ></TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2554 ><TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2555 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2556 >06</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2557 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2558 >integer division (\) (same as division)</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2559 ></TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2560 ><TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2561 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2562 >07</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2563 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2564 >bitwise and</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2565 ></TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2566 ><TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2567 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2568 >08</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2569 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2570 >bitwise or</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2571 ></TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2572 ><TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2573 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2574 >09</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2575 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2576 >bitwise xor</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2577 ></TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2578 ><TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2579 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2580 >0A</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2581 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2582 >boolean and</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2583 ></TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2584 ><TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2585 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2586 >0B</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2587 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2588 >boolean or</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2589 ></TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2590 ><TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2591 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2592 >0C</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2593 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2594 >unary negation, 2's complement (-)</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2595 ></TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2596 ><TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2597 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2598 >0D</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2599 ><TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2600 >unary 1's complement (^)</TD
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2601 ></TR
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2602 ></TBODY
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2603 ></TABLE
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2604 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2605 ><P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2606 >An expression is represented in a postfix manner with both operands for
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2607 binary operators preceding the operator and the single operand for unary
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2608 operators preceding the operator.</P
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2609 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2610 ></DIV
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2611 ></BODY
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2612 ></HTML
d5392bb5da3c Added generated files
lost
parents:
diff changeset
2613 >