@c Copyright 2011
@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 RL78-Dependent
@chapter RL78 Dependent Features
@end ifset
@ifclear GENERIC
@node Machine Dependencies
@chapter RL78 Dependent Features
@end ifclear

@cindex RL78 support
@menu
* RL78-Opts::                   RL78 Assembler Command Line Options
* RL78-Modifiers::              Symbolic Operand Modifiers
* RL78-Directives::             Assembler Directives
* RL78-Syntax::                 Syntax
@end menu

@node RL78-Opts
@section RL78 Options
@cindex options, RL78
@cindex RL78 options

The Renesas RL78 port of @code{@value{AS}} has no target-specific
options.

@node RL78-Modifiers
@section Symbolic Operand Modifiers

@cindex RL78 modifiers
@cindex syntax, RL78

The RL78 has three modifiers that adjust the relocations used by the
linker:

@table @code

@item %lo16()

When loading a 20-bit (or wider) address into registers, this modifier
selects the 16 least significant bits.

@smallexample
  movw ax,#%lo16(_sym)
@end smallexample

@item %hi16()

When loading a 20-bit (or wider) address into registers, this modifier
selects the 16 most significant bits.

@smallexample
  movw ax,#%hi16(_sym)
@end smallexample

@item %hi8()

When loading a 20-bit (or wider) address into registers, this modifier
selects the 8 bits that would go into CS or ES (i.e. bits 23..16).

@smallexample
  mov es, #%hi8(_sym)
@end smallexample

@end table

@node RL78-Directives
@section Assembler Directives

@cindex assembler directives, RL78
@cindex RL78 assembler directives

In addition to the common directives, the RL78 adds these:

@table @code

@item .double
Output a constant in ``double'' format, which is a 32-bit floating
point value on RL78.

@item .bss
Select the BSS section.

@item .3byte
Output a constant value in a three byte format.

@item .int
@itemx .word
Output a constant value in a four byte format.

@end table

@node RL78-Syntax
@section Syntax for the RL78
@menu
* RL78-Chars::                Special Characters
@end menu

@node RL78-Chars
@subsection Special Characters

@cindex line comment character, RL78
@cindex RL78 line comment character
The presence of a @samp{;} appearing anywhere 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 then 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, RL78
@cindex statement separator, RL78
@cindex RL78 line separator
The @samp{|} character can be used to separate statements on the same
line.
