1@c Copyright (C) 2005-2016 Free Software Foundation, Inc.
2@c This is part of the GAS manual.
3@c For copying conditions, see the file as.texinfo.
4@ifset GENERIC
5@page
6@node M32C-Dependent
7@chapter M32C Dependent Features
8@end ifset
9@ifclear GENERIC
10@node Machine Dependencies
11@chapter M32C Dependent Features
12@end ifclear
13
14@cindex M32C support
15
16@code{@value{AS}} can assemble code for several different members of
17the Renesas M32C family.  Normally the default is to assemble code for
18the M16C microprocessor.  The @code{-m32c} option may be used to
19change the default to the M32C microprocessor.
20
21@menu
22* M32C-Opts::                   M32C Options
23* M32C-Syntax::                 M32C Syntax
24@end menu
25
26@node M32C-Opts
27@section M32C Options
28
29@cindex options, M32C
30@cindex M32C options
31
32The Renesas M32C version of @code{@value{AS}} has these
33machine-dependent options:
34
35@table @code
36@item -m32c
37@cindex @samp{-m32c} option, M32C
38@cindex architecture options, M32C
39@cindex M32C architecture option
40Assemble M32C instructions.
41
42@item -m16c
43@cindex @samp{-m16c} option, M16C
44@cindex architecture options, M16C
45@cindex M16C architecture option
46Assemble M16C instructions (default).
47
48@item -relax
49Enable support for link-time relaxations.
50
51@item -h-tick-hex
52Support H'00 style hex constants in addition to 0x00 style.
53
54
55@end table
56
57@node M32C-Syntax
58@section M32C Syntax
59@menu
60* M32C-Modifiers::              Symbolic Operand Modifiers
61* M32C-Chars::                  Special Characters
62@end menu
63
64@node M32C-Modifiers
65@subsection Symbolic Operand Modifiers
66
67@cindex M32C modifiers
68@cindex modifiers, M32C
69
70The assembler supports several modifiers when using symbol addresses
71in M32C instruction operands.  The general syntax is the following:
72
73@smallexample
74%modifier(symbol)
75@end smallexample
76
77@table @code
78@cindex symbol modifiers
79
80@item %dsp8
81@itemx %dsp16
82
83These modifiers override the assembler's assumptions about how big a
84symbol's address is.  Normally, when it sees an operand like
85@samp{sym[a0]} it assumes @samp{sym} may require the widest
86displacement field (16 bits for @samp{-m16c}, 24 bits for
87@samp{-m32c}).  These modifiers tell it to assume the address will fit
88in an 8 or 16 bit (respectively) unsigned displacement.  Note that, of
89course, if it doesn't actually fit you will get linker errors.  Example:
90
91@smallexample
92mov.w %dsp8(sym)[a0],r1
93mov.b #0,%dsp8(sym)[a0]
94@end smallexample
95
96@item %hi8
97
98This modifier allows you to load bits 16 through 23 of a 24 bit
99address into an 8 bit register.  This is useful with, for example, the
100M16C @samp{smovf} instruction, which expects a 20 bit address in
101@samp{r1h} and @samp{a0}.  Example:
102
103@smallexample
104mov.b #%hi8(sym),r1h
105mov.w #%lo16(sym),a0
106smovf.b
107@end smallexample
108
109@item %lo16
110
111Likewise, this modifier allows you to load bits 0 through 15 of a 24
112bit address into a 16 bit register.
113
114@item %hi16
115
116This modifier allows you to load bits 16 through 31 of a 32 bit
117address into a 16 bit register.  While the M32C family only has 24
118bits of address space, it does support addresses in pairs of 16 bit
119registers (like @samp{a1a0} for the @samp{lde} instruction).  This
120modifier is for loading the upper half in such cases.  Example:
121
122@smallexample
123mov.w #%hi16(sym),a1
124mov.w #%lo16(sym),a0
125@dots{}
126lde.w [a1a0],r1
127@end smallexample
128
129@end table
130
131@node M32C-Chars
132@subsection Special Characters
133
134@cindex line comment character, M32C
135@cindex M32C line comment character
136The presence of a @samp{;} character on a line indicates the start of
137a comment that extends to the end of that line.
138
139If a @samp{#} appears as the first character of a line, the whole line
140is treated as a comment, but in this case the line can also be a
141logical line number directive (@pxref{Comments}) or a
142preprocessor control command (@pxref{Preprocessing}).
143
144@cindex line separator, M32C
145@cindex statement separator, M32C
146@cindex M32C line separator
147The @samp{|} character can be used to separate statements on the same
148line.
149