@c Copyright (C) 2012-2014 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 XGATE-Dependent @chapter XGATE Dependent Features @end ifset @ifclear GENERIC @node Machine Dependencies @chapter XGATE Dependent Features @end ifclear @cindex XGATE support @menu * XGATE-Opts:: XGATE Options * XGATE-Syntax:: Syntax * XGATE-Directives:: Assembler Directives * XGATE-Float:: Floating Point * XGATE-opcodes:: Opcodes @end menu @node XGATE-Opts @section XGATE Options @cindex options, XGATE @cindex XGATE options The Freescale XGATE version of @code{@value{AS}} has a few machine dependent options. @table @code @cindex @samp{-mshort} @item -mshort This option controls the ABI and indicates to use a 16-bit integer ABI. It has no effect on the assembled instructions. This is the default. @cindex @samp{-mlong} @item -mlong This option controls the ABI and indicates to use a 32-bit integer ABI. @cindex @samp{-mshort-double} @item -mshort-double This option controls the ABI and indicates to use a 32-bit float ABI. This is the default. @cindex @samp{-mlong-double} @item -mlong-double This option controls the ABI and indicates to use a 64-bit float ABI. @cindex @samp{--print-insn-syntax} @item --print-insn-syntax You can use the @samp{--print-insn-syntax} option to obtain the syntax description of the instruction when an error is detected. @cindex @samp{--print-opcodes} @item --print-opcodes The @samp{--print-opcodes} option prints the list of all the instructions with their syntax. Once the list is printed @code{@value{AS}} exits. @end table @node XGATE-Syntax @section Syntax @cindex XGATE syntax @cindex syntax, XGATE In XGATE RISC syntax, the instruction name comes first and it may be followed by up to three operands. Operands are separated by commas (@samp{,}). @code{@value{AS}} will complain if too many operands are specified for a given instruction. The same will happen if you specified too few operands. @smallexample nop ldl #23 CMP R1, R2 @end smallexample @cindex line comment character, XGATE @cindex XGATE line comment character The presence of a @samp{;} character or a @samp{!} character anywhere on a line indicates the start of a comment that extends to the end of that line. A @samp{*} or a @samp{#} character at the start of a line also introduces a line comment, but these characters do not work elsewhere on the line. If the first character of the line is a @samp{#} then as well as starting a comment, the line could also be logical line number directive (@pxref{Comments}) or a preprocessor control command (@pxref{Preprocessing}). @cindex line separator, XGATE @cindex statement separator, XGATE @cindex XGATE line separator The XGATE assembler does not currently support a line separator character. @cindex XGATE addressing modes @cindex addressing modes, XGATE The following addressing modes are understood for XGATE: @table @dfn @item Inherent @samp{} @item Immediate 3 Bit Wide @samp{#@var{number}} @item Immediate 4 Bit Wide @samp{#@var{number}} @item Immediate 8 Bit Wide @samp{#@var{number}} @item Monadic Addressing @samp{@var{reg}} @item Dyadic Addressing @samp{@var{reg}, @var{reg}} @item Triadic Addressing @samp{@var{reg}, @var{reg}, @var{reg}} @item Relative Addressing 9 Bit Wide @samp{*@var{symbol}} @item Relative Addressing 10 Bit Wide @samp{*@var{symbol}} @item Index Register plus Immediate Offset @samp{@var{reg}, (@var{reg}, #@var{number})} @item Index Register plus Register Offset @samp{@var{reg}, @var{reg}, @var{reg}} @item Index Register plus Register Offset with Post-increment @samp{@var{reg}, @var{reg}, @var{reg}+} @item Index Register plus Register Offset with Pre-decrement @samp{@var{reg}, @var{reg}, -@var{reg}} The register can be either @samp{R0}, @samp{R1}, @samp{R2}, @samp{R3}, @samp{R4}, @samp{R5}, @samp{R6} or @samp{R7}. @end table Convience macro opcodes to deal with 16-bit values have been added. @table @dfn @item Immediate 16 Bit Wide @samp{#@var{number}}, or @samp{*@var{symbol}} For example: @smallexample ldw R1, #1024 ldw R3, timer ldw R1, (R1, #0) COM R1 stw R2, (R1, #0) @end smallexample @end table @node XGATE-Directives @section Assembler Directives @cindex assembler directives, XGATE @cindex XGATE assembler directives The XGATE version of @code{@value{AS}} have the following specific assembler directives: @node XGATE-Float @section Floating Point @cindex floating point, XGATE @cindex XGATE floating point Packed decimal (P) format floating literals are not supported(yet). The floating point formats generated by directives are these. @table @code @cindex @code{float} directive, XGATE @item .float @code{Single} precision floating point constants. @cindex @code{double} directive, XGATE @item .double @code{Double} precision floating point constants. @cindex @code{extend} directive XGATE @cindex @code{ldouble} directive XGATE @item .extend @itemx .ldouble @code{Extended} precision (@code{long double}) floating point constants. @end table @need 2000 @node XGATE-opcodes @section Opcodes @cindex XGATE opcodes @cindex instruction set, XGATE