@c Copyright 2005, 2008
@c 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.
