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

The Freescale S12Z version of @code{@value{AS}} has a few machine
dependent features.

@cindex S12Z support
@menu
* S12Z Options::                S12Z Options
* S12Z Syntax::                 Syntax
@end menu

@node S12Z Options
@section S12Z Options

@cindex options, S12Z
@cindex S12Z options

The S12Z version of @code{@value{AS}} recognizes the following options:

@table @samp

@item -mreg-prefix=@var{prefix}
@cindex @samp{-mreg-prefix=@var{prefix}} option, reg-prefix
You can use the @samp{-mreg-prefix=@var{pfx}} option to indicate
that the assembler should expect all register names to be prefixed with the
string @var{pfx}.

For an explanation of what this means and why it might be needed,
see @ref{S12Z Register Notation}.


@item -mdollar-hex
@cindex @samp{-mdollar-hex} option, dollar-hex
@cindex hexadecimal prefix, S12Z
The @samp{-mdollar-hex} option affects the way that literal hexadecimal constants
are represented.  When this option is specified, the assembler will consider
the @samp{$} character as the start of a hexadecimal integer constant.  Without
this option, the standard value of @samp{0x} is expected.

If you use this option, then you cannot have symbol names starting with @samp{$}.
@samp{-mdollar-hex} is implied if the @samp{--traditional-format}
(@pxref{traditional-format}) is used.
@end table

@node S12Z Syntax
@section Syntax


@menu
* S12Z Syntax Overview::                  General description
* S12Z Addressing Modes::                 Operands and their semantics
* S12Z Register Notation::                How to refer to registers
@end menu


@cindex S12Z syntax
@cindex syntax, S12Z

@node S12Z Syntax Overview
@subsection Overview

In the S12Z syntax, the instruction name comes first and it may
be followed by one, or by several operands.
In most cases the maximum number of operands is three.
Operands are separated by a comma (@samp{,}).
A comma however does not act as a separator if it appears within parentheses
(@samp{()}) or within square brackets (@samp{[]}).
@code{@value{AS}} will complain if too many, too few or inappropriate operands
are specified for a given instruction.

