ec 252 ec-252-l10-instruction sets and addressing modes
TRANSCRIPT
![Page 1: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/1.jpg)
EC-252: COMPUTER ARCHITECTURE AND MICROPROCESSORS
Vaskar Raychoudhury
Indian Institute of Technology Roorkee
![Page 2: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/2.jpg)
What is an Instruction Set?
� The complete collection of instructions that are understood by a CPU
� Machine Code
� Binary
2
� Binary
� Usually represented by assembly codes
![Page 3: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/3.jpg)
Elements of an Instruction
� Operation code (Op code)
� Do this
� Source Operand reference
� To this
3
� To this
� Result Operand reference
� Put the answer here
� Next Instruction Reference
� When you have done that, do this...
![Page 4: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/4.jpg)
Where have all the Operands Gone?
� Main memory (or virtual memory or cache)
� CPU register
� I/O device
� (Immediate)
4
� (Immediate)
![Page 5: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/5.jpg)
Instruction Representation
� In machine code each instruction has a unique bit pattern
� For human consumption (well, programmers anyway) a symbolic representation is used
5
a symbolic representation is used
� e.g. ADD, SUB, LOAD
� Operands can also be represented in this way
� ADD A, B
![Page 6: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/6.jpg)
Simple Instruction Format6
![Page 7: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/7.jpg)
Instruction Types
� Data processing
� Data storage (main memory)
� Data movement (I/O)
� Program flow control
7
� Program flow control
![Page 8: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/8.jpg)
Number of Addresses (a)
� 3 addresses
� Operand 1, Operand 2, Result
� a = b + c;
� May be a fourth - next instruction (usually implicit)
8
� May be a fourth - next instruction (usually implicit)
� Not common
� Needs very long words to hold everything
![Page 9: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/9.jpg)
Number of Addresses (b)
� 2 addresses
� One address doubles as operand and result
� a = a + b
� Reduces length of instruction
9
� Reduces length of instruction
� Requires some extra work
� Temporary storage to hold some results
![Page 10: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/10.jpg)
Number of Addresses (c)
� 1 address
� Implicit second address
� Usually a register (accumulator)
� Common on early machines
10
� Common on early machines
![Page 11: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/11.jpg)
Number of Addresses (d)
� 0 (zero) addresses
� All addresses implicit
� Uses a stack
� e.g. push a
11
� e.g. push a
� push b
� add
� pop c
� c = a + b
![Page 12: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/12.jpg)
How Many Addresses
� More addresses
� More complex (powerful?) instructions
� More registers
� Inter-register operations are quicker
12
Inter-register operations are quicker
� Fewer instructions per program
� Fewer addresses
� Less complex (powerful?) instructions
� More instructions per program
� Faster fetch/execution of instructions
![Page 13: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/13.jpg)
Design Decisions (1)
� Operation repertoire
� How many ops?
� What can they do?
� How complex are they?
13
� How complex are they?
� Data types
� Instruction formats
� Length of op code field
� Number of addresses
![Page 14: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/14.jpg)
Design Decisions (2)
� Registers
� Number of CPU registers available
� Which operations can be performed on which registers?
14
� Addressing modes (later…)
� RISC v CISC
![Page 15: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/15.jpg)
Types of Operand
� Addresses
� Numbers
� Integer/floating point
� Characters
15
� Characters
� ASCII etc.
� Logical Data
� Bits or flags
![Page 16: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/16.jpg)
Types of Operation
� Data Transfer� Source, Destination, Amount of data
� Arithmetic
� Logical� Bitwise operations
16
� AND, OR, NOT
� Conversion� Binary to Decimal
� I/O
� System Control� OS specific operations
� Transfer of Control� Branch, Skip, Subroutine call (e.g., interrupt)
![Page 17: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/17.jpg)
Arithmetic
� Add, Subtract, Multiply, Divide
� Signed Integer
� Floating point ?
� May include
17
� May include
� Increment (a++)
� Decrement (a--)
� Negate (-a)
![Page 18: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/18.jpg)
Addressing Modes
� Immediate
� Direct
� Indirect
� Register
18
� Register
� Register Indirect
� Displacement (Indexed)
� Stack
![Page 19: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/19.jpg)
Immediate Addressing
� Operand is part of instruction
� Operand = address field
� e.g. ADD 5
� Add 5 to contents of accumulator
19
� Add 5 to contents of accumulator
� 5 is operand
� No memory reference to fetch data
� Fast
� Limited range
![Page 20: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/20.jpg)
Immediate Addressing Diagram
OperandOpcode
Instruction
20
![Page 21: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/21.jpg)
Direct Addressing
� Address field contains address of operand
� Effective address (EA) = address field (A)
� e.g. ADD A� Add contents of cell A to accumulator
21
Add contents of cell A to accumulator
� Look in memory at address A for operand
� Single memory reference to access data
� No additional calculations to work out effective address
� Limited address space
![Page 22: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/22.jpg)
Direct Addressing Diagram
Address AOpcode
Instruction
Memory
22
Operand
![Page 23: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/23.jpg)
Indirect Addressing (1)
� Memory cell pointed to by address field contains the address of (pointer to) the operand
� EA = (A)
� Look in A, find address (A) and look there for operand
23
� Look in A, find address (A) and look there for operand
� e.g. ADD (A)
� Add contents of cell pointed to by contents of A to accumulator
![Page 24: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/24.jpg)
Indirect Addressing (2)
� Large address space
� 2n where n = word length
� May be nested, multilevel, cascaded
� e.g. EA = (((A)))
24
� e.g. EA = (((A)))
� Draw the diagram yourself
� Multiple memory accesses to find operand
� Hence slower
![Page 25: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/25.jpg)
Indirect Addressing Diagram
Address AOpcode
Instruction
Memory
Pointer to operand
25
Operand
![Page 26: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/26.jpg)
Register Addressing (1)
� Operand is held in register named in address filed
� EA = R
� Limited number of registers
� Very small address field needed
26
� Very small address field needed
� Shorter instructions
� Faster instruction fetch
![Page 27: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/27.jpg)
Register Addressing (2)
� No memory access
� Very fast execution
� Very limited address space
� Multiple registers helps performance
27
� Multiple registers helps performance
� Requires good assembly programming or compiler writing
� N.B. C programming
� register int a;
� c.f. Direct addressing
![Page 28: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/28.jpg)
Register Addressing Diagram
Register Address ROpcode
Instruction
Registers
28
Operand
![Page 29: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/29.jpg)
Register Indirect Addressing
� C.f. indirect addressing
� EA = (R)
� Operand is in memory cell pointed to by contents of register R
29
register R
� Large address space (2n)
� One fewer memory access than indirect addressing
![Page 30: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/30.jpg)
Register Indirect Addressing Diagram
Register Address ROpcode
Instruction
Memory
30
OperandPointer to Operand
Registers
![Page 31: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/31.jpg)
Displacement Addressing
� EA = A + (R)
� Address field hold two values
� A = base value
� R = register that holds displacement
31
� R = register that holds displacement
� or vice versa
![Page 32: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/32.jpg)
Displacement Addressing Diagram
Register ROpcode
Instruction
Memory
Address A
32
OperandPointer to Operand
Registers
+
![Page 33: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/33.jpg)
Relative Addressing
� A version of displacement addressing
� R = Program counter, PC
� EA = A + (PC)
� i.e. get operand from A cells from current location
33
� i.e. get operand from A cells from current location pointed to by PC
� c.f locality of reference & cache usage
![Page 34: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/34.jpg)
Base-Register Addressing
� A holds displacement
� R holds pointer to base address
� R may be explicit or implicit
� e.g. segment registers in 80x86
34
� e.g. segment registers in 80x86
![Page 35: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/35.jpg)
Indexed Addressing
� A = base
� R = displacement
� EA = A + R
� Good for accessing arrays
35
� Good for accessing arrays
� EA = A + R
� R++
![Page 36: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/36.jpg)
Combinations
� Postindex
� EA = (A) + (R)
� Preindex
36
� Preindex
� EA = (A+(R))
� (Draw the diagrams)
![Page 37: Ec 252 ec-252-l10-instruction sets and addressing modes](https://reader034.vdocuments.site/reader034/viewer/2022052301/554a0c02b4c9058c5d8b45b3/html5/thumbnails/37.jpg)
Stack Addressing
� Operand is (implicitly) on top of stack
� e.g.
� ADD Pop top two items from stackand add
37
and add