Encoding of the General Purpose Registers
The encoding for the general purpose registers is shown in the table; it will be used in place of ra, rb and rc in the instruction formats shown above. Note that this is a simple 5 bit encoding. ra, rb and rc are names of fields used as “place-holders”, and can represent any one of these 32 registers. An exception is rb = 0; it does not mean the register R0, rather it means no operand. This will be explained in the following discussion.
Type A
Type A is used for only two instructions:
Type B
Type B format includes three instructions; all three use relative addressing mode. These are
the instructions re-locatable.
Type C
Type C format has three load/store instructions, plus three ALU instructions. These load/ store instructions are
ld R3, 56
This instruction will load the register R3 with the contents of the memory
location M [56]; the rb field is 0 in this instruction, i.e., it is not used. This
is an example of direct addressing mode.
o Example 2:
ld R3, 56(R5)
The contents of the memory location M [56+R [5]] are loaded to the
register R3; the rb field ≠ 0. This is an instance of indexed addressing
mode.
The encoding for the general purpose registers is shown in the table; it will be used in place of ra, rb and rc in the instruction formats shown above. Note that this is a simple 5 bit encoding. ra, rb and rc are names of fields used as “place-holders”, and can represent any one of these 32 registers. An exception is rb = 0; it does not mean the register R0, rather it means no operand. This will be explained in the following discussion.
Type A
Type A is used for only two instructions:
- No operation or nop, for which the op-code = 0. This is useful in pipelining
- Stop operation stop, the op-code is 31 for this instruction.
Type B
Type B format includes three instructions; all three use relative addressing mode. These are
- The ldr instruction, used to load register from memory using a relative address.
(op-code = 2).
o Example:
ldr R3, 56
This instruction will load the register R3 with the contents of the memory
location M [PC+56]
- The lar instruction, for loading a register with relative address (op-code = 6)
o Example:
lar R3, 56
This instruction will load the register R3 with the relative address itself
(PC+56). - The str is used to store register to memory using relative address (op-code = 4)
o Example:
str R8, 34
This instruction will store the register R8 contents to the memory location
M [PC+34]
the instructions re-locatable.
Type C
Type C format has three load/store instructions, plus three ALU instructions. These load/ store instructions are
- ld, the load register from memory instruction (op-code = 1)
ld R3, 56
This instruction will load the register R3 with the contents of the memory
location M [56]; the rb field is 0 in this instruction, i.e., it is not used. This
is an example of direct addressing mode.
o Example 2:
ld R3, 56(R5)
The contents of the memory location M [56+R [5]] are loaded to the
register R3; the rb field ≠ 0. This is an instance of indexed addressing
mode.
- la is the instruction to load a register with an immediate data value (which can be an address) (op-code = 5 )
o Example1:
la R3, 56
The register R3 is loaded with the immediate value 56. This is an instance
of immediate addressing mode.o Example 2:
la R3, 56(R5)
The register R3 is loaded with the indexed address 56+R [5]. This is an
example of indexed addressing mode.
- The st instruction is used to store register contents to memory (op-code = 3)
o Example 1:
st R8, 34
This is the direct addressing mode; the contents of register R8 (R [8]) are
stored to the memory location M [34]
o Example 2:The ALU instructions are
st R8, 34(R6)
An instance of indexed addressing mode, M [34+R [6]] stores the contents
of R8(R [8])
- addi, immediate 2‟s complement addition (op-code = 13)
o Example:
addi R3, R4, 56
R[3] R[4]+56 (rb field = R4)
- andi, the instruction to obtain immediate logical AND, (op-code = 42 )
o Example:
andi R3, R4, 56
R3 is loaded with the immediate logical AND of the contents of register
R4 and 56(constant value)
- ori, the instruction to obtain immediate logical OR (op-code = 23 )
o Example:Note:
ori R3, R4, 56
R3 is loaded with the immediate logical OR of the contents of register R4
and 56(constant value)
- Since the constant c2 field is 17 bits,
- For direct addressing mode, only the first 216 bytes of memory can be accessed (or the last 216 bytes if c2 is negative)
- In case of the la instruction, only constants with magnitudes less than ±216 can be loaded
- During address calculation using c2, sign extension to 32 bits must be performed before the addition
- Type C instructions, with some modifications, may also be used for
shift instructions. Note the modification in the following figure.
- shr is the instruction used to shift the bits right by using value in (5-bit) c3 field(shift count)
- (op-code = 26)
Example:
shr R3, R4, 7
shift R4 right 7 times in to R3. Immediate addressing mode is used. - shra, arithmetic shift right by using value in c3 field (op-code = 27)
Example:
shra R3, R4, 7
This instruction has the effect of shift R4 right 7 times in to R3. Immediate
addressing mode is used. - The shl instruction is for shift left by using value in (5-bit) c3 field (op-code = 28)
Example:
shl R8, R5, 6
shift R5 left 6 times in to R8. Immediate addressing mode is used. - shc, shift left circular by using value in c3 field (op-code = 29)
Example:
shc R3, R4, 3
shift R4 circular 3 times in to R3. Immediate addressing mode is used.
General Purpose Registers - Register Types
Reviewed by MCH
on
September 08, 2014
Rating:
No comments: