10 Instruction Sets
Download
Report
Transcript 10 Instruction Sets
Chapter 10
Instruction Sets:
Characteristics and Functions
Felipe Navarro
Luis Gomez
Collin Brown
The complete collection of instructions that are
understood by a CPU
Machine Code
Binary
Usually represented by assembly codes
Operation code (Op code)
Source Operand reference
To this
Result Operand reference
Do this
Put the answer here
Next Instruction Reference
When you have done that, do this...
In machine code each instruction has a unique
bit pattern
For human consumption (well, programmers
anyway) a symbolic representation is used
e.g. ADD, SUB, LOAD
Operands can also be represented in this way
ADD A,B
Data processing
Data storage (main memory)
Data movement (I/O)
Program flow control
3 addresses
Operand 1, Operand 2, Result
a = b + c;
May be a forth - next instruction (usually implicit)
Not common
Needs very long words to hold everything
2 addresses
One address doubles as operand and result
a=a+b
Reduces length of instruction
Requires some extra work
Temporary storage to hold some results
1 address
Implicit second address
Usually a register (accumulator)
Common on early machines
0 (zero) addresses
All addresses implicit
Uses a stack
e.g. push a
push b
add
pop c
c=a+b
More addresses
More complex (powerful?) instructions
More registers
Inter-register operations are quicker
Fewer instructions per program
Fewer addresses
Less complex (powerful?) instructions
More instructions per program
Faster fetch/execution of instructions
Operation repertoire
Data types (Characteristics later…)
How many ops?
What can they do?
How complex are they?
Different forms of data to which operations are
performed
Instruction formats
Length of op code field
Number of addresses
Size of various fields
Registers
Number of CPU registers available
Which operations can be performed on which
registers?
Addressing modes (later…)
RISC vs. CISC
Addresses
Numbers
Characters
Integer/floating point
ASCII etc.
Logical Data
Data Transfer
Arithmetic
Logical
Conversion
I/O
System Control
Transfer of Control
Specify
May be different instructions for different
movements
Source
Destination
Amount of data
Addressing mode (later…)
e.g. IBM 390
Or one instruction and different addresses
e.g. VAX
Add, Subtract, Multiply, Divide
Signed Integer (Always provided for)
Floating point (Often provided for)
Packed decimals (Often provided for)
May include
Increment (a++)
Decrement (a--)
Absolute Value (|a|)
Negate (-a)
May involve data transfer operations
Bitwise operations
AND, OR, XOR, NOT, Equals
Conversion
• Ex: Binary to Decimal. Decimal to Binary
Falls into the following categories:
Control and timing
Processor communication
Device communication
Data buffering
Error detection
May be specific instruction
May be done using data movement
instructions (memory mapped)
May be done by a separate controller (DMA)
Executed only in a privileged state
CPU needs to be in specific state
Ring 0 on 80386+
Kernel mode
For operating systems use
Branch
e.g. branch to x if result is zero
Skip
e.g. increment and skip if zero
ISZ Register1
Branch xxxx
ADD A
What order do we read numbers that occupy
more than one byte
e.g. (numbers in hex to make it easy to read)
12345678 can be stored in 4x8bit locations as
follows
•
Provide four instructions to support procedure
call/return
CALL
ENTER
LEAVE
RETURN
•
A new Procedure call/return
• Push the return point on the stack
• Push the current frame pointer on the stack
• Copy the stack pointer as the new value of the frame
pointer
Address
184
185
186
186
i.e. read top down or bottom up?
Value (1)
12
34
56
78
Value(2)
78
56
34
12
The problem is called Endian
The system on the left has the least significant
byte in the lowest address
This is called big-endian
The system on the right has the least
significant byte in the highest address
This is called little-endian
1 What are the typical elements of a machine instruction?
2 What types of locations can hold source and destination
operands?
3 If an instruction contains four addresses, what might be
the purpose of each address?
4 What types of operands are typical in machine
instruction set?
5 What is the difference between an arithmetic shift and a
logic shift?
6 What is the difference between assembly language and
machine language
7 What is the difference between big endian and little
endian?
8
List three places for storing the return address for a
procedure return.
1 Operation code, source operand reference, result
operand reference and next instruction reference.
2
Register and memory.
3
Two operands, one result, and the address of
the next instruction.
4
Address, character, numbers and logical data.
5
In logical shift, the bits of word are shifted left
or right. Arithmetic shift treats the data as a
signed integer and does not shift the sign bit.
6 Assemble language uses symbolic names for
addresses that are not fixed to specific physical
address; this is not the case with machine
language.
7
A multibyte numerical value stored with the
most significant byte in the lowest numerical
address. A multibyte numerical value stored
with the most significant byte in the highest
numerical address.
8
Register, start of procedure, top of stack