@c Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000, 2003,
@c 2004 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 M68K-Dependent
@chapter M680x0 Dependent Features
@end ifset
@ifclear GENERIC
@node Machine Dependencies
@chapter M680x0 Dependent Features
@end ifclear

@cindex M680x0 support
@menu
* M68K-Opts::                   M680x0 Options
* M68K-Syntax::                 Syntax
* M68K-Moto-Syntax::            Motorola Syntax
* M68K-Float::                  Floating Point
* M68K-Directives::             680x0 Machine Directives
* M68K-opcodes::                Opcodes
@end menu

@node M68K-Opts
@section M680x0 Options

@cindex options, M680x0
@cindex M680x0 options
The Motorola 680x0 version of @code{@value{AS}} has a few machine
dependent options:

@table @samp

@cindex @samp{-march=} command line option, M680x0
@item -march=@var{architecture}
This option specifies a target architecture.  The following
architectures are recognized:
@code{68000},
@code{68010},
@code{68020},
@code{68030},
@code{68040},
@code{68060},
@code{cpu32},
@code{isaa},
@code{isaaplus},
@code{isab},
@code{isac} and
@code{cfv4e}.


@cindex @samp{-mcpu=} command line option, M680x0
@item -mcpu=@var{cpu}
This option specifies a target cpu.  When used in conjunction with the
@option{-march} option, the cpu must be within the specified
architecture.  Also, the generic features of the architecture are used
for instruction generation, rather than those of the specific chip.

@cindex @samp{-m[no-]68851} command line option, M680x0
@cindex @samp{-m[no-]68881} command line option, M680x0
@cindex @samp{-m[no-]div} command line option, M680x0
@cindex @samp{-m[no-]usp} command line option, M680x0
@cindex @samp{-m[no-]float} command line option, M680x0
@cindex @samp{-m[no-]mac} command line option, M680x0
@cindex @samp{-m[no-]emac} command line option, M680x0
@item -m[no-]68851
@item -m[no-]68881
@item -m[no-]div
@item -m[no-]usp
@item -m[no-]float
@item -m[no-]mac
@item -m[no-]emac

Enable or disable various architecture specific features.  If a chip
or architecture by default supports an option (for instance
@option{-march=isaaplus} includes the @option{-mdiv} option),
explicitly disabling the option will override the default.

@cindex @samp{-l} option, M680x0
@item -l
You can use the @samp{-l} option to shorten the size of references to undefined
symbols.  If you do not use the @samp{-l} option, references to undefined
symbols are wide enough for a full @code{long} (32 bits).  (Since
@code{@value{AS}} cannot know where these symbols end up, @code{@value{AS}} can
only allocate space for the linker to fill in later.  Since @code{@value{AS}}
does not know how far away these symbols are, it allocates as much space as it
can.)  If you use this option, the references are only one word wide (16 bits).
This may be useful if you want the object file to be as small as possible, and
you know that the relevant symbols are always less than 17 bits away.

@cindex @samp{--register-prefix-optional} option, M680x0
@item --register-prefix-optional
For some configurations, especially those where the compiler normally
does not prepend an underscore to the names of user variables, the
assembler requires a @samp{%} before any use of a register name.  This
is intended to let the assembler distinguish between C variables and
functions named @samp{a0} through @samp{a7}, and so on.  The @samp{%} is
always accepted, but is not required for certain configurations, notably
@samp{sun3}.  The @samp{--register-prefix-optional} option may be used
to permit omitting the @samp{%} even for configurations for which it is
normally required.  If this is done, it will generally be impossible to
refer to C variables and functions with the same names as register
names.

