Next: MMIX-Syntax, Previous: MMIX-Opts, Up: MMIX-Dependent [Contents][Index]
When as
encounters an instruction with an operand that is
either not known or does not fit the operand size of the instruction,
as
(and ld
) will expand the instruction into
a sequence of instructions semantically equivalent to the operand fitting
the instruction. Expansion will take place for the following
instructions:
Expands to a sequence of four instructions: SETL
, INCML
,
INCMH
and INCH
. The operand must be a multiple of four.
A branch instruction is turned into a branch with the complemented
condition and prediction bit over five instructions; four instructions
setting $255
to the operand value, which like with GETA
must
be a multiple of four, and a final GO $255,$255,0
.
Similar to expansion for conditional branches; four instructions set
$255
to the operand value, followed by a PUSHGO $255,$255,0
.
Similar to conditional branches and PUSHJ
. The final instruction
is GO $255,$255,0
.
The linker ld
is expected to shrink these expansions for
code assembled with ‘--relax’ (though not currently implemented).