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).