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