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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [binutils-2.20.1/] [gas/] [doc/] [c-z8k.texi] - Blame information for rev 818

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 205 julius
@c Copyright 1991, 1992, 1993, 1994, 1995, 2003
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 Z8000-Dependent
8
@chapter Z8000 Dependent Features
9
@end ifset
10
@ifclear GENERIC
11
@node Machine Dependencies
12
@chapter Z8000 Dependent Features
13
@end ifclear
14
 
15
@cindex Z8000 support
16
The Z8000 @value{AS} supports both members of the Z8000 family: the
17
unsegmented Z8002, with 16 bit addresses, and the segmented Z8001 with
18
24 bit addresses.
19
 
20
When the assembler is in unsegmented mode (specified with the
21
@code{unsegm} directive), an address takes up one word (16 bit)
22
sized register.  When the assembler is in segmented mode (specified with
23
the @code{segm} directive), a 24-bit address takes up a long (32 bit)
24
register.  @xref{Z8000 Directives,,Assembler Directives for the Z8000},
25
for a list of other Z8000 specific assembler directives.
26
 
27
@menu
28
* Z8000 Options::               Command-line options for the Z8000
29
* Z8000 Syntax::                Assembler syntax for the Z8000
30
* Z8000 Directives::            Special directives for the Z8000
31
* Z8000 Opcodes::               Opcodes
32
@end menu
33
 
34
@node Z8000 Options
35
@section Options
36
 
37
@cindex Z8000 options
38
@cindex options, Z8000
39
@table @option
40
@cindex @code{-z8001} command line option, Z8000
41
@item -z8001
42
Generate segmented code by default.
43
 
44
@cindex @code{-z8002} command line option, Z8000
45
@item -z8002
46
Generate unsegmented code by default.
47
@end table
48
 
49
@node Z8000 Syntax
50
@section Syntax
51
@menu
52
* Z8000-Chars::                Special Characters
53
* Z8000-Regs::                 Register Names
54
* Z8000-Addressing::           Addressing Modes
55
@end menu
56
 
57
@node Z8000-Chars
58
@subsection Special Characters
59
 
60
@cindex line comment character, Z8000
61
@cindex Z8000 line comment character
62
@samp{!} is the line comment character.
63
 
64
@cindex line separator, Z8000
65
@cindex statement separator, Z8000
66
@cindex Z8000 line separator
67
You can use @samp{;} instead of a newline to separate statements.
68
 
69
@node Z8000-Regs
70
@subsection Register Names
71
 
72
@cindex Z8000 registers
73
@cindex registers, Z8000
74
The Z8000 has sixteen 16 bit registers, numbered 0 to 15.  You can refer
75
to different sized groups of registers by register number, with the
76
prefix @samp{r} for 16 bit registers, @samp{rr} for 32 bit registers and
77
@samp{rq} for 64 bit registers.  You can also refer to the contents of
78
the first eight (of the sixteen 16 bit registers) by bytes.  They are
79
named @samp{rl@var{n}} and @samp{rh@var{n}}.
80
 
81
@smallexample
82
@exdent @emph{byte registers}
83
rl0 rh0 rl1 rh1 rl2 rh2 rl3 rh3
84
rl4 rh4 rl5 rh5 rl6 rh6 rl7 rh7
85
 
86
@exdent @emph{word registers}
87
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15
88
 
89
@exdent @emph{long word registers}
90
rr0 rr2 rr4 rr6 rr8 rr10 rr12 rr14
91
 
92
@exdent @emph{quad word registers}
93
rq0 rq4 rq8 rq12
94
@end smallexample
95
 
96
@node Z8000-Addressing
97
@subsection Addressing Modes
98
 
99
@cindex addressing modes, Z8000
100
@cindex Z800 addressing modes
101
@value{AS} understands the following addressing modes for the Z8000:
102
 
103
@table @code
104
@item rl@var{n}
105
@itemx rh@var{n}
106
@itemx r@var{n}
107
@itemx rr@var{n}
108
@itemx rq@var{n}
109
Register direct:  8bit, 16bit, 32bit, and 64bit registers.
110
 
