Contents|Index|Previous|Next
M68K dependent features

See the following documentation for the Motorola M68K architecture’s features and options for the assembler.

Options for M68K

The Motorola 68K version of as has a few machine dependent options.

You can use the -l option to shorten the size of references to undefined symbols. If you do not use the -l option, references to undefined symbols are wide enough for a full long (32 bits). (Since as cannot know where these symbols end up, as can only allocate space for the linker to fill in later. Since 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. For some configurations, especially those where the compiler normally does not prepend an underscore to the names of user variables, the assembler requires a % before any use of a register name. This is intended to let the assembler distinguish between C variables and functions named a0 through a7, and so on. The % is always accepted, but is not required for certain configurations, notably sun3. The --register-prefix-optional option may be used to permit omitting the % 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.

as can assemble code for several different members of the Motorola 68K family. The default depends upon how 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 68K family are very similar. For detailed information about the differences, see the Motorola manuals.

Syntax for M68K

This syntax for the Motorola 68K was developed at MIT.

The 68K version of as uses instructions names and syntax compatible with the Sun assembler. Intervening periods are ignored; for example, movl is equivalent to mov.l.

In the following, note that apc stands for any of the address registers (%a0 through %a7), the program counter (%pc), the zero-address relative to the program counter (%zpc), a suppressed address register (%za0 through %za7), or it may be omitted entirely.

The use of size means one of w or l, and it may be omitted, along with the leading colon, unless a scale is also specified. The use of scale means one of 1, 2, 4, or 8, and it may always be omitted along with the leading colon.

The following addressing modes are understood.

The standard Motorola syntax for this chip differs from the syntax already discussed. as can accept Motorola syntax for operands, even if MIT syntax is used for other operands in the same instruction. The two kinds of syntax are fully compatible. In the following, apc stands for any of the address registers (%a0 through %a7), the program counter (%pc), the zero-address relative to the program counter (%zpc), or a suppressed address register (%za0 through %za7). The use of size means one of w or l, and it may always be omitted along with the leading dot. The use of scale means one of 1, 2, 4, or 8, and it may always be omitted along with the leading asterisk. The following additional addressing modes are understood.

Floating point for M68K

Packed decimal (P) format floating literals are not supported. Feel free to add the code!

The floating point formats generated by directives are the following.

Machine directives for M68K

In order to be compatible with the Sun assembler, the 68K assembler understands the following directives.
 

Branch improvement for M68K

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 j for b at the start of a Motorola mnemonic. The following summarizes the pseudo-operations.



*       See the following description.

Special characters for M68K

The immediate character is # for Sun compatibility. The line-comment character is |. If a # appears at the beginning of a line, it is treated as a comment unless it looks like # line file, in which case it is treated normally.


Top|Contents|Index|Previous|Next