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