aboutsummaryrefslogtreecommitdiff
path: root/gas/doc/c-arc.texi
blob: 56822de14e652a95d9918ba63ebd437fbc1c40c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
@c Copyright 2000, 2001 Free Software Foundation, Inc.
@c This is part of the GAS manual.
@c For copying conditions, see the file as.texinfo.

@ifset GENERIC
@page
@node ARC-Dependent
@chapter ARC Dependent Features
@end ifset

@ifclear GENERIC
@node Machine Dependencies
@chapter ARC Dependent Features
@end ifclear

@set ARC_CORE_DEFAULT 5

@cindex ARC support
@menu
* ARC Options::              Options
* ARC Syntax::               Syntax
* ARC Floating Point::       Floating Point
* ARC Directives::           ARC Machine Directives
* ARC Opcodes::              Opcodes
@end menu


@node ARC Options
@section Options
@cindex ARC options (none)
@cindex options for ARC (none)

@table @code

@cindex @code{-marc[5|6|7|8]} command line option, ARC
@item -marc[5|6|7|8]
This option selects the core processor variant. Using
@code{-marc} is the same as @code{-marc@value{ARC_CORE_DEFAULT}}, which
is also the default.

@table @code

@cindex @code{arc5} arc5, ARC
@item arc5
Base instruction set.

@cindex @code{arc6} arc6, ARC
@item arc6
Jump-and-link (jl) instruction. No requirement of an instruction between
setting flags and conditional jump. For example:

@smallexample
  mov.f r0,r1
  beq   foo
@end smallexample

@cindex @code{arc7} arc7, ARC
@item arc7
Break (brk) and sleep (sleep) instructions.

@cindex @code{arc8} arc8, ARC
@item arc8
Software interrupt (swi) instruction.

@end table

Note: the @code{.option} directive can to be used to select a core
variant from within assembly code.

@cindex @code{-EB} command line option, ARC
@item -EB
This option specifies that the output generated by the assembler should
be marked as being encoded for a big-endian processor.

@cindex @code{-EL} command line option, ARC
@item -EL
This option specifies that the output generated by the assembler should
be marked as being encoded for a little-endian processor - this is the
default.

@end table


@node ARC Syntax
@section Syntax
@menu
* ARC-Chars::                Special Characters
* ARC-Regs::                 Register Names
@end menu

@node ARC-Chars
@subsection Special Characters

@cindex ARC special characters
@cindex special characters, ARC
*TODO*

@node ARC-Regs
@subsection Register Names

@cindex ARC register names
@cindex register names, ARC
*TODO*


@node ARC Floating Point
@section Floating Point

@cindex floating point, ARC (@sc{ieee})
@cindex ARC floating point (@sc{ieee})
The ARC core does not currently have hardware floating point
support. Software floating point support is provided by @code{GCC}
and uses @sc{ieee} floating-point numbers.


@node ARC Directives
@section ARC Machine Directives

@cindex machine directives, ARC
@cindex ARC machine directives
The ARC version of @code{@value{AS}} supports the following additional
machine directives:

@table @code

@cindex @code{2byte} directive, ARC
@item .2byte @var{expressions}
*TODO*

@cindex @code{3byte} directive, ARC
@item .3byte @var{expressions}
*TODO*

@cindex @code{4byte} directive, ARC
@item .4byte @var{expressions}
*TODO*

@cindex @code{extAuxRegister} directive, ARC
@item .extAuxRegister @var{name},@var{address},@var{mode}
*TODO*

@smallexample
  .extAuxRegister mulhi,0x12,w
@end smallexample

@cindex @code{extCondCode} directive, ARC
@item .extCondCode @var{suffix},@var{value}
*TODO*

@smallexample
  .extCondCode is_busy,0x14
@end smallexample

@cindex @code{extCoreRegister} directive, ARC
@item .extCoreRegister @var{name},@var{regnum},@var{mode},@var{shortcut}
*TODO*

@smallexample
  .extCoreRegister mlo,57,r,can_shortcut
@end smallexample

@cindex @code{extInstruction} directive, ARC
@item .extInstruction @var{name},@var{opcode},@var{subopcode},@var{suffixclass},@var{syntaxclass}
*TODO*

@smallexample
  .extInstruction mul64,0x14,0x0,SUFFIX_COND,SYNTAX_3OP|OP1_MUST_BE_IMM
@end smallexample

@cindex @code{half} directive, ARC
@item .half @var{expressions}
*TODO*

@cindex @code{long} directive, ARC
@item .long @var{expressions}
*TODO*

@cindex @code{option} directive, ARC
@item .option @var{arc|arc5|arc6|arc7|arc8}
The @code{.option} directive must be followed by the desired core
version. Again @code{arc} is an alias for
@code{arc@value{ARC_CORE_DEFAULT}}.

Note: the @code{.option} directive overrides the command line option
@code{-marc}; a warning is emitted when the version is not consistent
between the two - even for the implicit default core version
(arc@value{ARC_CORE_DEFAULT}).

@cindex @code{short} directive, ARC
@item .short @var{expressions}
*TODO*

@cindex @code{word} directive, ARC
@item .word @var{expressions}
*TODO*

@end table


@node ARC Opcodes
@section Opcodes

@cindex ARC opcodes
@cindex opcodes for ARC

For information on the ARC instruction set, see @cite{ARC Programmers
Reference Manual}, ARC Cores Ltd.