@c Copyright (C) 2005-2021 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.
