~ubuntu-branches/ubuntu/utopic/binutils-arm64-cross/utopic

« back to all changes in this revision

Viewing changes to binutils-2.23.52.20130611/gas/doc/c-sh.texi

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2013-06-20 17:38:09 UTC
  • Revision ID: package-import@ubuntu.com-20130620173809-app8lzgvymy5fg6c
Tags: 0.7
Build-depend on binutils-source (>= 2.23.52.20130620-1~).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
@c Copyright 1991, 1992, 1993, 1994, 1995, 1997, 2001, 2003, 2004,
 
2
@c 2005, 2008, 2010, 2011, 2012  Free Software Foundation, Inc.
 
3
@c This is part of the GAS manual.
 
4
@c For copying conditions, see the file as.texinfo.
 
5
@page
 
6
@node SH-Dependent
 
7
@chapter Renesas / SuperH SH Dependent Features
 
8
 
 
9
@cindex SH support
 
10
@menu
 
11
* SH Options::              Options
 
12
* SH Syntax::               Syntax
 
13
* SH Floating Point::       Floating Point
 
14
* SH Directives::           SH Machine Directives
 
15
* SH Opcodes::              Opcodes
 
16
@end menu
 
17
 
 
18
@node SH Options
 
19
@section Options
 
20
 
 
21
@cindex SH options
 
22
@cindex options, SH
 
23
@code{@value{AS}} has following command-line options for the Renesas
 
24
(formerly Hitachi) / SuperH SH family.
 
25
 
 
26
@table @code
 
27
@kindex --little
 
28
@kindex --big
 
29
@kindex --relax
 
30
@kindex --small
 
31
@kindex --dsp
 
32
@kindex --renesas
 
33
@kindex --allow-reg-prefix
 
34
 
 
35
@item --little
 
36
Generate little endian code.
 
37
 
 
38
@item --big
 
39
Generate big endian code.
 
40
 
 
41
@item --relax
 
42
Alter jump instructions for long displacements.
 
43
 
 
44
@item --small
 
45
Align sections to 4 byte boundaries, not 16.
 
46
 
 
47
@item --dsp
 
48
Enable sh-dsp insns, and disable sh3e / sh4 insns.
 
49
 
 
50
@item --renesas
 
51
Disable optimization with section symbol for compatibility with
 
52
Renesas assembler.
 
53
 
 
54
@item --allow-reg-prefix
 
55
Allow '$' as a register name prefix.
 
56
 
 
57
@kindex --fdpic
 
58
@item --fdpic
 
59
Generate an FDPIC object file.
 
60
 
 
61
@item --isa=sh4 | sh4a
 
62
Specify the sh4 or sh4a instruction set.
 
63
@item --isa=dsp
 
64
Enable sh-dsp insns, and disable sh3e / sh4 insns.
 
65
@item --isa=fp
 
66
Enable sh2e, sh3e, sh4, and sh4a insn sets.
 
67
@item --isa=all
 
68
Enable sh1, sh2, sh2e, sh3, sh3e, sh4, sh4a, and sh-dsp insn sets.
 
69
 
 
70
@item -h-tick-hex
 
71
Support H'00 style hex constants in addition to 0x00 style.
 
72
 
 
73
@end table
 
74
 
 
75
@node SH Syntax
 
76
@section Syntax
 
77
 
 
78
@menu
 
79
* SH-Chars::                Special Characters
 
80
* SH-Regs::                 Register Names
 
81
* SH-Addressing::           Addressing Modes
 
82
@end menu
 
83
 
 
84
@node SH-Chars
 
85
@subsection Special Characters
 
86
 
 
87
@cindex line comment character, SH
 
88
@cindex SH line comment character
 
89
@samp{!} is the line comment character.
 
90
 
 
91
@cindex line separator, SH
 
92
@cindex statement separator, SH
 
93
@cindex SH line separator
 
94
You can use @samp{;} instead of a newline to separate statements.
 
