Recent Post

Encoding of Machine Instructions in CAO


Assembly language program needs to be converted into machine instructions. (ADD = 0100 in ARM instruction set)
In the previous section, an assumption was made that all instructions are one word in length.
OP code: the type of operation to be performed and the type of operands used may be specified using an encoded binary pattern
  Suppose 32-bit word length, 8-bit OP code (how many instructions can we have?), 16 registers in total (how many bits?), 3-bit addressing mode indicator. 
Add  R1, R2 
Move  24(R0), R5 
LshiftR  #2, R0 
Move  #$3A, R1 
Branch>0  LOOP
 
What happens if we want to specify a memory operand using the Absolute addressing mode?
Move  R2, LOC
14-bit for LOC – insufficient
Solution – use two words
 
Then what if an instruction in which two operands can be specified using the Absolute addressing mode? 
Move  LOC1, LOC2 
Solution – use two additional words 
This approach results in instructions of variable length. Complex instructions can be implemented, closely resembling operations in high-level programming languages – Complex Instruction Set Computer (CISC)
If we insist that all instructions must fit into a single 32-bit word, it is not possible to provide a 32-bit address or a 32-bit immediate operand within the instruction. 
It is still possible to define a highly functional instruction set, which makes extensive use of the processor registers. 
Add  R1, R2 ----- yes 
Add  LOC, R2 ----- no 
Add  (R3), R2 ----- yes  
 

No comments