Mercurial > hg > index.cgi
comparison docs/manual/x534.html @ 324:b30091890d62
Add documentation of the new hex output formats.
Thanks to text contributed by Tom LeMense, the manual now includes
documentation of the hex formats he contributed. This also includes some
updated text on the ORG directive. Only minor editorial changes vary the
text from Tom's original.
author | William Astle <lost@l-w.ca> |
---|---|
date | Tue, 04 Mar 2014 23:10:13 -0700 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
323:ba9a0434b115 | 324:b30091890d62 |
---|---|
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> | |
2 <HTML | |
3 ><HEAD | |
4 ><TITLE | |
5 >Structures</TITLE | |
6 ><META | |
7 NAME="GENERATOR" | |
8 CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK | |
9 REL="HOME" | |
10 TITLE="LW Tool Chain" | |
11 HREF="index.html"><LINK | |
12 REL="UP" | |
13 TITLE="LWASM" | |
14 HREF="c62.html"><LINK | |
15 REL="PREVIOUS" | |
16 TITLE="Macros" | |
17 HREF="x511.html"><LINK | |
18 REL="NEXT" | |
19 TITLE="Object Files and Sections" | |
20 HREF="x555.html"></HEAD | |
21 ><BODY | |
22 CLASS="SECTION" | |
23 BGCOLOR="#FFFFFF" | |
24 TEXT="#000000" | |
25 LINK="#0000FF" | |
26 VLINK="#840084" | |
27 ALINK="#0000FF" | |
28 ><DIV | |
29 CLASS="NAVHEADER" | |
30 ><TABLE | |
31 SUMMARY="Header navigation table" | |
32 WIDTH="100%" | |
33 BORDER="0" | |
34 CELLPADDING="0" | |
35 CELLSPACING="0" | |
36 ><TR | |
37 ><TH | |
38 COLSPAN="3" | |
39 ALIGN="center" | |
40 >LW Tool Chain</TH | |
41 ></TR | |
42 ><TR | |
43 ><TD | |
44 WIDTH="10%" | |
45 ALIGN="left" | |
46 VALIGN="bottom" | |
47 ><A | |
48 HREF="x511.html" | |
49 ACCESSKEY="P" | |
50 >Prev</A | |
51 ></TD | |
52 ><TD | |
53 WIDTH="80%" | |
54 ALIGN="center" | |
55 VALIGN="bottom" | |
56 >Chapter 3. LWASM</TD | |
57 ><TD | |
58 WIDTH="10%" | |
59 ALIGN="right" | |
60 VALIGN="bottom" | |
61 ><A | |
62 HREF="x555.html" | |
63 ACCESSKEY="N" | |
64 >Next</A | |
65 ></TD | |
66 ></TR | |
67 ></TABLE | |
68 ><HR | |
69 ALIGN="LEFT" | |
70 WIDTH="100%"></DIV | |
71 ><DIV | |
72 CLASS="SECTION" | |
73 ><H1 | |
74 CLASS="SECTION" | |
75 ><A | |
76 NAME="AEN534" | |
77 >3.8. Structures</A | |
78 ></H1 | |
79 ><P | |
80 > Structures are used to group related data in a fixed structure. A structure | |
81 consists a number of fields, defined in sequential order and which take up | |
82 specified size. The assembler does not enforce any means of access within a | |
83 structure; it assumes that whatever you are doing, you intended to do. | |
84 There are two pseudo ops that are used for defining structures. </P | |
85 ><P | |
86 ></P | |
87 ><DIV | |
88 CLASS="VARIABLELIST" | |
89 ><DL | |
90 ><DT | |
91 ><CODE | |
92 CLASS="PARAMETER" | |
93 >structname</CODE | |
94 > STRUCT</DT | |
95 ><DD | |
96 ><P | |
97 > This directive is used to begin the definition of a structure with name | |
98 <CODE | |
99 CLASS="PARAMETER" | |
100 >structname</CODE | |
101 >. Subsequent statements all form part of | |
102 the structure definition until the end of the structure is declared. </P | |
103 ></DD | |
104 ><DT | |
105 >ENDSTRUCT, ENDS</DT | |
106 ><DD | |
107 ><P | |
108 >This directive ends the definition of the structure. ENDSTRUCT is the | |
109 preferred form. Prior to version 3.0 of LWASM, ENDS was used to end a | |
110 section instead of a structure.</P | |
111 ></DD | |
112 ></DL | |
113 ></DIV | |
114 ><P | |
115 > Within a structure definition, only reservation pseudo ops are permitted. | |
116 Anything else will cause an assembly error.</P | |
117 ><P | |
118 > Once a structure is defined, you can reserve an area of memory in the | |
119 same structure by using the structure name as the opcode. Structures can | |
120 also contain fields that are themselves structures. See the example | |
121 below.</P | |
122 ><PRE | |
123 CLASS="PROGRAMLISTING" | |
124 >tstruct2 STRUCT | |
125 f1 rmb 1 | |
126 f2 rmb 1 | |
127 ENDSTRUCT | |
128 | |
129 tstruct STRUCT | |
130 field1 rmb 2 | |
131 field2 rmb 3 | |
132 field3 tstruct2 | |
133 ENDSTRUCT | |
134 | |
135 ORG $2000 | |
136 var1 tstruct | |
137 var2 tstruct2</PRE | |
138 ><P | |
139 >Fields are referenced using a dot (.) as a separator. To refer to the | |
140 generic offset within a structure, use the structure name to the left of the | |
141 dot. If referring to a field within an actual variable, use the variable's | |
142 symbol name to the left of the dot.</P | |
143 ><P | |
144 >You can also refer to the actual size of a structure (or a variable | |
145 declared as a structure) using the special symbol sizeof{structname} where | |
146 structname will be the name of the structure or the name of the | |
147 variable.</P | |
148 ><P | |
149 >Essentially, structures are a shortcut for defining a vast number of | |
150 symbols. When a structure is defined, the assembler creates symbols for the | |
151 various fields in the form structname.fieldname as well as the appropriate | |
152 sizeof{structname} symbol. When a variable is declared as a structure, the | |
153 assembler does the same thing using the name of the variable. You will see | |
154 these symbols in the symbol table when the assembler is instructed to | |
155 provide a listing. For instance, the above listing will create the | |
156 following symbols (symbol values in parentheses): tstruct2.f1 (0), | |
157 tstruct2.f2 (1), sizeof{tstruct2} (2), tstruct.field1 (0), tstruct.field2 | |
158 (2), tstruct.field3 (5), tstruct.field3.f1 (5), tstruct.field3.f2 (6), | |
159 sizeof{tstruct.field3} (2), sizeof{tstruct} (7), var1 {$2000}, var1.field1 | |
160 {$2000}, var1.field2 {$2002}, var1.field3 {$2005}, var1.field3.f1 {$2005}, | |
161 var1.field3.f2 {$2006}, sizeof(var1.field3} (2), sizeof{var1} (7), var2 | |
162 ($2007), var2.f1 ($2007), var2.f2 ($2008), sizeof{var2} (2). </P | |
163 ></DIV | |
164 ><DIV | |
165 CLASS="NAVFOOTER" | |
166 ><HR | |
167 ALIGN="LEFT" | |
168 WIDTH="100%"><TABLE | |
169 SUMMARY="Footer navigation table" | |
170 WIDTH="100%" | |
171 BORDER="0" | |
172 CELLPADDING="0" | |
173 CELLSPACING="0" | |
174 ><TR | |
175 ><TD | |
176 WIDTH="33%" | |
177 ALIGN="left" | |
178 VALIGN="top" | |
179 ><A | |
180 HREF="x511.html" | |
181 ACCESSKEY="P" | |
182 >Prev</A | |
183 ></TD | |
184 ><TD | |
185 WIDTH="34%" | |
186 ALIGN="center" | |
187 VALIGN="top" | |
188 ><A | |
189 HREF="index.html" | |
190 ACCESSKEY="H" | |
191 >Home</A | |
192 ></TD | |
193 ><TD | |
194 WIDTH="33%" | |
195 ALIGN="right" | |
196 VALIGN="top" | |
197 ><A | |
198 HREF="x555.html" | |
199 ACCESSKEY="N" | |
200 >Next</A | |
201 ></TD | |
202 ></TR | |
203 ><TR | |
204 ><TD | |
205 WIDTH="33%" | |
206 ALIGN="left" | |
207 VALIGN="top" | |
208 >Macros</TD | |
209 ><TD | |
210 WIDTH="34%" | |
211 ALIGN="center" | |
212 VALIGN="top" | |
213 ><A | |
214 HREF="c62.html" | |
215 ACCESSKEY="U" | |
216 >Up</A | |
217 ></TD | |
218 ><TD | |
219 WIDTH="33%" | |
220 ALIGN="right" | |
221 VALIGN="top" | |
222 >Object Files and Sections</TD | |
223 ></TR | |
224 ></TABLE | |
225 ></DIV | |
226 ></BODY | |
227 ></HTML | |
228 > |