Some instructions accept and (in certain situations require) a suffix
indicating the size of the operand.
The suffix is separated from the instruction name by a period (@samp{.})
and may be one of @samp{b}, @samp{w}, @samp{p} or @samp{l} indicating
`byte' (a single byte), `word' (2 bytes), `pointer' (3 bytes) or `long' (4 bytes)
respectively.

Example:

@smallexample
	bset.b  0xA98, #5
	mov.b   #6, 0x2409
	ld      d0, #4
	mov.l   (d0, x), 0x2409
	inc     d0
	cmp     d0, #12
	blt     *-4
	lea     x, 0x2409
	st      y,  (1, x)
@end smallexample

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


@node S12Z Addressing Modes
@subsection Addressing Modes
@cindex S12Z addressing modes
@cindex addressing modes, S12Z

The following addressing modes are understood for the S12Z.
@table @dfn
@item Immediate
@samp{#@var{number}}

@item Immediate Bit Field
@samp{#@var{width}:@var{offset}}

Bit field instructions in the immediate mode require the width and offset to
be specified.
The @var{width} parameter specifies the number of bits in the field.
It should be a number in the range [1,32].
@var{Offset} determines the position within the field where the operation
should start.
It should be a number in the range [0,31].

@item Relative
@samp{*@var{symbol}}, or @samp{*[+-]@var{digits}}

Program counter relative addresses have a width of 15 bits.
Thus, they must be within the range [-32768, 32767].

@item Register
@samp{@var{reg}}

@cindex register names, S12Z
Some instructions accept a register as an operand.
In general, @var{reg} may be a
data register (@samp{D0}, @samp{D1} @dots{} @samp{D7}),
the @samp{X} register or the @samp{Y} register.

A few instructions accept as an argument the stack pointer
register (@samp{S}), and/or the program counter (@samp{P}).

Some very special instructions accept arguments which refer to the
condition code register.  For these arguments the  syntax is
@samp{CCR}, @samp{CCH} or @samp{CCL} which refer to the complete
condition code register, the condition code register high byte
and the condition code register low byte respectively.


@item Absolute Direct
@samp{@var{symbol}}, or @samp{@var{digits}}

@item Absolute Indirect
@samp{[@var{symbol}}, or @samp{@var{digits}]}


@item Constant Offset Indexed
@samp{(@var{number},@var{reg})}

@var{Reg} may be either @samp{X}, @samp{Y}, @samp{S} or
@samp{P} or one of the data registers @samp{D0}, @samp{D1} @dots{}
@samp{D7}.
If any of the registers @samp{D2} @dots{} @samp{D5} are specified, then the
register value is treated as a signed value.
Otherwise it is treated as unsigned.
@var{Number} may be any integer in the range [-8388608,8388607].

@item Offset Indexed Indirect
@samp{[@var{number},@var{reg}]}

@var{Reg} may be either @samp{X}, @samp{Y}, @samp{S} or
@samp{P}.
@var{Number} may be any integer in the range [-8388608,8388607].

@item Auto Pre-Increment/Pre-Decrement/Post-Increment/Post-Decrement
@samp{-@var{reg}},
@samp{+@var{reg}},
@samp{@var{reg}-} or
@samp{@var{reg}+}

This addressing mode is typically used to access a value at an address,
and simultaneously to increment/decrement the register pointing to that
address.
Thus @var{reg} may be any of the 24 bit registers @samp{X}, @samp{Y}, or
@samp{S}.
Pre-increment and post-decrement are not available for
register @samp{S} (only post-increment and pre-decrement are available).

@item Register Offset Direct
@samp{(@var{data-reg},@var{reg})}

@var{Reg} can be either @samp{X}, @samp{Y}, or @samp{S}.
@var{Data-reg}
must be one of the data registers @samp{D0}, @samp{D1} @dots{} @samp{D7}.
If any of the registers @samp{D2} @dots{} @samp{D5} are specified, then
the register value is treated as a signed value.
Otherwise it is treated as unsigned.

@item Register Offset Indirect
@samp{[@var{data-reg},@var{reg}]}

@var{Reg} can be either @samp{X} or @samp{Y}.
@var{Data-reg}
must be one of the data registers @samp{D0}, @samp{D1} @dots{} @samp{D7}.
If any of the registers @samp{D2} @dots{} @samp{D5} are specified, then
the register value is treated as a signed value.
Otherwise it is treated as unsigned.
@end table

For example:

@smallexample
	trap    #197        ;; Immediate mode
	bra     *+49        ;; Relative mode
	bra     .L0         ;;     ditto
	jmp     0xFE0034    ;; Absolute direct mode
	jmp     [0xFD0012]  ;; Absolute indirect mode
	inc.b   (4,x)       ;; Constant offset indexed mode
	jsr     (45, d0)    ;;     ditto
	dec.w   [4,y]       ;; Constant offset indexed indirect mode
	clr.p   (-s)        ;; Pre-decrement mode
	neg.l   (d0, s)     ;; Register offset direct mode
	com.b   [d1, x]     ;; Register offset indirect mode
	psh     cch         ;; Register mode
@end smallexample

@node S12Z Register Notation
@subsection Register Notation

@cindex register notation, S12Z
Without a register prefix (@pxref{S12Z Options}), S12Z assembler code is expected in the traditional
format like this:
@smallexample
lea s, (-2,s)
st d2, (0,s)
ld x,  symbol
tfr d2, d6
cmp d6, #1532
@end smallexample

@noindent
However, if @code{@value{AS}} is started with (for example) @samp{-mreg-prefix=%}
then all register names must be prefixed with @samp{%} as follows:
@smallexample
lea %s, (-2,%s)
st %d2, (0,%s)
ld %x,  symbol
tfr %d2, %d6
cmp %d6, #1532
@end smallexample

The register prefix feature is intended to be used by compilers
to avoid ambiguity between symbols and register names.
Consider the following assembler instruction:
@smallexample
st d0, d1
@end smallexample
@noindent
The destination operand of this instruction could either refer to the register
@samp{D1}, or it could refer to the symbol named ``d1''.
If the latter is intended then @code{@value{AS}} must be invoked with
@samp{-mreg-prefix=@var{pfx}} and the code written as
@smallexample
st @var{pfx}d0, d1
@end smallexample
@noindent
where @var{pfx} is the chosen register prefix.
For this reason, compiler back-ends should choose a register prefix which
cannot be confused with a symbol name.
