Encoding_of_machine_instructions
Encoding_of_machine_instructions
language instructions, which are converted into the machine instructions using the
assembler program.
We have seen instructions that perform operations such as add, subtract, move,
shift, rotate, and branch. These instructions may use operands of different sizes, such as
32-bit and 8-bit numbers or 8-bit ASCII-encoded characters. The type of operation that is
to be performed and the type of operands used may be specified using an encoded binary
pattern referred to as the OP code for the given instruction. Suppose that 8 bits are
allocated for this purpose, giving 256 possibilities for specifying different instructions.
This leaves 24 bits to specify the rest of the required information.
Has to specify the registers R1 and R2, in addition to the OP code. If the processor has 16
registers, then four bits are needed to identify each register. Additional bits are needed to
indicate that the Register addressing mode is used for each operand.
The instruction
Move 24(R0), R5
Requires 16 bits to denote the OP code and the two registers, and some bits to express
that the source operand uses the Index addressing mode and that the index value is 24.
The shift instruction
LShiftR #2, R0
Again, 8 bits are used for the OP code, leaving 24 bits to specify the branch
offset. Since the offset is a 2’s-complement number, the branch target address must be
within 223 bytes of the location of the branch instruction. To branch to an instruction
outside this range, a different addressing mode has to be used, such as Absolute or
Register Indirect. Branch instructions that use these modes are usually called Jump
instructions.
In all these examples, the instructions can be encoded in a 32-bit word. Depicts a
possible format. There is an 8-bit Op-code field and two 7-bit fields for specifying the
source and destination operands. The 7-bit field identifies the addressing mode and the
register involved (if any). The “Other info” field allows us to specify the additional
information that may be needed, such as an index value or an immediate operand.
But, what happens if we want to specify a memory operand using the Absolute
addressing mode? The instruction
(c ) Three-operand instruction
Then it becomes necessary to use tow additional words for the 32-bit addresses of
the operands.
The restriction that an instruction must occupy only one word has led to a style of
computers that have become known as reduced instruction set computer (RISC). The
RISC approach introduced other restrictions, such as that all manipulation of data must be
done on operands that are already in processor registers. This restriction means that the
above addition would need a two-instruction sequence
Move (R3), R1
Add R1, R2
If the Add instruction only has to specify the two registers, it will need just a
portion of a 32-bit word. So, we may provide a more powerful instruction that uses three
operands
R3 � [R1] + [R2]
Source : http://elearningatria.files.wordpress.com/2013/10/cse-iv-computer-
organization-10cs46-notes.pdf