1 | @c Copyright 1991, 1992, 1993, 1994, 1995, 1997, 1999
|
---|
2 | @c Free Software Foundation, Inc.
|
---|
3 | @c This is part of the GAS manual.
|
---|
4 | @c For copying conditions, see the file as.texinfo.
|
---|
5 | @ifset GENERIC
|
---|
6 | @page
|
---|
7 | @node Sparc-Dependent
|
---|
8 | @chapter SPARC Dependent Features
|
---|
9 | @end ifset
|
---|
10 | @ifclear GENERIC
|
---|
11 | @node Machine Dependencies
|
---|
12 | @chapter SPARC Dependent Features
|
---|
13 | @end ifclear
|
---|
14 |
|
---|
15 | @cindex SPARC support
|
---|
16 | @menu
|
---|
17 | * Sparc-Opts:: Options
|
---|
18 | * Sparc-Aligned-Data:: Option to enforce aligned data
|
---|
19 | * Sparc-Float:: Floating Point
|
---|
20 | * Sparc-Directives:: Sparc Machine Directives
|
---|
21 | @end menu
|
---|
22 |
|
---|
23 | @node Sparc-Opts
|
---|
24 | @section Options
|
---|
25 |
|
---|
26 | @cindex options for SPARC
|
---|
27 | @cindex SPARC options
|
---|
28 | @cindex architectures, SPARC
|
---|
29 | @cindex SPARC architectures
|
---|
30 | The SPARC chip family includes several successive levels, using the same
|
---|
31 | core instruction set, but including a few additional instructions at
|
---|
32 | each level. There are exceptions to this however. For details on what
|
---|
33 | instructions each variant supports, please see the chip's architecture
|
---|
34 | reference manual.
|
---|
35 |
|
---|
36 | By default, @code{@value{AS}} assumes the core instruction set (SPARC
|
---|
37 | v6), but ``bumps'' the architecture level as needed: it switches to
|
---|
38 | successively higher architectures as it encounters instructions that
|
---|
39 | only exist in the higher levels.
|
---|
40 |
|
---|
41 | If not configured for SPARC v9 (@code{sparc64-*-*}) GAS will not bump
|
---|
42 | passed sparclite by default, an option must be passed to enable the
|
---|
43 | v9 instructions.
|
---|
44 |
|
---|
45 | GAS treats sparclite as being compatible with v8, unless an architecture
|
---|
46 | is explicitly requested. SPARC v9 is always incompatible with sparclite.
|
---|
47 |
|
---|
48 | @c The order here is the same as the order of enum sparc_opcode_arch_val
|
---|
49 | @c to give the user a sense of the order of the "bumping".
|
---|
50 |
|
---|
51 | @table @code
|
---|
52 | @kindex -Av6
|
---|
53 | @kindex Av7
|
---|
54 | @kindex -Av8
|
---|
55 | @kindex -Asparclet
|
---|
56 | @kindex -Asparclite
|
---|
57 | @kindex -Av9
|
---|
58 | @kindex -Av9a
|
---|
59 | @item -Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite
|
---|
60 | @itemx -Av8plus | -Av8plusa | -Av9 | -Av9a
|
---|
61 | Use one of the @samp{-A} options to select one of the SPARC
|
---|
62 | architectures explicitly. If you select an architecture explicitly,
|
---|
63 | @code{@value{AS}} reports a fatal error if it encounters an instruction
|
---|
64 | or feature requiring an incompatible or higher level.
|
---|
65 |
|
---|
66 | @samp{-Av8plus} and @samp{-Av8plusa} select a 32 bit environment.
|
---|
67 |
|
---|
68 | @samp{-Av9} and @samp{-Av9a} select a 64 bit environment and are not
|
---|
69 | available unless GAS is explicitly configured with 64 bit environment
|
---|
70 | support.
|
---|
71 |
|
---|
72 | @samp{-Av8plusa} and @samp{-Av9a} enable the SPARC V9 instruction set with
|
---|
73 | UltraSPARC extensions.
|
---|
74 |
|
---|
75 | @item -xarch=v8plus | -xarch=v8plusa
|
---|
76 | For compatibility with the Solaris v9 assembler. These options are
|
---|
77 | equivalent to -Av8plus and -Av8plusa, respectively.
|
---|
78 |
|
---|
79 | @item -bump
|
---|
80 | Warn whenever it is necessary to switch to another level.
|
---|
81 | If an architecture level is explicitly requested, GAS will not issue
|
---|
82 | warnings until that level is reached, and will then bump the level
|
---|
83 | as required (except between incompatible levels).
|
---|
84 |
|
---|
85 | @item -32 | -64
|
---|
86 | Select the word size, either 32 bits or 64 bits.
|
---|
87 | These options are only available with the ELF object file format,
|
---|
88 | and require that the necessary BFD support has been included.
|
---|
89 | @end table
|
---|
90 |
|
---|
91 | @node Sparc-Aligned-Data
|
---|
92 | @section Enforcing aligned data
|
---|
93 |
|
---|
94 | @cindex data alignment on SPARC
|
---|
95 | @cindex SPARC data alignment
|
---|
96 | SPARC GAS normally permits data to be misaligned. For example, it
|
---|
97 | permits the @code{.long} pseudo-op to be used on a byte boundary.
|
---|
98 | However, the native SunOS and Solaris assemblers issue an error when
|
---|
99 | they see misaligned data.
|
---|
100 |
|
---|
101 | @kindex --enforce-aligned-data
|
---|
102 | You can use the @code{--enforce-aligned-data} option to make SPARC GAS
|
---|
103 | also issue an error about misaligned data, just as the SunOS and Solaris
|
---|
104 | assemblers do.
|
---|
105 |
|
---|
106 | The @code{--enforce-aligned-data} option is not the default because gcc
|
---|
107 | issues misaligned data pseudo-ops when it initializes certain packed
|
---|
108 | data structures (structures defined using the @code{packed} attribute).
|
---|
109 | You may have to assemble with GAS in order to initialize packed data
|
---|
110 | structures in your own code.
|
---|
111 |
|
---|
112 | @ignore
|
---|
113 | @c FIXME: (sparc) Fill in "syntax" section!
|
---|
114 | @c subsection syntax
|
---|
115 | I don't know anything about Sparc syntax. Someone who does
|
---|
116 | will have to write this section.
|
---|
117 | @end ignore
|
---|
118 |
|
---|
119 | @node Sparc-Float
|
---|
120 | @section Floating Point
|
---|
121 |
|
---|
122 | @cindex floating point, SPARC (@sc{ieee})
|
---|
123 | @cindex SPARC floating point (@sc{ieee})
|
---|
124 | The Sparc uses @sc{ieee} floating-point numbers.
|
---|
125 |
|
---|
126 | @node Sparc-Directives
|
---|
127 | @section Sparc Machine Directives
|
---|
128 |
|
---|
129 | @cindex SPARC machine directives
|
---|
130 | @cindex machine directives, SPARC
|
---|
131 | The Sparc version of @code{@value{AS}} supports the following additional
|
---|
132 | machine directives:
|
---|
133 |
|
---|
134 | @table @code
|
---|
135 | @cindex @code{align} directive, SPARC
|
---|
136 | @item .align
|
---|
137 | This must be followed by the desired alignment in bytes.
|
---|
138 |
|
---|
139 | @cindex @code{common} directive, SPARC
|
---|
140 | @item .common
|
---|
141 | This must be followed by a symbol name, a positive number, and
|
---|
142 | @code{"bss"}. This behaves somewhat like @code{.comm}, but the
|
---|
143 | syntax is different.
|
---|
144 |
|
---|
145 | @cindex @code{half} directive, SPARC
|
---|
146 | @item .half
|
---|
147 | This is functionally identical to @code{.short}.
|
---|
148 |
|
---|
149 | @cindex @code{nword} directive, SPARC
|
---|
150 | @item .nword
|
---|
151 | On the Sparc, the @code{.nword} directive produces native word sized value,
|
---|
152 | ie. if assembling with -32 it is equivalent to @code{.word}, if assembling
|
---|
153 | with -64 it is equivalent to @code{.xword}.
|
---|
154 |
|
---|
155 | @cindex @code{proc} directive, SPARC
|
---|
156 | @item .proc
|
---|
157 | This directive is ignored. Any text following it on the same
|
---|
158 | line is also ignored.
|
---|
159 |
|
---|
160 | @cindex @code{register} directive, SPARC
|
---|
161 | @item .register
|
---|
162 | This directive declares use of a global application or system register.
|
---|
163 | It must be followed by a register name %g2, %g3, %g6 or %g7, comma and
|
---|
164 | the symbol name for that register. If symbol name is @code{#scratch},
|
---|
165 | it is a scratch register, if it is @code{#ignore}, it just suppresses any
|
---|
166 | errors about using undeclared global register, but does not emit any
|
---|
167 | information about it into the object file. This can be useful e.g. if you
|
---|
168 | save the register before use and restore it after.
|
---|
169 |
|
---|
170 | @cindex @code{reserve} directive, SPARC
|
---|
171 | @item .reserve
|
---|
172 | This must be followed by a symbol name, a positive number, and
|
---|
173 | @code{"bss"}. This behaves somewhat like @code{.lcomm}, but the
|
---|
174 | syntax is different.
|
---|
175 |
|
---|
176 | @cindex @code{seg} directive, SPARC
|
---|
177 | @item .seg
|
---|
178 | This must be followed by @code{"text"}, @code{"data"}, or
|
---|
179 | @code{"data1"}. It behaves like @code{.text}, @code{.data}, or
|
---|
180 | @code{.data 1}.
|
---|
181 |
|
---|
182 | @cindex @code{skip} directive, SPARC
|
---|
183 | @item .skip
|
---|
184 | This is functionally identical to the @code{.space} directive.
|
---|
185 |
|
---|
186 | @cindex @code{word} directive, SPARC
|
---|
187 | @item .word
|
---|
188 | On the Sparc, the @code{.word} directive produces 32 bit values,
|
---|
189 | instead of the 16 bit values it produces on many other machines.
|
---|
190 |
|
---|
191 | @cindex @code{xword} directive, SPARC
|
---|
192 | @item .xword
|
---|
193 | On the Sparc V9 processor, the @code{.xword} directive produces
|
---|
194 | 64 bit values.
|
---|
195 | @end table
|
---|