15
15 – 92
Syntax: <ALU> , dreg = DM ( I0 , M0 ) ;
<MAC> I1 M1
<SHIFT> I2 M2
I3 M3
I4 M4
I5 M5
I6 M6
I7 M7
PM ( I4 , M4 )
I5 M5
I6 M6
I7 M7
Permissible dregs
AX0 MX0 SI
AX1 MX1 SE
AY0 MY0 SR0
AY1 MY1 SR1
AR MR0
MR1
MR2
Description: Perform the designated arithmetic operation and data
transfer. The read operation moves the contents of the source to the
destination register. The addressing mode when combining an arithmetic
operation with a memory read is register indirect with post-modify. For
linear (i.e. non-circular) indirect addressing, the L register
corresponding to the I register used must be set to zero. The contents of
the source are always right-justified in the destination register.
The computation must be unconditional. All ALU, MAC and Shifter
operations are permitted except Shift Immediate and ALU DIVS and
DIVQ instructions.
The fundamental principle governing multifunction instructions is that
registers (and memory) are read at the beginning of the processor cycle
and written at the end of the cycle. The normal left-to-right order of
clauses (computation first, memory read second) is intended to imply this.
In fact, you may code this instruction with the order of clauses reversed.
The assembler produces a warning, but the results are identical at the
opcode level. If you turn off semantics checking in the assembler (using
the –s switch) the warning is not issued.
MULTIFUNCTION
COMPUTATION with MEMORY READ