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 |