summaryrefslogtreecommitdiff
path: root/gas/doc/c-m32c.texi
blob: 4292d8469a48a027aa79ae5677336ca1c4a1d609 (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
@c Copyright (C) 2005-2018 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 M32C-Dependent
@chapter M32C Dependent Features
@end ifset
@ifclear GENERIC
@node Machine Dependencies
@chapter M32C Dependent Features
@end ifclear

@cindex M32C support

@code{@value{AS}} can assemble code for several different members of
the Renesas M32C family.  Normally the default is to assemble code for
the M16C microprocessor.  The @code{-m32c} option may be used to
change the default to the M32C microprocessor.

@menu
* M32C-Opts::                   M32C Options
* M32C-Syntax::                 M32C Syntax
@end menu

@node M32C-Opts
@section M32C Options

@cindex options, M32C
@cindex M32C options

The Renesas M32C version of @code{@value{AS}} has these
machine-dependent options:

@table @code
@item -m32c
@cindex @samp{-m32c} option, M32C
@cindex architecture options, M32C
@cindex M32C architecture option
Assemble M32C instructions.

@item -m16c
@cindex @samp{-m16c} option, M16C
@cindex architecture options, M16C
@cindex M16C architecture option
Assemble M16C instructions (default).

@item -relax
Enable support for link-time relaxations.

@item -h-tick-hex
Support H'00 style hex constants in addition to 0x00 style.


@end table

@node M32C-Syntax
@section M32C Syntax
@menu
* M32C-Modifiers::              Symbolic Operand Modifiers
* M32C-Chars::                  Special Characters
@end menu

@node M32C-Modifiers
@subsection Symbolic Operand Modifiers

@cindex M32C modifiers
@cindex modifiers, M32C

The assembler supports several modifiers when using symbol addresses
in M32C instruction operands.  The general syntax is the following:

@smallexample
%modifier(symbol)
@end smallexample

@table @code
@cindex symbol modifiers

@item %dsp8
@itemx %dsp16

These modifiers override the assembler's assumptions about how big a
symbol's address is.  Normally, when it sees an operand like
@samp{sym[a0]} it assumes @samp{sym} may require the widest
displacement field (16 bits for @samp{-m16c}, 24 bits for
@samp{-m32c}).  These modifiers tell it to assume the address will fit
in an 8 or 16 bit (respectively) unsigned displacement.  Note that, of
course, if it doesn't actually fit you will get linker errors.  Example:

@smallexample
mov.w %dsp8(sym)[a0],r1
mov.b #0,%dsp8(sym)[a0]
@end smallexample

@item %hi8

This modifier allows you to load bits 16 through 23 of a 24 bit
address into an 8 bit register.  This is useful with, for example, the
M16C @samp{smovf} instruction, which expects a 20 bit address in
@samp{r1h} and @samp{a0}.  Example:

@smallexample
mov.b #%hi8(sym),r1h
mov.w #%lo16(sym),a0
smovf.b
@end smallexample

@item %lo16

Likewise, this modifier allows you to load bits 0 through 15 of a 24
bit address into a 16 bit register.

@item %hi16

This modifier allows you to load bits 16 through 31 of a 32 bit
address into a 16 bit register.  While the M32C family only has 24
bits of address space, it does support addresses in pairs of 16 bit
registers (like @samp{a1a0} for the @samp{lde} instruction).  This
modifier is for loading the upper half in such cases.  Example:

@smallexample
mov.w #%hi16(sym),a1
mov.w #%lo16(sym),a0
@dots{}
lde.w [a1a0],r1
@end smallexample

@end table

@node M32C-Chars
@subsection Special Characters

@cindex line comment character, M32C
@cindex M32C line comment character
The presence of a @samp{;} character on a line indicates the start of
a comment that extends to the end of that line.

If a @samp{#} appears as the first character of a line, the whole line
is treated as a comment, but in this case the line can also be a
logical line number directive (@pxref{Comments}) or a
preprocessor control command (@pxref{Preprocessing}).

@cindex line separator, M32C
@cindex statement separator, M32C
@cindex M32C line separator
The @samp{|} character can be used to separate statements on the same
line.