as: MMIX-Expand

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