@cindex @samp{--bitwise-or} option, M680x0
@item --bitwise-or
Normally the character @samp{|} is treated as a comment character, which
means that it can not be used in expressions.  The @samp{--bitwise-or}
option turns @samp{|} into a normal character.  In this mode, you must
either use C style comments, or start comments with a @samp{#} character
at the beginning of a line.

@cindex @samp{--base-size-default-16}
@cindex @samp{--base-size-default-32}
@item --base-size-default-16  --base-size-default-32 
If you use an addressing mode with a base register without specifying
the size, @code{@value{AS}} will normally use the full 32 bit value.
For example, the addressing mode @samp{%a0@@(%d0)} is equivalent to
@samp{%a0@@(%d0:l)}.  You may use the @samp{--base-size-default-16}
option to tell @code{@value{AS}} to default to using the 16 bit value.
In this case, @samp{%a0@@(%d0)} is equivalent to @samp{%a0@@(%d0:w)}.
You may use the @samp{--base-size-default-32} option to restore the
default behaviour.

@cindex @samp{--disp-size-default-16}
@cindex @samp{--disp-size-default-32}
@item --disp-size-default-16  --disp-size-default-32
If you use an addressing mode with a displacement, and the value of the
displacement is not known, @code{@value{AS}} will normally assume that
the value is 32 bits.  For example, if the symbol @samp{disp} has not
been defined, @code{@value{AS}} will assemble the addressing mode
@samp{%a0@@(disp,%d0)} as though @samp{disp} is a 32 bit value.  You may
use the @samp{--disp-size-default-16} option to tell @code{@value{AS}}
to instead assume that the displacement is 16 bits.  In this case,
@code{@value{AS}} will assemble @samp{%a0@@(disp,%d0)} as though
@samp{disp} is a 16 bit value.  You may use the
@samp{--disp-size-default-32} option to restore the default behaviour.

@cindex @samp{--pcrel}
@item --pcrel
Always keep branches PC-relative.  In the M680x0 architecture all branches
are defined as PC-relative.  However, on some processors they are limited
to word displacements maximum.  When @code{@value{AS}} needs a long branch
that is not available, it normally emits an absolute jump instead.  This
option disables this substitution.  When this option is given and no long
branches are available, only word branches will be emitted.  An error
message will be generated if a word branch cannot reach its target.  This
option has no effect on 68020 and other processors that have long branches.
@pxref{M68K-Branch,,Branch Improvement}.

@cindex @samp{-m68000} and related options
@cindex architecture options, M680x0
@cindex M680x0 architecture options
@item -m68000
@code{@value{AS}} can assemble code for several different members of the
Motorola 680x0 family.  The default depends upon how @code{@value{AS}}
was configured when it was built; normally, the default is to assemble
code for the 68020 microprocessor.  The following options may be used to
change the default.  These options control which instructions and
addressing modes are permitted.  The members of the 680x0 family are
very similar.  For detailed information about the differences, see the
Motorola manuals.

@table @samp
@item -m68000
@itemx -m68ec000
@itemx -m68hc000
@itemx -m68hc001
@itemx -m68008
@itemx -m68302
@itemx -m68306
@itemx -m68307
@itemx -m68322
@itemx -m68356
Assemble for the 68000. @samp{-m68008}, @samp{-m68302}, and so on are synonyms
for @samp{-m68000}, since the chips are the same from the point of view
of the assembler.

@item -m68010
Assemble for the 68010.

@item -m68020
@itemx -m68ec020
Assemble for the 68020.  This is normally the default.

@item -m68030
@itemx -m68ec030
Assemble for the 68030.

@item -m68040
@itemx -m68ec040
Assemble for the 68040.

@item -m68060
@itemx -m68ec060
Assemble for the 68060.

@item -mcpu32
@itemx -m68330
@itemx -m68331
@itemx -m68332
@itemx -m68333
@itemx -m68334
@itemx -m68336
@itemx -m68340
@itemx -m68341
@itemx -m68349
@itemx -m68360
Assemble for the CPU32 family of chips.

@item -m5200
@item -m5202
@item -m5204
@item -m5206
@item -m5206e
@item -m521x
@item -m5249
@item -m528x
@item -m5307
@item -m5407
@item -m547x
@item -m548x
@item -mcfv4
@item -mcfv4e
Assemble for the ColdFire family of chips.

@item -m68881
@itemx -m68882
Assemble 68881 floating point instructions.  This is the default for the
68020, 68030, and the CPU32.  The 68040 and 68060 always support
floating point instructions.

@item -mno-68881
Do not assemble 68881 floating point instructions.  This is the default
for 68000 and the 68010.  The 68040 and 68060 always support floating
point instructions, even if this option is used.

@item -m68851
Assemble 68851 MMU instructions.  This is the default for the 68020,
68030, and 68060.  The 68040 accepts a somewhat different set of MMU
instructions; @samp{-m68851} and @samp{-m68040} should not be used
together.

@item -mno-68851
Do not assemble 68851 MMU instructions.  This is the default for the
68000, 68010, and the CPU32.  The 68040 accepts a somewhat different set
of MMU instructions.
@end table
@end table

@node M68K-Syntax
@section Syntax

@cindex @sc{mit}
This syntax for the Motorola 680x0 was developed at @sc{mit}.

@cindex M680x0 syntax
@cindex syntax, M680x0
@cindex M680x0 size modifiers
@cindex size modifiers, M680x0
The 680x0 version of @code{@value{AS}} uses instructions names and
syntax compatible with the Sun assembler.  Intervening periods are
ignored; for example, @samp{movl} is equivalent to @samp{mov.l}.

In the following table @var{apc} stands for any of the address registers
(@samp{%a0} through @samp{%a7}), the program counter (@samp{%pc}), the
zero-address relative to the program counter (@samp{%zpc}), a suppressed
address register (@samp{%za0} through @samp{%za7}), or it may be omitted
entirely.  The use of @var{size} means one of @samp{w} or @samp{l}, and
it may be omitted, along with the leading colon, unless a scale is also
specified.  The use of @var{scale} means one of @samp{1}, @samp{2},
@samp{4}, or @samp{8}, and it may always be omitted along with the
leading colon.

@cindex M680x0 addressing modes
@cindex addressing modes, M680x0
The following addressing modes are understood:
@table @dfn
@item Immediate
@samp{#@var{number}}

@item Data Register
@samp{%d0} through @samp{%d7}

@item Address Register
@samp{%a0} through @samp{%a7}@*
@samp{%a7} is also known as @samp{%sp}, i.e., the Stack Pointer.  @code{%a6}
is also known as @samp{%fp}, the Frame Pointer.

@item Address Register Indirect
@samp{%a0@@} through @samp{%a7@@}

@item Address Register Postincrement
@samp{%a0@@+} through @samp{%a7@@+}

@item Address Register Predecrement
@samp{%a0@@-} through @samp{%a7@@-}

@item Indirect Plus Offset
@samp{@var{apc}@@(@var{number})}

@item Index
@samp{@var{apc}@@(@var{number},@var{register}:@var{size}:@var{scale})}

The @var{number} may be omitted.

@item Postindex
@samp{@var{apc}@@(@var{number})@@(@var{onumber},@var{register}:@var{size}:@var{scale})}

The @var{onumber} or the @var{register}, but not both, may be omitted.

@item Preindex
@samp{@var{apc}@@(@var{number},@var{register}:@var{size}:@var{scale})@@(@var{onumber})}

The @var{number} may be omitted.  Omitting the @var{register} produces
the Postindex addressing mode.

@item Absolute
@samp{@var{symbol}}, or @samp{@var{digits}}, optionally followed by
@samp{:b}, @samp{:w}, or @samp{:l}.
@end table

@node M68K-Moto-Syntax
@section Motorola Syntax

@cindex Motorola syntax for the 680x0
@cindex alternate syntax for the 680x0

The standard Motorola syntax for this chip differs from the syntax
already discussed (@pxref{M68K-Syntax,,Syntax}).  @code{@value{AS}} can
accept Motorola syntax for operands, even if @sc{mit} syntax is used for
other operands in the same instruction.  The two kinds of syntax are
fully compatible.

In the following table @var{apc} stands for any of the address registers
(@samp{%a0} through @samp{%a7}), the program counter (@samp{%pc}), the
zero-address relative to the program counter (@samp{%zpc}), or a
suppressed address register (@samp{%za0} through @samp{%za7}).  The use
of @var{size} means one of @samp{w} or @samp{l}, and it may always be
omitted along with the leading dot.  The use of @var{scale} means one of
@samp{1}, @samp{2}, @samp{4}, or @samp{8}, and it may always be omitted
along with the leading asterisk.

The following additional addressing modes are understood:

@table @dfn
@item Address Register Indirect
@samp{(%a0)} through @samp{(%a7)}@* 
@samp{%a7} is also known as @samp{%sp}, i.e., the Stack Pointer.  @code{%a6}
is also known as @samp{%fp}, the Frame Pointer.

@item Address Register Postincrement
@samp{(%a0)+} through @samp{(%a7)+}

@item Address Register Predecrement
@samp{-(%a0)} through @samp{-(%a7)}

@item Indirect Plus Offset
@samp{@var{number}(@var{%a0})} through @samp{@var{number}(@var{%a7})},
or @samp{@var{number}(@var{%pc})}.

The @var{number} may also appear within the parentheses, as in
@samp{(@var{number},@var{%a0})}.  When used with the @var{pc}, the
@var{number} may be omitted (with an address register, omitting the
@var{number} produces Address Register Indirect mode).

@item Index
@samp{@var{number}(@var{apc},@var{register}.@var{size}*@var{scale})}

The @var{number} may be omitted, or it may appear within the
parentheses.  The @var{apc} may be omitted.  The @var{register} and the
@var{apc} may appear in either order.  If both @var{apc} and
@var{register} are address registers, and the @var{size} and @var{scale}
are omitted, then the first register is taken as the base register, and
the second as the index register.

@item Postindex
@samp{([@var{number},@var{apc}],@var{register}.@var{size}*@var{scale},@var{onumber})}

The @var{onumber}, or the @var{register}, or both, may be omitted.
Either the @var{number} or the @var{apc} may be omitted, but not both.

@item Preindex
@samp{([@var{number},@var{apc},@var{register}.@var{size}*@var{scale}],@var{onumber})}

The @var{number}, or the @var{apc}, or the @var{register}, or any two of
them, may be omitted.  The @var{onumber} may be omitted.  The
@var{register} and the @var{apc} may appear in either order.  If both
@var{apc} and @var{register} are address registers, and the @var{size}
and @var{scale} are omitted, then the first register is taken as the
base register, and the second as the index register.
@end table

@node M68K-Float
@section Floating Point

@cindex floating point, M680x0
@cindex M680x0 floating point
Packed decimal (P) format floating literals are not supported.
Feel free to add the code!

The floating point formats generated by directives are these.

@table @code
@cindex @code{float} directive, M680x0
@item .float
@code{Single} precision floating point constants.

@cindex @code{double} directive, M680x0
@item .double
@code{Double} precision floating point constants.

@cindex @code{extend} directive M680x0
@cindex @code{ldouble} directive M680x0
@item .extend
@itemx .ldouble
@code{Extended} precision (@code{long double}) floating point constants.
@end table

@node M68K-Directives
@section 680x0 Machine Directives

@cindex M680x0 directives
@cindex directives, M680x0
In order to be compatible with the Sun assembler the 680x0 assembler
understands the following directives.

@table @code
@cindex @code{data1} directive, M680x0
@item .data1
This directive is identical to a @code{.data 1} directive.

@cindex @code{data2} directive, M680x0
@item .data2
This directive is identical to a @code{.data 2} directive.

@cindex @code{even} directive, M680x0
@item .even
This directive is a special case of the @code{.align} directive; it
aligns the output to an even byte boundary.

@cindex @code{skip} directive, M680x0
@item .skip
This directive is identical to a @code{.space} directive.

@cindex @code{arch} directive, M680x0
@item .arch @var{name}
Select the target architecture and extension features.  Valid values
for @var{name} are the same as for the @option{-march} command line
option.  This directive cannot be specified after
any instructions have been assembled.  If it is given multiple times,
or in conjunction with the @option{-march} option, all uses must be for
the same architecture and extension set.

@cindex @code{cpu} directive, M680x0
@item .cpu @var{name}
Select the target cpu.  Valid valuse
for @var{name} are the same as for the @option{-mcpu} command line
option.  This directive cannot be specified after
any instructions have been assembled.  If it is given multiple times,
or in conjunction with the @option{-mopt} option, all uses must be for
the same cpu.

@end table

@need 2000
@node M68K-opcodes
@section Opcodes

@cindex M680x0 opcodes
@cindex opcodes, M680x0
@cindex instruction set, M680x0
@c doc@cygnus.com: I don't see any point in the following
@c                   paragraph.  Bugs are bugs; how does saying this
@c                   help anyone?
@ignore
Danger:  Several bugs have been found in the opcode table (and
fixed).  More bugs may exist.  Be careful when using obscure
instructions.
@end ignore

@menu
* M68K-Branch::                 Branch Improvement
* M68K-Chars::                  Special Characters
@end menu

@node M68K-Branch
@subsection Branch Improvement

@cindex pseudo-opcodes, M680x0
@cindex M680x0 pseudo-opcodes
@cindex branch improvement, M680x0
@cindex M680x0 branch improvement
Certain pseudo opcodes are permitted for branch instructions.
They expand to the shortest branch instruction that reach the
target.  Generally these mnemonics are made by substituting @samp{j} for
@samp{b} at the start of a Motorola mnemonic.

The following table summarizes the pseudo-operations.  A @code{*} flags
cases that are more fully described after the table:

@smallexample
          Displacement
          +------------------------------------------------------------
          |                68020           68000/10, not PC-relative OK
Pseudo-Op |BYTE    WORD    LONG            ABSOLUTE LONG JUMP    **
          +------------------------------------------------------------
     jbsr |bsrs    bsrw    bsrl            jsr
      jra |bras    braw    bral            jmp
*     jXX |bXXs    bXXw    bXXl            bNXs;jmp
*    dbXX | N/A    dbXXw   dbXX;bras;bral  dbXX;bras;jmp
     fjXX | N/A    fbXXw   fbXXl            N/A

XX: condition
NX: negative of condition XX

@end smallexample
@center @code{*}---see full description below
@center @code{**}---this expansion mode is disallowed by @samp{--pcrel}

@table @code
@item jbsr
@itemx jra
These are the simplest jump pseudo-operations; they always map to one
particular machine instruction, depending on the displacement to the
branch target.  This instruction will be a byte or word branch is that
is sufficient.  Otherwise, a long branch will be emitted if available.
If no long branches are available and the @samp{--pcrel} option is not
given, an absolute long jump will be emitted instead.  If no long
branches are available, the @samp{--pcrel} option is given, and a word
branch cannot reach the target, an error message is generated.

In addition to standard branch operands, @code{@value{AS}} allows these
pseudo-operations to have all operands that are allowed for jsr and jmp,
substituting these instructions if the operand given is not valid for a
branch instruction.

@item j@var{XX}
Here, @samp{j@var{XX}} stands for an entire family of pseudo-operations,
where @var{XX} is a conditional branch or condition-code test.  The full
list of pseudo-ops in this family is:
@smallexample
 jhi   jls   jcc   jcs   jne   jeq   jvc
 jvs   jpl   jmi   jge   jlt   jgt   jle
@end smallexample

Usually, each of these pseudo-operations expands to a single branch
instruction.  However, if a word branch is not sufficient, no long branches
are available, and the @samp{--pcrel} option is not given, @code{@value{AS}}
issues a longer code fragment in terms of @var{NX}, the opposite condition
to @var{XX}.  For example, under these conditions:
@smallexample
    j@var{XX} foo
@end smallexample
gives
@smallexample
     b@var{NX}s oof
     jmp foo
 oof:
@end smallexample

@item db@var{XX}
The full family of pseudo-operations covered here is
@smallexample
 dbhi   dbls   dbcc   dbcs   dbne   dbeq   dbvc
 dbvs   dbpl   dbmi   dbge   dblt   dbgt   dble
 dbf    dbra   dbt
@end smallexample

Motorola @samp{db@var{XX}} instructions allow word displacements only.  When
a word displacement is sufficient, each of these pseudo-operations expands
to the corresponding Motorola instruction.  When a word displacement is not
sufficient and long branches are available, when the source reads
@samp{db@var{XX} foo}, @code{@value{AS}} emits
@smallexample
     db@var{XX} oo1
     bras oo2
 oo1:bral foo
 oo2:
@end smallexample

If, however, long branches are not available and the @samp{--pcrel} option is
not given, @code{@value{AS}} emits
@smallexample
     db@var{XX} oo1
     bras oo2
 oo1:jmp foo
 oo2:
@end smallexample

@item fj@var{XX}
This family includes
@smallexample
 fjne   fjeq   fjge   fjlt   fjgt   fjle   fjf
 fjt    fjgl   fjgle  fjnge  fjngl  fjngle fjngt
 fjnle  fjnlt  fjoge  fjogl  fjogt  fjole  fjolt
 fjor   fjseq  fjsf   fjsne  fjst   fjueq  fjuge
 fjugt  fjule  fjult  fjun
@end smallexample

Each of these pseudo-operations always expands to a single Motorola
coprocessor branch instruction, word or long.  All Motorola coprocessor
branch instructions allow both word and long displacements.

@end table

@node M68K-Chars
@subsection Special Characters

@cindex special characters, M680x0
@cindex M680x0 immediate character
@cindex immediate character, M680x0
@cindex M680x0 line comment character
@cindex line comment character, M680x0
@cindex comments, M680x0
The immediate character is @samp{#} for Sun compatibility.  The
line-comment character is @samp{|} (unless the @samp{--bitwise-or}
option is used).  If a @samp{#} appears at the beginning of a line, it
is treated as a comment unless it looks like @samp{# line file}, in
which case it is treated normally.

