OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [binutils-2.20.1/] [gas/] [doc/] [c-sh.texi] - Blame information for rev 301

Go to most recent revision | Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.