@c Copyright (C) 2007-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 CR16-Dependent
@chapter CR16 Dependent Features
@end ifset
@ifclear GENERIC
@node Machine Dependencies
@chapter CR16 Dependent Features
@end ifclear

@cindex CR16 support
@menu
* CR16 Operand Qualifiers::     CR16 Machine Operand Qualifiers
* CR16 Syntax::                 Syntax for the CR16
@end menu

@node CR16 Operand Qualifiers
@section CR16 Operand Qualifiers
@cindex CR16 Operand Qualifiers

The National Semiconductor CR16 target of @code{@value{AS}} has a few machine dependent operand qualifiers.

Operand expression type qualifier is an optional field in the instruction operand, to determines the type of the expression field of an operand. The @code{@@} is required. CR16 architecture uses one of the following expression qualifiers:

@table @code
@item  s
- @code{Specifies expression operand type as small}
@item  m
- @code{Specifies expression operand type as medium}
@item  l
- @code{Specifies expression operand type as large}
@item  c
- @code{Specifies the CR16 Assembler generates a relocation entry for the operand, where pc has implied bit, the expression is adjusted accordingly. The linker uses the relocation entry to update the operand address at link time.}
@item  got/GOT
- @code{Specifies the CR16 Assembler generates a relocation entry for the operand, offset from Global Offset Table. The linker uses this relocation entry to update the operand address at link time}
@item  cgot/cGOT
- @code{Specifies the CompactRISC Assembler generates a relocation entry for the operand, where pc has implied bit, the expression is adjusted accordingly. The linker uses the relocation entry to update the operand address at link time.}
@end table

CR16 target operand qualifiers and its size (in bits):

@table @samp
@item Immediate Operand: s
4 bits.

@item Immediate Operand: m
16 bits, for movb and movw instructions.

@item Immediate Operand: m
20 bits, movd instructions.

@item Immediate Operand: l
32 bits.

@item Absolute Operand: s
Illegal specifier for this operand.

@item Absolute Operand: m
20 bits, movd instructions.

@item Displacement Operand: s
8 bits.

@item Displacement Operand: m
16 bits.

@item Displacement Operand: l
24 bits.

@end table

For example:
@example
1   @code{movw $_myfun@@c,r1}

    This loads the address of _myfun, shifted right by 1, into r1.

2   @code{movd $_myfun@@c,(r2,r1)}

    This loads the address of _myfun, shifted right by 1, into register-pair r2-r1.

3   @code{_myfun_ptr:}
    @code{.long _myfun@@c}
    @code{loadd _myfun_ptr, (r1,r0)}
    @code{jal (r1,r0)}

    This .long directive, the address of _myfunc, shifted right by 1 at link time.

4   @code{loadd  _data1@@GOT(r12), (r1,r0)}

    This loads the address of _data1, into global offset table (ie GOT) and its offset value from GOT loads into register-pair r2-r1.

5   @code{loadd  _myfunc@@cGOT(r12), (r1,r0)}

    This loads the address of _myfun, shifted right by 1, into global offset table (ie GOT) and its offset value from GOT loads into register-pair r1-r0.
@end example

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

@node CR16-Chars
@subsection Special Characters

@cindex line comment character, CR16
@cindex CR16 line comment character
The presence of a @samp{#} on a line indicates the start of a comment
that extends to the end of the current line.  If the @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, CR16
@cindex statement separator, CR16
@cindex CR16 line separator
The @samp{;} character can be used to separate statements on the same
line.
