3_Przetwarzanie

Transkrypt

3_Przetwarzanie
Little / Big Endian Machines
Podstawy techniki
mikroprocesorowej
ETEW006
15
Word
8 7
High Byte
N+1
Przetwarzanie danych
Typy procesorów
0
Low Byte
15
8 7
Word High Byte
N
0
Low Byte
N+1
N
N+2
N+1 High Byte
Low Byte
Low Byte
High Byte
memory address
N
Andrzej Stępień
Katedra Metrologii Elektronicznej i Fotonicznej
N−1
Algorytm
Endianness
15 8 7 0
High Low
Byte Byte
Word
32-bit microprocessor halfword
ARM core
word
N+1 N
N+2
63
Quardword
N
32 31
0
High Doubleword
Low Doubleword
N+4
N
Double Quardword
64 63
0
High Quardword
Low Quardword
N+8
N
algorytm (algorithm) - przepis
rozwiązania określonego
zagadnienia, sposób postępowania
doprowadzający do rozwiązania
problemu; algorytm złożony jest z:
sekwencja 1
N
– sformułowania problemu do
rozwiązania
0
31
16 15
Doubleword High Word Low Word
24547010.pdf
IA-32 Intel Architecture. Software
Developer’s Manual. Volume 1: Basic
Architecture
127
Big Endian
Little Endian
Optymalizacja, przetwarzanie danych
T
– określenia danych wejściowych i
postaci wyników
sekwencja 2
– przedstawienia działania, jego
struktury w postaci ciągu operacji,
np. arytmetycznych, logicznych,
podstawień itp.
elementami struktury algorytmu są:
– sekwencja
– element wyboru warunku
– pętla umożliwiająca wielokrotną
realizację określonych operacji
warunek 1
sekwencja 3
T
warunek 2
N
Przetwarzanie rozkazów
Przetwarzanie rozkazów – sposób wykonania rozkazu w procesorze:
Optymalizacja kompilatorów:
rozkazy wykonywane przez procesor realizują funkcje, które najczęściej
powtarzają się podczas kompilacji
lista rozkazów dostosowana do potrzeb kompilatorów, a nie własności
procesora
założenia przydatne przy projektowaniu nowych konstrukcji procesorów
Sposób przetwarzania danych - obciążenie rejestrów procesora i pamięci:
register-to-register → przestrzenią roboczą są rejestry ogólnego
przeznaczenia:
– accumulator-based CPU, z akumulatorem związana jest większość
instrukcji arytmetyczno-logicznych i wymiany danych
– register-based CPU (register-to-register), rolę akumulatora pełnią rejestry
ogólnego przeznaczenia
memory-to-memory → bloki pamięci traktowane są jako przestrzeń robocza,
zastępująca rejestry ogólnego przeznaczenia
• podział wykonywanego rozkazu na standardowe fazy:
– pobierania (Ifetch) rozkazu z pamięci i umieszczenia w wewnętrznym
rejestrze rozkazów lub pamięci buforującej,
– dekodowania (Reg/Dec) rozkazu, ustalenie typu wykonywanej operacji,
np. pobrania argumentów,
– wykonania (Exec) rozkazu, np. wymaganej operacji arytmetycznologicznej, obliczenia adresu itp.
– zapisu (Wr) wyniku w rejestrach lub pamięci,
• w przetwarzaniu sekwencyjnym (skalarnym) każda faza wykonywana jest
oddzielnie, niezależnie od pozostałych,
• w przetwarzaniu potokowym, strumieniowym (pipeline processing)
poszczególne fazy różnych rozkazów są w zasadzie wykonywane
równocześnie.
1
Sekwencyjne przetwarzanie rozkazów
Sekwencyjne (skalarne) - każda faza wykonywana jest oddzielnie,
Potokowe przetwarzanie rozkazów
Potokowe (strumieniowe, pipeline processing) - poszczególne fazy
niezależnie od pozostałych.
Cycle
1
Cycle Cycle Cycle
3
4
2
Cycle
5
Ifetch Reg/Dec Exec
Wr
różnych rozkazów są wykonywana równocześnie.
Cycle
1
Cycle Cycle
6
7
Ifetch Reg/Dec Exec
Cycle Cycle Cycle
2
3
4
Ifetch Reg/Dec Exec
Cycle
8
Cycle
9
Wr
Reg/Dec
Exec
Wr
Reg/Dec
wykonania (Exec) rozkazu
Exec
zapisu (Wr) wyniku
Wr
Konflikty przy przetwarzaniu
potokowym
Wr
Cycle
6
Wr
Cycle
7
Ifetch Reg/Dec Exec
Ifetch pobierania (Ifetch) rozkazu
dekodowania (Reg/Dec) rozkazu
Cycle
5
Ifetch Reg/Dec Exec
Ifetch
Ifetch pobierania (Ifetch) rozkazu
Wr
Ifetch Reg/Dec Exec
Cycle
8
Wr
Ifetch Reg/Dec Exec
dekodowania (Reg/Dec) rozkazu
Wr
Ifetch Reg/Dec Exec
Ifetch Reg/Dec
wykonania (Exec) rozkazu
Ifetch
zapisu (Wr) wyniku
Przetwarzanie potokowe - typ R
• zasobów – ten sam zasób wykorzystywany jest przez dwie lub więcej faz
równocześnie (ALU, rejestry lub pamięć):
– każda operacja zapisu do rejestrów lub pamięci może być w konflikcie
z fazą pobrania rozkazu lub argumentów
Instrukcja typu R (dostęp do rejestru) złożona z 4 cykli maszynowych:
• Ifetch:
pobranie kodu instrukcji z pamięci programu
• Reg/Dec: pobranie zawartości rejestru i dekodowanie instrukcji
• Exec:
ALU wykonuje operację na zawartości 2 rejestrów
• Wr:
wpis wartości zmiennej do rejestru
• danych – jeśli argumentem następnego rozkazu jest wynik poprzedniego,
który nie został obliczony:
– wykonanie następnego rozkazu musi być wstrzymane z powodu
niedostępności argumentu
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6
Ifetch Reg/Dec
Exec
Ifetch Reg/Dec
• sterowania – gdy wykonywany jest rozkaz skoku warunkowego zależny
od wskaźników ustalanych przez poprzednie, jeszcze nie zakończone
rozkazy
Przetwarzanie potokowe - LOAD
Instrukcja typu LOAD złożona z 5 cykli maszynowych:
• Ifetch:
pobranie kodu instrukcji z pamięci programu
• Reg/Dec: pobranie zawartości rejestru i dekodowanie instrukcji
• Exec:
obliczenie adresu zmiennej w pamięci danych
• Mem:
odczyt wartości zmiennej z pamięci danych
• Wr:
wpis wartości zmiennej do rejestru
Wr
Exec
Ifetch Reg/Dec
Wr
Exec
Wr
– typ instrukcji znany po jej zdekodowaniu (Ifetch & Reg/Dec)
Konflikt zasobów
• zasobów – ten sam zasób wykorzystywany jest przez dwie lub więcej
faz równocześnie (ALU, rejestry lub pamięć):
– każda operacja zapisu do rejestrów lub pamięci może być w
konflikcie z fazą pobrania rozkazu lub argumentów
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7
Ifetch Reg/Dec
Exec
Ifetch Reg/Dec
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7
Mem
Wr
Exec
Mem
Wr
Exec
Mem
Ifetch Reg/Dec
LOAD
Wr
– instrukcja wykonywana w 5 niezależnych blokach funkcjonalnych
– każda instrukcja korzysta tylko 1 raz z pojedynczego bloku funkcjonalnego
– pobranie kodu następnej instrukcji możliwe po zakończeniu poprzedniego
– czas trwania pojedynczej instrukcji wynosi 5 cykli maszynowych
– średni czas trwania instrukcji w programie wynosi 1 cykl maszynowy
LOAD
typ R
Ifetch Reg/Dec
Exec
Ifetch Reg/Dec
Mem
Wr
Exec
Mem
Wr
Exec
NOP
Wr
Ifetch Reg/Dec
Wr
– w jednej z faz musi wystąpić dodatkowy
cykl oczekiwania
2
Konflikt danych
Eliminacja konfliktów
• danych – jeśli argumentem następnego rozkazu jest wynik poprzedniego,
który nie został obliczony:
– wykonanie następnego rozkazu (zatrzymanie potoku) wstrzymane z
powodu niedostępności argumentu
• czasy realizacji poszczególnych faz mogą się różnić w zależności od
typu wykonywanej operacji,
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6
LOAD
Ifetch Reg/Dec
Exec
Ifetch Reg/Dec
LOAD NOP
NOP
Mem
Wr
Exec
Mem
Wr
Wr
wstrzymanie
Exec
Wr
potoku
Exec
Mem
Ifetch Reg/Dec
LOAD
Ifetch Reg/Dec
• takty zegarowe muszą być tak dobrane, aby dłużej trwające fazy były
wykonywane przez całkowitą liczbę tych taktów, np. jałowe takty
oczekiwania,
Wr
– rozwiązaniem konfliktu jest umieszczenie między rozkazami instrukcji
niezależnej od argumentów, np. NOP lub innej (problem optymalizacji
kompilatorów – rozkazy są wykonywane nie w takiej kolejności jak
zostały napisane w programie)
ARM7 / ARM9
(1/2)
• powielenie niektórych wewnętrznych układów i równoległe
wykonywanie tych samych operacji prowadzi do struktury
superskalarnej,
Thumb only a 16-bit wide system data bus, less
power, smaller footprint, reducing system cost
Debug support
Multiplier (64-bit result)
In-Circuit Emulator interface
• do skrócenia czasu wykonywanych operacji przyczynia się
umieszczenie argumentów w wewnętrznych rejestrach, a nie w pamięci;
procesor musi być wyposażony w dużą liczbę wewnętrznych rejestrów,
• zmniejszeniu liczby rozkazów potrzebnych do wykonania zadania
sprzyja duża długość słowa maszynowego.
ARM7 / ARM9
(2/2)
ARM7TDMI (ARM7TDMI-S)
ARM7 processors have a 3-stage instruction pipeline:
Fetch:
Fetching an instruction from the memory containing the code
Decode:
Decoding the instruction and prepare data path control
signals for next cycle
Execute:
The instruction gets executed on the data path specified and
the result is written back to the destination
Higher performance ARM9 derivatives use a 5-stage pipeline to
compensate for the memory access bottleneck of the 3-stage pipeline:
Fetch:
Fetch next instruction from memory
Decode:
Decode instruction and read register operands
Execute:
Execute instruction
Data:
Access data memory, if required
Write-back: Write the result of the instruction back to the destination
memory location
Architektura procesora typu Bit Slice
każdy blok funkcjonalny tworzą oddzielne układy zwane segmentami, np. ALU,
rejestry
istnieje możliwość wzajemnej współpracy (połączenia) segmentów w celu
zbudowania procesora o zadanej długości słowa, np. dysponując procesorem
4-bitowym można zbudować procesor 8-, 16-, 24- ..-bitowy
mikrokod procesora (microcode) jest pamiętany w pamięci ROM lub szybkiej
pamięci RAM (dynamiczne mikroprogramowanie)
najpopularniejszym procesorem segmentowym jest seria Am2900 (Advanced
Micro Devices), np. Am2901:
– struktura: 4-bitowa ALU, 16x4-bitowa pamięć RAM (rejestry), akumulator Q
– wykonywane operacje: dodawanie z przeniesieniem (addition with carry),
odejmowanie z pożyczką (subtraction with borrow), OR, AND, XOR i XNOR
Fetch
ARM9TDMI
Fetch
Execute
Decode
Decode
Execute
Memory
Write
The maximum clock frequency of the ARM9TDMI core is generally in the
range 1.8 to 2.2 times the clock frequency of the ARM7TDMI core when
compared on the same silicon process.
Reducing the number of cycles for loads and stores gives a significant
improvement in program execution time as typically around 30% of
instructions are loads or stores.
Cechy procesora typu CISC
(1/2)
J. Biernat: Architektura komputerów.
Oficyna Wydawnicza Politechniki Wrocławskiej, Wrocław 2001
CISC (Complex Instruction Set Computer) - procesor:
– o złożonej liście rozkazów mających różny, zmienny format
– z małym zestawem rejestrów strukturalnych (dla użytkownika)
– predefiniowane przeznaczenie rejestrów, np. A (akumulator), rejestry
indeksowe do adresowania pamięci (wiele rozkazów wykonujących
operacje na komórkach pamięci)
– o rozbudowanych trybach adresowania
– argumenty zawarte w: RAM, akumulatorze, zewnętrznych wejściach,
domyślna wartość 0,
trudności z racjonalnym wykorzystaniem zasobów procesora; przy
prostych, elementarnych operacjach wykorzystanie niewielkiej części
zasobów procesora
– wynik operacji: przeniesienie dla innych segmentów (carry-out flag), znak
(sign flag), przekroczenie zakresu (overflow flag), wynik zerowy (zero flag)...
wzrost liczby taktów zegarowych przy wzroście złożoności instrukcji
3
procesor:
– z małym zestawem rejestrów
strukturalnych (dla użytkownika)
– predefiniowane przeznaczenie
rejestrów, np. A (akumulator), rejestry
indeksowe do adresowania pamięci
(wiele rozkazów wykonujących
operacje na komórkach pamięci)
8086
SP
BP
SI
DI
Procesory
DH
DL
CISC
CH
CL
BH
AH
BL
AL
Status
Flags
R7
R7
R7
R6
R7
R6
R6
R5
R6
R5
R5
R4
R5
R4
R4
R3
R4
R3
R3
R2
R3
R2
R2
R1
R2
R1
R1
R0
R1
R0
R0
R0
temp
trudności z racjonalnym wykorzystaniem
zasobów procesora; przy prostych,
elementarnych operacjach wykorzystanie
niewielkiej części zasobów procesora
ALU
RB0..3
A
X
temp
Y
ALU
PSW
różny, zmienny format rozkazów:
0010 1 r r r
ADD
A, Rn
ST72334
C51
B
Procesory CISC
C51 — Formaty instrukcji
A
temp
ALU
CC
0111 011 i
dana
AAA0 0 0 0 1
adres A
ACALL adr_11
1011 0101
adres
rel
MOV
@Ri, #dana
CJNE
A, adr, rel
DPTR
Intel Architecture Software Developer’s Manual.
Volume 2: Instruction Set Reference. Intel, 1997, p.2-1
Procesory CISC
8086 — Formaty instrukcji
Procesory CISC
cykle maszynowe
procesor:
– o złożonej liście rozkazów mających
różny, zmienny format
Instruction
Prefixes
Opcode
ModR/M
SIB
Dispacement
Immediate
wzrost liczby taktów zegarowych przy
wzroście złożoności instrukcji
C51:
– 1 lub 2 cykle maszynowe dla wszystkich instrukcji
Up to four 1 or 2 byte
1 byte
1 byte
Address
Address
prefixes of
opcode (if required) (if required) displacement displacement
1-byte each
of 1, 2, or 4
of 1, 2, or 4
(optional)
bytes or none bytes or none
– 4 cykle maszynowe dla MUL AB oraz DIV AB (TYLKO w
standardzie)
ST7:
7
6 5
Mod
3 2
Reg/
Opcode
0
R/M
7
6 5
Scale
3 2
Index
0
– od 2 do 7 cykli maszynowych dla większości instrukcji
– od 5 do 9 cykli maszynowych dla instrukcji CALL
Base
– 12 cykli maszynowych dla MUL Y,A (brak instrukcji DIV)
SIB (Scale-Index-Base)
ST7 FAMILY. PROGRAMMING MANUAL.
STMicroelectronics, November 2005, p.8-29
Procesory CISC
C51 — dostęp do pamięci
CISC (Complex Instruction Set Computer) - procesor:
Procesory CISC
ST7 — dostęp do pamięci
CISC (Complex Instruction Set Computer) - procesor:
– predefiniowane przeznaczenie rejestrów, np. A (akumulator),
rejestry indeksowe do adresowania pamięci (wiele rozkazów
wykonujących operacje na komórkach pamięci)
– predefiniowane przeznaczenie rejestrów, np. A (akumulator),
rejestry indeksowe do adresowania pamięci (wiele rozkazów
wykonujących operacje na komórkach pamięci)
– o rozbudowanych trybach adresowania
– o rozbudowanych trybach adresowania
wewnętrzna pamięć RAM:
MOV
A, @Ri
lub
MOV
@Ri, addr
zewnętrzna pamięć RAM:
MOVX A, @DPTR
lub
MOVX A, @Ri)
pamięć kodu (stałe):
MOVC
A, @A+PC
; A ← (Ri)IDATA, i=0, 1
; (Ri)IDATA ← (addr)DATA
; A ← (DPTR)XDATA
; A ← (256∗P2 + Ri)XDATA
; A ← (A + PC)CODE
ld
A, $55
; A ← (55h),
ld
A, (X)
; A ← (X),
Direct
Indexed, no offset
ld
A, ($55,X)
; A ← (55h + X),
Indexed & offset
ld
A, [$55]
; A ← ((55h)),
Indirect & pointer
ld
A, ([$55],X)
; A ← ((55h) + X
Indirect indexed & pointer
ld
A, #$55
; A ← 55h,
Immediate
4
www.intel.com: XP SP2 vs. Intel Prescott
Cechy procesora typu CISC
(2/2)
What is "microcode" ?
(1/2)
Anything sufficiently complex that has been handcrafted by humans will
contain errors. Modern software has millions of lines of source code, and
modern processors have millions of transistors, so this applies to both.
statystyka działania systemów operacyjnych i programów
użytkowych wskazuje na częste wykonywanie operacji prostych
i rzadkie złożonych
sterowanie przepływem rozkazów realizowane programowo
(mikro-kody); łatwa realizacja sterowania wykonywania złożonych
rozkazów wymagających różnych okresów czasu
Microsoft Operating Systems arrive on CD that is built to a particular
Service Pack level, and errors found after that was made will be fixed via
patches downloaded from their web site.
Intel processors are manufactured to a particular stepping level, and errors
found after that was made may be fixed via microcode updates sent to the
processor, typically by BIOS on every system startup.
Microcode updates are not stored permanently within the processor; they
vanish when the power is cut, so every boot has to re-assert them.
Intel® IXP1200 Network. Processor Family. Microcode Programmer’s Reference Manual.
INTEL Corporation, March 2002, Part Number: 278304-011
80C196KB User's Guide. INTEL Corporation, November 1990, Order Number: 270651-003
What is
"microcode" ?
(2/2)
microcode engine controls the CPU, allowing it
to perform operations with any byte, word or
double word in the 256 byte register space
instructions to the CPU are taken from the
queue and stored temporarily in the instruction
register
microcode engine decodes the instructions
and generates the correct sequence of events
to have the RALU perform the desired function
MICROCODE
ENGINE
(1/2)
uproszczoną strukturę mikroprocesora, o zredukowanej liście
rozkazów zaproponował John Cocke (IBM Research w Yorktown, New
York, 1974) wychodząc z założenia, że 20% dostępnych instrukcji
zajmuje aż 80% czasu pracy procesora
skrót RISC (Reduced Instruction Set Computer) zaproponował David
Patterson (University of California, Berkeley, 1985)
QUEUE
80C196KB
User's Guide.
INTEL
Corporation,
November 1990,
Order Number:
270651-003
Cechy procesora typu RISC
Cechy procesora typu RISC
(2/2)
prosta struktura wewnętrzna
sterowanie przepływem rozkazów realizowane sprzętowo (brak mikro-kodów,
eliminacja mikroprogramowania)
uproszczenie trybów adresowania, zwykle jednolity format rozkazów (stała
długość kodów instrukcji)
większe możliwości wyboru uniwersalnych rejestrów mikroprocesora
architektura typu load/store, przetwarzanie danych w oparciu o rejestry, a
nie bezpośrednio na zawartości pamięci
szybsze działanie → ideałem jest wykonanie każdej instrukcji w jednym cyklu
procesora → zmniejszenie liczby taktów zegarowych tworzących cykl
maszynowy (przetwarzanie potokowe)
ułatwienie opracowania, wytworzenia i testowania:
– nowego mikroprocesora
– systemu operacyjnego i programu użytkowego
– kompilatora wysokiego poziomu
wykonanie operacji równoważnej wymaga większej liczby rozkazów w
procesorze RISC niż w procesorze CISC
obecnie skrót RISC tłumaczony jako
Rational Instruction Set Computer
idea RISC została wykorzystana w mikroprocesorze SPARC firmy Sun
Microsystem; początek powstania tego co jest znane jako technologia
MIPS, np. w komputerach Silicon Graphics, procesorze Alpha firmy DEC
Procesory RISC
MSP430 (1/2)
Memory Data
Bus – MDB
15
Single-cycle register
operations
16-bit data bus allows
direct manipulation of wordwide arguments
Constant generator (CGx)
provides six most used
immediate values and
reduces code size
R0/PC
Program Counter
R1/SP
Stack Pointer
R2/SR/CG1 Status
R3/CG2 Constant Generator
Large 16-bit register file
reduces fetches to memory
16-bit address bus allows
direct access and
branching throughout entire
memory range
Memory Address
Bus – MAB
0
R4
Zero, Z
Carry, C
Overflow, V
Negative, N
General Purpose
.......................
16
16
R14
General Purpose
R15
General Purpose
dst
scr
16-bit ALU
MCLK
MSP430x4xx Family User’s Guide.
Texas Instruments, SLAU056G, 2007, p.3-3
5
MSP430x4xx Family User’s Guide.
Texas Instruments, SLAU056G, 2007, p.3-18
Procesory RISC
MSP430 (2/2)
Procesory RISC
MSP430 — formaty rozkazów
15
12 11
OP - Code
8
7
6
5
source register Ad B/W
4
As
3
www.ti.com
0
dest. register
Format I
16 rejestrów uniwersalnych:
Address
Modes
Source
– R0 – licznik rozkazów PC
15
0
12 11
0
0
1
OP - Code
As/Ad Addressing Mode
– R1 – wskaźnik stosu SP
7
– R2 – rejestr statusowy SR
lub generator stałych CG1
6
B/W
5
4
Ad
3
0
dest. register
Format II
Address
Modes
Destination
Instructions
Example: Orthogonality for two operand instructions
– R3 – generator stałych CG2
– R4 .. R15 – rejestry ogólnodostępne
Address
Modes
Source
Ad Addressing Mode
27 bazowych + 24 emulowane instrukcje
15
0
13 12
0
10
1 OP - Code
9
8
0
S
Offset
Format III
Contitional and unconditional Jumps (+/– 9 bit Offset)
ortogonalne tryby adresowania - wszystkie
instrukcje ze wszystkimi trybami
adresowania i operandami
Instructions
Example: Non-Orthogonality for two operand instructions
ATmega32A. 8-bit Microcontroller with 32K Bytes
In-System Programmable Flash. Atmel, 2008, p.7
Procesory RISC
AVR — ATmega32
AVR uses a Harvard architecture – with separate memories and buses for
program and data (data space: Register File, I/O memory and internal SRAM
or/and external SRAM if applicable)
instructions in the program memory are executed with a single level
pipelining – while one instruction is being executed, the next instruction is
pre-fetched from the program memory (enables instructions to be executed in
every clock cycle)
fast-access Register File contains 32 x 8-bit general purpose working
registers with a single clock cycle access time – allows single-cycle
Arithmetic Logic Unit (ALU) operation
in a typical ALU operation, two operands are output from the Register
File, the operation is executed, and the result is stored back in the Register
File – in one clock cycle
ATmega32A. 8-bit Microcontroller with 32K Bytes
In-System Programmable Flash. Atmel, 2008, p.10
Procesory RISC
AVR — ATmega32 Working Registers
Clear Register:
CLR Rd
; 0 ≤ d ≤ 31
General
Purpose
Working
Registers
Clear Bits in Register:
CBR Rd,K
; 16 ≤ d ≤ 31,
; 0 ≤ K ≤ 255
six of the 32 registers can be used as three 16-bit indirect address
register pointers for Data Space addressing – efficient address calculations
AVR 8-bit Instruction Set.
Atmel, 0856G–AVR–07/08
Procesory RISC
AVR — ATmega32 Load Memory
R0
R1
R2
...................
R13
R14
R15
R16
R17
...................
R26
R27
R28
R29
R30
R31
$00
$01
$02
$0D
$0E
$0F
first 32 locations of
the user Data Space
$10
$11
$1A
$1B
$1C
$1D
$1E
$1F
Low Byte
High Byte
Low Byte
High Byte
Low Byte
High Byte
X-pointer
register
Y-pointer
register
Z-pointer
register
AVR 8-bit Instruction Set.
Atmel, 0856G–AVR–07/08
Procesory RISC
AVR — ATmega32 Store Memory
Load Indirect from Data Space to Register using Index X, Y or Z:
LD Rd, X
; Rd ← (X), X: Unchanged,
0 ≤ d ≤ 31
LD Rd, Y+
; Rd ← (Y), Y ← Y + 1, Y: Post incremented, 0 ≤ d ≤ 31
LD Rd, – Z
; Z ← Z – 1, Rd ← (Z), Z: Pre decremented, 0 ≤ d ≤ 31
Load Indirect from Data Space to Register using Index Y or Z:
LDD Rd, Y+q ; Rd ← (Y+q),
Y: Unchanged,
;
q: Displacement,
0 ≤ d ≤ 31,
0 ≤ q ≤ 63
Load Direct from Data Space:
LDS Rd, k
; Rd ← (k),
0 ≤ d ≤ 31
0 ≤ k ≤ 65535,
Address
Modes
Destination
Load Indirect from Program Memory:
LPM Rd, Z
; Rd ← (Z), Z: Unchanged,
0 ≤ d ≤ 31
LPM Rd, Z+
; Rd ← (Z), Z ← Z + 1, Z: Post incremented, 0 ≤ d ≤ 31
Store Indirect From Register to Data Space using Index X, Y or Z:
ST X, Rr
; (X) ← Rr,
X: Unchanged,
0 ≤ r ≤ 31
ST Y+, Rr
; (Y) ← Rr,
Y ← Y+1, Y: Post incremented, 0 ≤ r ≤ 31
ST
–Z, Rr
; Z ← Z – 1, (Z) ← Rr, Z: Pre decremented, 0 ≤ r ≤ 31
Store Indirect From Register to Data Space using Index Y or Z:
STD Y+q, Rr ; (Y+q) ← Rr, Y: Unchanged,
0 ≤ r ≤ 31,
;
q: Displacement,
0 ≤ q ≤ 63
Store Direct to Data Space:
STS k, Rr
; (k) ← Rr,
0 ≤ k ≤ 65535,
0 ≤ r ≤ 31
6

Podobne dokumenty