95
 
 
96
If a @samp{#} appears as the first character of a line then the whole
 
97
line is treated as a comment, but in this case the line could also be
 
98
a logical line number directive (@pxref{Comments}) or a preprocessor
 
99
control command (@pxref{Preprocessing}).
 
100
 
 
101
@cindex symbol names, @samp{$} in
 
102
@cindex @code{$} in symbol names
 
103
Since @samp{$} has no special meaning, you may use it in symbol names.
 
104
 
 
105
@node SH-Regs
 
106
@subsection Register Names
 
107
 
 
108
@cindex SH registers
 
109
@cindex registers, SH
 
110
You can use the predefined symbols @samp{r0}, @samp{r1}, @samp{r2},
 
111
@samp{r3}, @samp{r4}, @samp{r5}, @samp{r6}, @samp{r7}, @samp{r8},
 
112
@samp{r9}, @samp{r10}, @samp{r11}, @samp{r12}, @samp{r13}, @samp{r14},
 
113
and @samp{r15} to refer to the SH registers.
 
114
 
 
115
The SH also has these control registers:
 
116
 
 
117
@table @code
 
118
@item pr
 
119
procedure register (holds return address)
 
120
 
 
121
@item pc
 
122
program counter
 
123
 
 
124
@item mach
 
125
@itemx macl
 
126
high and low multiply accumulator registers
 
127
 
 
128
@item sr
 
129
status register
 
130
 
 
131
@item gbr
 
132
global base register
 
133
 
 
134
@item vbr
 
135
vector base register (for interrupt vectors)
 
136
@end table
 
137
 
 
138
@node SH-Addressing
 
139
@subsection Addressing Modes
 
140
 
 
141
@cindex addressing modes, SH
 
142
@cindex SH addressing modes
 
143
@code{@value{AS}} understands the following addressing modes for the SH.
 
144
@code{R@var{n}} in the following refers to any of the numbered
 
145
registers, but @emph{not} the control registers.
 
146
 
 
147
@table @code
 
148
@item R@var{n}
 
149
Register direct
 
150
 
 
151
@item @@R@var{n}
 
152
Register indirect
 
153
 
 
154
@item @@-R@var{n}
 
155
Register indirect with pre-decrement
 
156
 
 
157
@item @@R@var{n}+
 
158
Register indirect with post-increment
 
159
 
 
160
@item @@(@var{disp}, R@var{n})
 
161
Register indirect with displacement
 
162
 
 
163
@item @@(R0, R@var{n})
 
164
Register indexed
 
165
 
 
166
@item @@(@var{disp}, GBR)
 
167
@code{GBR} offset
 
168
 
 
169
@item @@(R0, GBR)
 
170
GBR indexed
 
171
 
 
172
@item @var{addr}
 
173
@itemx @@(@var{disp}, PC)
 
174
PC relative address (for branch or for addressing memory).  The
 
175
@code{@value{AS}} implementation allows you to use the simpler form
 
176
@var{addr} anywhere a PC relative address is called for; the alternate
 
177
form is supported for compatibility with other assemblers.
 
178
 
 
179
@item #@var{imm}
 
180
Immediate data
 
181
@end table
 
182
 
 
183
@node SH Floating Point
 
184
@section Floating Point
 
185
 
 
186
@cindex floating point, SH (@sc{ieee})
 
187
@cindex SH floating point (@sc{ieee})
 
188
SH2E, SH3E and SH4 groups have on-chip floating-point unit (FPU). Other
 
189
SH groups can use @code{.float} directive to generate @sc{ieee}
 
190
floating-point numbers.
 
191
 
 
192
SH2E and SH3E support single-precision floating point calculations as
 
193
well as entirely PCAPI compatible emulation of double-precision
 
194
floating point calculations. SH2E and SH3E instructions are a subset of
 
195
the floating point calculations conforming to the IEEE754 standard.
 
196
 
 
197
In addition to single-precision and double-precision floating-point
 
198
operation capability, the on-chip FPU of SH4 has a 128-bit graphic
 
199
engine that enables 32-bit floating-point data to be processed 128
 
200
bits at a time. It also supports 4 * 4 array operations and inner
 
201
product operations. Also, a superscalar architecture is employed that
 
202
enables simultaneous execution of two instructions (including FPU
 
203
instructions), providing performance of up to twice that of
 
204
conventional architectures at the same frequency.
 
205
 
 
206
@node SH Directives
 
207
@section SH Machine Directives
 
208
 
 
209
@cindex SH machine directives
 
210
@cindex machine directives, SH
 
211
@cindex @code{uaword} directive, SH
 
212
@cindex @code{ualong} directive, SH
 
213
@cindex @code{uaquad} directive, SH
 
214
 
 
215
@table @code
 
216
@item uaword
 
217
@itemx ualong
 
218
@itemx uaquad
 
219
@code{@value{AS}} will issue a warning when a misaligned @code{.word},
 
220
@code{.long}, or @code{.quad} directive is used.  You may use
 
221
@code{.uaword}, @code{.ualong}, or @code{.uaquad} to indicate that the
 
222
value is intentionally misaligned.
 
223
@end table
 
224
 
 
225
@node SH Opcodes
 
226
@section Opcodes
 
227
 
 
228
@cindex SH opcode summary
 
229
@cindex opcode summary, SH
 
230
@cindex mnemonics, SH
 
231
@cindex instruction summary, SH
 
232
For detailed information on the SH machine instruction set, see
 
233
@cite{SH-Microcomputer User's Manual} (Renesas) or
 
234
@cite{SH-4 32-bit CPU Core Architecture} (SuperH) and
 
235
@cite{SuperH (SH) 64-Bit RISC Series} (SuperH).
 
236
 
 
237
@code{@value{AS}} implements all the standard SH opcodes.  No additional
 
238
pseudo-instructions are needed on this family.  Note, however, that
 
239
because @code{@value{AS}} supports a simpler form of PC-relative
 
240
addressing, you may simply write (for example)
 
241
 
 
242
@example
 
243
mov.l  bar,r0
 
244
@end example
 
245
 
 
246
@noindent
 
247
where other assemblers might require an explicit displacement to
 
248
@code{bar} from the program counter:
 
249
 
 
250
@example
 
251
mov.l  @@(@var{disp}, PC)
 
252
@end example
 
253
 
 
254
@ifset SMALL
 
255
@c this table, due to the multi-col faking and hardcoded order, looks silly
 
256
@c except in smallbook.  See comments below "@set SMALL" near top of this file.
 
257
 
 
258
Here is a summary of SH opcodes:
 
259
 
 
260
@page
 
261
@smallexample
 
262
@i{Legend:}
 
263
Rn        @r{a numbered register}
 
264
Rm        @r{another numbered register}
 
265
#imm      @r{immediate data}
 
266
disp      @r{displacement}
 
267
disp8     @r{8-bit displacement}
 
268
disp12    @r{12-bit displacement}
 
269
 
 
270
add #imm,Rn                    lds.l @@Rn+,PR
 
271
add Rm,Rn                      mac.w @@Rm+,@@Rn+
 
272
addc Rm,Rn                     mov #imm,Rn
 
273
addv Rm,Rn                     mov Rm,Rn
 
274
and #imm,R0                    mov.b Rm,@@(R0,Rn)
 
275
and Rm,Rn                      mov.b Rm,@@-Rn
 
276
and.b #imm,@@(R0,GBR)           mov.b Rm,@@Rn
 
277
bf disp8                       mov.b @@(disp,Rm),R0
 
278
bra disp12                     mov.b @@(disp,GBR),R0
 
279
bsr disp12                     mov.b @@(R0,Rm),Rn
 
280
bt disp8                       mov.b @@Rm+,Rn
 
281
clrmac                         mov.b @@Rm,Rn
 
282
clrt                           mov.b R0,@@(disp,Rm)
 
283
cmp/eq #imm,R0                 mov.b R0,@@(disp,GBR)
 
284
cmp/eq Rm,Rn                   mov.l Rm,@@(disp,Rn)
 
285
cmp/ge Rm,Rn                   mov.l Rm,@@(R0,Rn)
 
286
cmp/gt Rm,Rn                   mov.l Rm,@@-Rn
 
287
cmp/hi Rm,Rn                   mov.l Rm,@@Rn
 
288
cmp/hs Rm,Rn                   mov.l @@(disp,Rn),Rm
 
289
cmp/pl Rn                      mov.l @@(disp,GBR),R0
 
290
cmp/pz Rn                      mov.l @@(disp,PC),Rn
 
291
cmp/str Rm,Rn                  mov.l @@(R0,Rm),Rn
 
292
div0s Rm,Rn                    mov.l @@Rm+,Rn
 
293
div0u                          mov.l @@Rm,Rn
 
294
div1 Rm,Rn                     mov.l R0,@@(disp,GBR)
 
295
exts.b Rm,Rn                   mov.w Rm,@@(R0,Rn)
 
296
exts.w Rm,Rn                   mov.w Rm,@@-Rn
 
297
extu.b Rm,Rn                   mov.w Rm,@@Rn
 
298
extu.w Rm,Rn                   mov.w @@(disp,Rm),R0
 
299
jmp @@Rn                        mov.w @@(disp,GBR),R0
 
300
jsr @@Rn                        mov.w @@(disp,PC),Rn
 
301
ldc Rn,GBR                     mov.w @@(R0,Rm),Rn
 
302
ldc Rn,SR                      mov.w @@Rm+,Rn
 
303
ldc Rn,VBR                     mov.w @@Rm,Rn
 
304
ldc.l @@Rn+,GBR                 mov.w R0,@@(disp,Rm)
 
305
ldc.l @@Rn+,SR                  mov.w R0,@@(disp,GBR)
 
306
ldc.l @@Rn+,VBR                 mova @@(disp,PC),R0
 
307
lds Rn,MACH                    movt Rn
 
308
lds Rn,MACL                    muls Rm,Rn
 
309
lds Rn,PR                      mulu Rm,Rn
 
310
lds.l @@Rn+,MACH                neg Rm,Rn
 
311
lds.l @@Rn+,MACL                negc Rm,Rn
 
312
@page
 
313
nop                            stc VBR,Rn
 
314
not Rm,Rn                      stc.l GBR,@@-Rn
 
315
or #imm,R0                     stc.l SR,@@-Rn
 
316
or Rm,Rn                       stc.l VBR,@@-Rn
 
317
or.b #imm,@@(R0,GBR)            sts MACH,Rn
 
318
rotcl Rn                       sts MACL,Rn
 
319
rotcr Rn                       sts PR,Rn
 
320
rotl Rn                        sts.l MACH,@@-Rn
 
321
rotr Rn                        sts.l MACL,@@-Rn
 
322
rte                            sts.l PR,@@-Rn
 
323
rts                            sub Rm,Rn
 
324
sett                           subc Rm,Rn
 
325
shal Rn                        subv Rm,Rn
 
326
shar Rn                        swap.b Rm,Rn
 
327
shll Rn                        swap.w Rm,Rn
 
328
shll16 Rn                      tas.b @@Rn
 
329
shll2 Rn                       trapa #imm
 
330
shll8 Rn                       tst #imm,R0
 
331
shlr Rn                        tst Rm,Rn
 
332
shlr16 Rn                      tst.b #imm,@@(R0,GBR)
 
333
shlr2 Rn                       xor #imm,R0
 
334
shlr8 Rn                       xor Rm,Rn
 
335
sleep                          xor.b #imm,@@(R0,GBR)
 
336
stc GBR,Rn                     xtrct Rm,Rn
 
337
stc SR,Rn
 
338
@end smallexample
 
339
@end ifset
 
340
 
 
341
@ifset Renesas-all
 
342
@ifclear GENERIC
 
343
@raisesections
 
344
@end ifclear
 
345
@end ifset
 
346