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

@cindex IP2K support
@menu
* IP2K-Opts::                   IP2K Options
* IP2K-Syntax::                 IP2K Syntax
@end menu

@node IP2K-Opts
@section IP2K Options

@cindex options, IP2K
@cindex IP2K options

The Ubicom IP2K version of @code{@value{AS}} has a few machine
dependent options:

@table @code
@item -mip2022ext
@cindex @samp{-mip2022ext} option, IP2022
@cindex architecture options, IP2022
@cindex IP2K architecture options
@code{@value{AS}} can assemble the extended IP2022 instructions, but
it will only do so if this is specifically allowed via this command
line option.

@item -mip2022
@cindex @samp{-mip2022} option, IP2K
@cindex architecture options, IP2K
@cindex IP2K architecture options
This option restores the assembler's default behaviour of not
permitting the extended IP2022 instructions to be assembled.

@end table

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

@node IP2K-Chars
@subsection Special Characters

@cindex line comment character, IP2K
@cindex IP2K 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 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, IP2K
@cindex statement separator, IP2K
@cindex IP2K line separator
The IP2K assembler does not currently support a line separator
character.
