4.2 Instruction Encoding Field Descriptors Introduction
All instruction encoding field descriptors used in Instruction Descriptions are shown in Table 4-2 through Table 4-10.
| Field | Description | |
|---|---|---|
A | Accumulator Selection bit: 0
                     = ACCA; 1 = ACCB | |
aaa | Accumulator Write Back mode (see Table 4-9) | |
B | Byte Mode Selection bit: 0 =
                     word operation; 1 = byte operation | |
bbb | 3-bit bit position select:
                        000 = LSB; 111 = MSB | |
bbbb | 5-bit bit position select: 00000 = LSB;
                        11111 = MSB | |
| cccc | Bit field instructions LSb value | |
D | Destination Address bit: 0 =
                     result stored in W0; 1 = result stored in file
                     register | |
dddd | Wd destination register select:
                        0000 = W0; 1111 = W15 | |
ddddd | Coprocessor destination register select (Fd for FPU where
                        00000 = F0; 11111 = F31) | |
E | MULxx Result size: 0 = 32-bit in Wnd;
                        1 = 64-bit in (Wnd+1, Wnd) | |
F | Selects between W15 (F = 0) and W14 (F =
                        1) registers | |
(ffff) ffff ffff ffff
                     ffff | 16-bit or 20-bit register file address (addressable space varies depending upon instruction class) | |
G | Bit test destination: 0 = Z
                     flag bit; 1 = C flag bit | |
I | MULAxx Multiply mode: 0 =
                     Fractional; 1 = Integer | |
IIIii | X data fetch operation | |
JJJjj | Y data fetch operation | |
k | 1-bit literal field, constant data | |
kkk | 3-bit literal field, constant data | |
k kkkk | 5-bit literal field, constant data | |
kk kkkk | 6-bit literal field, constant data | |
kkkk kkkk | 8-bit literal field, constant data | |
kkkk kkkk kkkk kkkk | 16-bit literal field, constant data | |
| 
                      
  | 32-bit literal field, constant data | |
L | Long (32-bit) Mode Selection bit:
                        0 = word or byte operation; 1 = long
                     operation | |
mmmmm | Bit field instructions MSb value | |
nnnn nnnn nnnn nnnn nnnn
                     n | 21-bit signed instruction word offset field for relative branch/call instructions | |
nnnn nnnn nnnn nn00 nnnn
                        nnnn | 24-bit program address for goto/call instructions | |
ppp | Addressing mode for Ws source register (see Table 4-2) | |
qqq | Addressing mode for Wd destination register (see Table 4-3) | |
R | Selects between FPU coprocessor special registers or F-regs | |
rrr | Condition select for conditional move (MOVIF) instruction | |
S | Opcode size select (16-bit: S = 0; 32-bit: S
                     = 1) | |
ssss | Ws source or Wn source/destination register
                     select: 0000 = W0; 1111 = W15 | |
sssss | Coprocessor source register select (Fs for FPU where
                        00000 = F0; 11111 = F31) | |
T | Selects between Ws (T = 0)
                     and SR (T = 1) target registers | |
U | Unused (don’t care) Instruction bit. Assembler to assign
                        ‘0’ | |
V | FLIMW: Selects result format for Wnd (refer to instruction
                     description) MULxx: Selects between unsigned Ws (V = 0) and
                     signed Ws (V = 1). | |
W | Destination write control: 0
                     = Wd write not required; 1 = Wd write required | |
wwww | Source Wb base register select:
                        0000 = W0; 1111 = W15 | |
zz | Coprocessor select | |
ppp | Addressing Mode | Source Operand | 
|---|---|---|
000 | Register Direct | Wns | 
001 | Indirect | [Ws] | 
010 | Indirect with Post-Decrement | [Ws--] | 
011 | Indirect with Post-Increment | [Ws++] | 
100 | Indirect with Pre-Decrement | [--Ws] | 
101 | Indirect with Pre-Increment | [++Ws] | 
110 | Status Register Direct | SR (Source) | 
111 | Indirect with Register Offset | [Ws+Wb] | 
qqq | Addressing Mode | Destination Operand | 
|---|---|---|
000 | Register Direct | Wnd | 
001 | Indirect | [Wd] | 
010 | Indirect with Post-Decrement | [Wd--] | 
011 | Indirect with Post-Increment | [Wd++] | 
100 | Indirect with Pre-Decrement | [--Wd] | 
101 | Indirect with Pre-Increment | [++Wd] | 
110 | Status Register (SR) Direct | SR (Destination) | 
111 | Indirect with Register Offset | [Wd+Wb] | 
dddd | Destination | 
|---|---|
0000 | W1:W0 | 
0001 | W0 | 
0010 | W3:W2 | 
0011 | W2 | 
0100 | W5:W4 | 
0101 | W4 | 
0110 | W7:W6 | 
0111 | W6 | 
1000 | W9:W8 | 
1001 | W8 | 
1010 | W11:W10 | 
1011 | W10 | 
1100 | W13:W12 | 
1101 | W12 | 
1110 | ACCA[39:0] | 
1111 | ACCB[39:0] | 
ggg | Addressing Mode | Source Operand | 
|---|---|---|
000 | Register Direct | Ws | 
001 | Indirect | [Ws] | 
010 | Indirect with Post-Decrement | [Ws--] | 
011 | Indirect with Post-Increment | [Ws++] | 
100 | Indirect with Pre-Decrement | [--Ws] | 
101 | Indirect with Pre-Increment | [++Ws] | 
11x | Indirect with Register Offset | [Ws+Wb] | 
hhh | Addressing Mode | Source Operand | 
|---|---|---|
000 | Register Direct | Wd | 
001 | Indirect | [Wd] | 
010 | Indirect with Post-Decrement | [Wd--] | 
011 | Indirect with Post-Increment | [Wd++] | 
100 | Indirect with Pre-Decrement | [--Wd] | 
101 | Indirect with Pre-Increment | [++Wd] | 
11x | Indirect with Register Offset | [Wd+Wb] | 
mm | Multiplicands | 
|---|---|
00 | W4 * W4 | 
01 | W5 * W5 | 
10 | W6 * W6 | 
11 | W7 * W7 | 
mmm | Multiplicands | 
|---|---|
000 | W4 * W5 | 
001 | W4 * W6 | 
010 | W4 * W7 | 
011 | Invalid | 
100 | W5 * W6 | 
101 | W5 * W7 | 
110 | W6 * W7 | 
111 | Invalid | 
| aaa | Write-Back Selection | 
|---|---|
000 | W0 = Other Accumulator | 
001 | W1 = Other Accumulator | 
010 | W2 = Other Accumulator | 
011 | W3 = Other Accumulator | 
100 | W13 = Other Accumulator (Direct Addressing) | 
101 | [W13++] = Other Accumulator (Indirect Addressing with Post-Increment) | 
110 | [W15++] = Other Accumulator | 
111 | No Accumulator Write Back | 
A | Target Accumulator | 
|---|---|
0 | Accumulator A | 
1 | Accumulator B | 
