@c Copyright (C) 2010-2022 Free Software Foundation, Inc.
@c This is part of the GAS manual.
@c For copying conditions, see the file as.texinfo.

@node XSTORMY16-Dependent
@chapter XStormy16 Dependent Features

@cindex XStormy16 support
@menu
* XStormy16 Syntax::               Syntax
* XStormy16 Directives::           Machine Directives
* XStormy16 Opcodes::              Pseudo-Opcodes
@end menu

@node XStormy16 Syntax
@section Syntax
@menu
* XStormy16-Chars::                Special Characters
@end menu

@node XStormy16-Chars
@subsection Special Characters

@cindex line comment character, XStormy16
@cindex XStormy16 line comment character
@samp{#} is the line comment character.  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 comment character, XStormy16
@cindex XStormy16 comment character
A semicolon (@samp{;}) can be used to start a comment that extends
from wherever the character appears on the line up to the end of the
line.

@cindex line separator, XStormy16
@cindex statement separator, XStormy16
@cindex XStormy16 line separator

The @samp{|} character can be used to separate statements on the same
line.


@node XStormy16 Directives
@section XStormy16 Machine Directives

@cindex machine directives, XStormy16
@cindex XStormy16 machine directives
@table @code

@cindex @code{16bit_pointers} directive, XStormy16
@item .16bit_pointers
Like the @option{--16bit-pointers} command-line option this directive
indicates that the assembly code makes use of 16-bit pointers.

@cindex @code{32bit_pointers} directive, XStormy16
@item .32bit_pointers
Like the @option{--32bit-pointers} command-line option this directive
indicates that the assembly code makes use of 32-bit pointers.

@cindex @code{.no_pointers} directive, XStormy16
@item .no_pointers
Like the @option{--no-pointers} command-line option this directive
indicates that the assembly code does not makes use pointers.

@end table

@node XStormy16 Opcodes
@section XStormy16 Pseudo-Opcodes

@cindex XStormy16 pseudo-opcodes
@cindex pseudo-opcodes for XStormy16
@code{@value{AS}} implements all the standard XStormy16 opcodes.

@code{@value{AS}} also implements the following pseudo ops:

@table @code

@cindex @code{@@lo} pseudo-op, XStormy16
@item @@lo()
Computes the lower 16 bits of the given expression and stores it into
the immediate operand field of the given instruction.  For example:

    @samp{add r6, @@lo(here - there)}

computes the difference between the address of labels 'here' and
'there', takes the lower 16 bits of this difference and adds it to
register 6.

@cindex @code{@@hi} pseudo-op, XStormy16
@item @@hi()
Computes the higher 16 bits of the given expression and stores it into
the immediate operand field of the given instruction.  For example:

    @samp{addc r7, @@hi(here - there)}

computes the difference between the address of labels 'here' and
'there', takes the upper 16 bits of this difference, shifts it down 16
bits and then adds it, along with the carry bit, to the value in
register 7.

@end table