111
@item @@r@var{n}
112
@itemx @@rr@var{n}
113
Indirect register:  @@rr@var{n} in segmented mode, @@r@var{n} in unsegmented
114
mode.
115
 
116
@item @var{addr}
117
Direct: the 16 bit or 24 bit address (depending on whether the assembler
118
is in segmented or unsegmented mode) of the operand is in the instruction.
119
 
120
@item address(r@var{n})
121
Indexed: the 16 or 24 bit address is added to the 16 bit register to produce
122
the final address in memory of the operand.
123
 
124
@item r@var{n}(#@var{imm})
125
@itemx rr@var{n}(#@var{imm})
126
Base Address: the 16 or 24 bit register is added to the 16 bit sign
127
extended immediate displacement to produce the final address in memory
128
of the operand.
129
 
130
@item r@var{n}(r@var{m})
131
@itemx rr@var{n}(r@var{m})
132
Base Index: the 16 or 24 bit register r@var{n} or rr@var{n} is added to
133
the sign extended 16 bit index register r@var{m} to produce the final
134
address in memory of the operand.
135
 
136
@item #@var{xx}
137
Immediate data @var{xx}.
138
@end table
139
 
140
@node Z8000 Directives
141
@section Assembler Directives for the Z8000
142
 
143
@cindex Z8000 directives
144
@cindex directives, Z8000
145
The Z8000 port of @value{AS} includes additional assembler directives,
146
for compatibility with other Z8000 assemblers.  These do not begin with
147
@samp{.} (unlike the ordinary @value{AS} directives).
148
 
149
@table @code
150
@kindex segm
151
@item segm
152
@kindex .z8001
153
@itemx .z8001
154
Generate code for the segmented Z8001.
155
 
156
@kindex unsegm
157
@item unsegm
158
@kindex .z8002
159
@itemx .z8002
160
Generate code for the unsegmented Z8002.
161
 
162
@kindex name
163
@item name
164
Synonym for @code{.file}
165
 
166
@kindex global
167
@item global
168
Synonym for @code{.global}
169
 
170
@kindex wval
171
@item wval
172
Synonym for @code{.word}
173
 
174
@kindex lval
175
@item lval
176
Synonym for @code{.long}
177
 
178
@kindex bval
179
@item bval
180
Synonym for @code{.byte}
181
 
182
@kindex sval
183
@item sval
184
Assemble a string.  @code{sval} expects one string literal, delimited by
185
single quotes.  It assembles each byte of the string into consecutive
186
addresses.  You can use the escape sequence @samp{%@var{xx}} (where
187
@var{xx} represents a two-digit hexadecimal number) to represent the
188
character whose @sc{ascii} value is @var{xx}.  Use this feature to
189
describe single quote and other characters that may not appear in string
190
literals as themselves.  For example, the C statement @w{@samp{char *a =
191
"he said \"it's 50% off\"";}} is represented in Z8000 assembly language
192
(shown with the assembler output in hex at the left) as
193
 
194
@iftex
195
@begingroup
196
@let@nonarrowing=@comment
197
@end iftex
198
@smallexample
199
68652073    sval    'he said %22it%27s 50%25 off%22%00'
200
61696420
201
22697427
202
73203530
203
25206F66
204
662200
205
@end smallexample
206
@iftex
207
@endgroup
208
@end iftex
209
 
210
@kindex rsect
211
@item rsect
212
synonym for @code{.section}
213
 
214
@kindex block
215
@item block
216
synonym for @code{.space}
217
 
218
@kindex even
219
@item even
220
special case of @code{.align}; aligns output to even byte boundary.
221
@end table
222
 
223
@node Z8000 Opcodes
224
@section Opcodes
225
 
226
@cindex Z8000 opcode summary
227
@cindex opcode summary, Z8000
228
@cindex mnemonics, Z8000
229
@cindex instruction summary, Z8000
230
For detailed information on the Z8000 machine instruction set, see
231
@cite{Z8000 Technical Manual}.
232
 
233
@ifset SMALL
234
@c this table, due to the multi-col faking and hardcoded order, looks silly
235
@c except in smallbook.  See comments below "@set SMALL" near top of this file.
236
 
237
The following table summarizes the opcodes and their arguments:
238
@iftex
239
@begingroup
240
@let@nonarrowing=@comment
241
@end iftex
242
@smallexample
243
 
244
            rs   @r{16 bit source register}
245
            rd   @r{16 bit destination register}
246
            rbs   @r{8 bit source register}
247
            rbd   @r{8 bit destination register}
248
            rrs   @r{32 bit source register}
249
            rrd   @r{32 bit destination register}
250
            rqs   @r{64 bit source register}
251
            rqd   @r{64 bit destination register}
252
            addr @r{16/24 bit address}
253
            imm  @r{immediate data}
254
 
255
adc rd,rs               clrb addr               cpsir @@rd,@@rs,rr,cc
256
adcb rbd,rbs            clrb addr(rd)           cpsirb @@rd,@@rs,rr,cc
257
add rd,@@rs              clrb rbd                dab rbd
258
add rd,addr             com @@rd                 dbjnz rbd,disp7
259
add rd,addr(rs)         com addr                dec @@rd,imm4m1
260
add rd,imm16            com addr(rd)            dec addr(rd),imm4m1
261
add rd,rs               com rd                  dec addr,imm4m1
262
addb rbd,@@rs            comb @@rd                dec rd,imm4m1
263
addb rbd,addr           comb addr               decb @@rd,imm4m1
264
addb rbd,addr(rs)       comb addr(rd)           decb addr(rd),imm4m1
265
addb rbd,imm8           comb rbd                decb addr,imm4m1
266
addb rbd,rbs            comflg flags            decb rbd,imm4m1
267
addl rrd,@@rs            cp @@rd,imm16            di i2
268
addl rrd,addr           cp addr(rd),imm16       div rrd,@@rs
269
addl rrd,addr(rs)       cp addr,imm16           div rrd,addr
270
addl rrd,imm32          cp rd,@@rs               div rrd,addr(rs)
271
addl rrd,rrs            cp rd,addr              div rrd,imm16
272
and rd,@@rs              cp rd,addr(rs)          div rrd,rs
273
and rd,addr             cp rd,imm16             divl rqd,@@rs
274
and rd,addr(rs)         cp rd,rs                divl rqd,addr
275
and rd,imm16            cpb @@rd,imm8            divl rqd,addr(rs)
276
and rd,rs               cpb addr(rd),imm8       divl rqd,imm32
277
andb rbd,@@rs            cpb addr,imm8           divl rqd,rrs
278
andb rbd,addr           cpb rbd,@@rs             djnz rd,disp7
279
andb rbd,addr(rs)       cpb rbd,addr            ei i2
280
andb rbd,imm8           cpb rbd,addr(rs)        ex rd,@@rs
281
andb rbd,rbs            cpb rbd,imm8            ex rd,addr
282
bit @@rd,imm4            cpb rbd,rbs             ex rd,addr(rs)
283
bit addr(rd),imm4       cpd rd,@@rs,rr,cc        ex rd,rs
284
bit addr,imm4           cpdb rbd,@@rs,rr,cc      exb rbd,@@rs
285
bit rd,imm4             cpdr rd,@@rs,rr,cc       exb rbd,addr
286
bit rd,rs               cpdrb rbd,@@rs,rr,cc     exb rbd,addr(rs)
287
bitb @@rd,imm4           cpi rd,@@rs,rr,cc        exb rbd,rbs
288
bitb addr(rd),imm4      cpib rbd,@@rs,rr,cc      ext0e imm8
289
bitb addr,imm4          cpir rd,@@rs,rr,cc       ext0f imm8
290
bitb rbd,imm4           cpirb rbd,@@rs,rr,cc     ext8e imm8
291
bitb rbd,rs             cpl rrd,@@rs             ext8f imm8
292
bpt                     cpl rrd,addr            exts rrd
293
call @@rd                cpl rrd,addr(rs)        extsb rd
294
call addr               cpl rrd,imm32           extsl rqd
295
call addr(rd)           cpl rrd,rrs             halt
296
calr disp12             cpsd @@rd,@@rs,rr,cc      in rd,@@rs
297
clr @@rd                 cpsdb @@rd,@@rs,rr,cc     in rd,imm16
298
clr addr                cpsdr @@rd,@@rs,rr,cc     inb rbd,@@rs
299
clr addr(rd)            cpsdrb @@rd,@@rs,rr,cc    inb rbd,imm16
300
clr rd                  cpsi @@rd,@@rs,rr,cc      inc @@rd,imm4m1
301
clrb @@rd                cpsib @@rd,@@rs,rr,cc     inc addr(rd),imm4m1
302
inc addr,imm4m1         ldb rbd,rs(rx)          mult rrd,addr(rs)
303
inc rd,imm4m1           ldb rd(imm16),rbs       mult rrd,imm16
304
incb @@rd,imm4m1         ldb rd(rx),rbs          mult rrd,rs
305
incb addr(rd),imm4m1    ldctl ctrl,rs           multl rqd,@@rs
306
incb addr,imm4m1        ldctl rd,ctrl           multl rqd,addr
307
incb rbd,imm4m1         ldd @@rs,@@rd,rr          multl rqd,addr(rs)
308
ind @@rd,@@rs,ra          lddb @@rs,@@rd,rr         multl rqd,imm32
309
indb @@rd,@@rs,rba        lddr @@rs,@@rd,rr         multl rqd,rrs
310
inib @@rd,@@rs,ra         lddrb @@rs,@@rd,rr        neg @@rd
311
inibr @@rd,@@rs,ra        ldi @@rd,@@rs,rr          neg addr
312
iret                    ldib @@rd,@@rs,rr         neg addr(rd)
313
jp cc,@@rd               ldir @@rd,@@rs,rr         neg rd
314
jp cc,addr              ldirb @@rd,@@rs,rr        negb @@rd
315
jp cc,addr(rd)          ldk rd,imm4             negb addr
316
jr cc,disp8             ldl @@rd,rrs             negb addr(rd)
317
ld @@rd,imm16            ldl addr(rd),rrs        negb rbd
318
ld @@rd,rs               ldl addr,rrs            nop
319
ld addr(rd),imm16       ldl rd(imm16),rrs       or rd,@@rs
320
ld addr(rd),rs          ldl rd(rx),rrs          or rd,addr
321
ld addr,imm16           ldl rrd,@@rs             or rd,addr(rs)
322
ld addr,rs              ldl rrd,addr            or rd,imm16
323
ld rd(imm16),rs         ldl rrd,addr(rs)        or rd,rs
324
ld rd(rx),rs            ldl rrd,imm32           orb rbd,@@rs
325
ld rd,@@rs               ldl rrd,rrs             orb rbd,addr
326
ld rd,addr              ldl rrd,rs(imm16)       orb rbd,addr(rs)
327
ld rd,addr(rs)          ldl rrd,rs(rx)          orb rbd,imm8
328
ld rd,imm16             ldm @@rd,rs,n            orb rbd,rbs
329
ld rd,rs                ldm addr(rd),rs,n       out @@rd,rs
330
ld rd,rs(imm16)         ldm addr,rs,n           out imm16,rs
331
ld rd,rs(rx)            ldm rd,@@rs,n            outb @@rd,rbs
332
lda rd,addr             ldm rd,addr(rs),n       outb imm16,rbs
333
lda rd,addr(rs)         ldm rd,addr,n           outd @@rd,@@rs,ra
334
lda rd,rs(imm16)        ldps @@rs                outdb @@rd,@@rs,rba
335
lda rd,rs(rx)           ldps addr               outib @@rd,@@rs,ra
336
ldar rd,disp16          ldps addr(rs)           outibr @@rd,@@rs,ra
337
ldb @@rd,imm8            ldr disp16,rs           pop @@rd,@@rs
338
ldb @@rd,rbs             ldr rd,disp16           pop addr(rd),@@rs
339
ldb addr(rd),imm8       ldrb disp16,rbs         pop addr,@@rs
340
ldb addr(rd),rbs        ldrb rbd,disp16         pop rd,@@rs
341
ldb addr,imm8           ldrl disp16,rrs         popl @@rd,@@rs
342
ldb addr,rbs            ldrl rrd,disp16         popl addr(rd),@@rs
343
ldb rbd,@@rs             mbit                    popl addr,@@rs
344
ldb rbd,addr            mreq rd                 popl rrd,@@rs
345
ldb rbd,addr(rs)        mres                    push @@rd,@@rs
346
ldb rbd,imm8            mset                    push @@rd,addr
347
ldb rbd,rbs             mult rrd,@@rs            push @@rd,addr(rs)
348
ldb rbd,rs(imm16)       mult rrd,addr           push @@rd,imm16
349
push @@rd,rs             set addr,imm4           subl rrd,imm32
350
pushl @@rd,@@rs           set rd,imm4             subl rrd,rrs
351
pushl @@rd,addr          set rd,rs               tcc cc,rd
352
pushl @@rd,addr(rs)      setb @@rd,imm4           tccb cc,rbd
353
pushl @@rd,rrs           setb addr(rd),imm4      test @@rd
354
res @@rd,imm4            setb addr,imm4          test addr
355
res addr(rd),imm4       setb rbd,imm4           test addr(rd)
356
res addr,imm4           setb rbd,rs             test rd
357
res rd,imm4             setflg imm4             testb @@rd
358
res rd,rs               sinb rbd,imm16          testb addr
359
resb @@rd,imm4           sinb rd,imm16           testb addr(rd)
360
resb addr(rd),imm4      sind @@rd,@@rs,ra         testb rbd
361
resb addr,imm4          sindb @@rd,@@rs,rba       testl @@rd
362
resb rbd,imm4           sinib @@rd,@@rs,ra        testl addr
363
resb rbd,rs             sinibr @@rd,@@rs,ra       testl addr(rd)
364
resflg imm4             sla rd,imm8             testl rrd
365
ret cc                  slab rbd,imm8           trdb @@rd,@@rs,rba
366
rl rd,imm1or2           slal rrd,imm8           trdrb @@rd,@@rs,rba
367
rlb rbd,imm1or2         sll rd,imm8             trib @@rd,@@rs,rbr
368
rlc rd,imm1or2          sllb rbd,imm8           trirb @@rd,@@rs,rbr
369
rlcb rbd,imm1or2        slll rrd,imm8           trtdrb @@ra,@@rb,rbr
370
rldb rbb,rba            sout imm16,rs           trtib @@ra,@@rb,rr
371
rr rd,imm1or2           soutb imm16,rbs         trtirb @@ra,@@rb,rbr
372
rrb rbd,imm1or2         soutd @@rd,@@rs,ra        trtrb @@ra,@@rb,rbr
373
rrc rd,imm1or2          soutdb @@rd,@@rs,rba      tset @@rd
374
rrcb rbd,imm1or2        soutib @@rd,@@rs,ra       tset addr
375
rrdb rbb,rba            soutibr @@rd,@@rs,ra      tset addr(rd)
376
rsvd36                  sra rd,imm8             tset rd
377
rsvd38                  srab rbd,imm8           tsetb @@rd
378
rsvd78                  sral rrd,imm8           tsetb addr
379
rsvd7e                  srl rd,imm8             tsetb addr(rd)
380
rsvd9d                  srlb rbd,imm8           tsetb rbd
381
rsvd9f                  srll rrd,imm8           xor rd,@@rs
382
rsvdb9                  sub rd,@@rs              xor rd,addr
383
rsvdbf                  sub rd,addr             xor rd,addr(rs)
384
sbc rd,rs               sub rd,addr(rs)         xor rd,imm16
385
sbcb rbd,rbs            sub rd,imm16            xor rd,rs
386
sc imm8                 sub rd,rs               xorb rbd,@@rs
387
sda rd,rs               subb rbd,@@rs            xorb rbd,addr
388
sdab rbd,rs             subb rbd,addr           xorb rbd,addr(rs)
389
sdal rrd,rs             subb rbd,addr(rs)       xorb rbd,imm8
390
sdl rd,rs               subb rbd,imm8           xorb rbd,rbs
391
sdlb rbd,rs             subb rbd,rbs            xorb rbd,rbs
392
sdll rrd,rs             subl rrd,@@rs
393
set @@rd,imm4            subl rrd,addr
394
set addr(rd),imm4       subl rrd,addr(rs)
395
@end smallexample
396
@iftex
397
@endgroup
398
@end iftex
399
@end ifset
400
 

powered by: WebSVN 2.1.0

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