Upload
karena
View
27
Download
2
Embed Size (px)
DESCRIPTION
késleltetés. Nem kombinációs áramkörök Óra (clock): ciklusidő (cycle time). Pl.: 500 MHz - 2 nsec. Finomabb felbontás eltolással: 3.21. ábra. A. B. C. 0. 0. 0. 0. 1. 1 0. 0. 0 1. S. S. S. S. #Q. #Q. #Q. #Q. 1. 0. 0 1. 1 0. 0 1. 1. 1 0. 0. Q. Q. Q. Q. R. R. - PowerPoint PPT Presentation
Citation preview
Máté: Architektúrák 3. előadás 1
Nem kombinációs áramkörök
Óra (clock): ciklusidő (cycle time). Pl.: 500 MHz - 2 nsec. Finomabb felbontás eltolással: 3.21. ábra.
késleltetés
AB
C
Máté: Architektúrák 3. előadás 2
Memória: „Emlékszik” az utolsó beállításra.
Tároló: Szint vezérelt (level triggered).
SR tároló (Set Reset latch), 3.22. ábra. Stabil állapot: a két kimenet 0, 1 vagy 1, 0. S (set), R (reset) bemenet. (#Q ≡ Q)
#Q
Q
S
R
0
0
0 0
1
1
#Q
Q
S
R
0
1
0 1
0
0
#Q
Q
S
R
0
1 0
0 1 0
1 0
1 0
#Q
Q
S
R
0
0 1
0 0 1
0 1
0 1
0 állapot: 1 állapot:
Nem stabil állapotok:
A B NOR0 0 10 1 01 0 01 1 0
Máté: Architektúrák 3. előadás 3
#Q
Q
S
R
1
0 1
0 0 1
1 0
1 0
#Q
Q
S
R
0
1 0
1 1 0
0 1
0 1
1-be állítás:
0-ról: 1-ről:
0-ba állítás:
0-ról: 1-ről:
#Q
Q
S
R
1
1
0 1
0
0
#Q
Q
S
R
0
0
1 0
1
1
Máté: Architektúrák 3. előadás 4
Időzített (clocked) SR tároló (3.23. ábra).
Mindkét SR tároló indeterminisztikussá válna, ha S = R = 1 egyszerre fordulna elő.
Időzített D-tároló (3.24. ábra).
#Q
Q
S
R
óra
#Q
Q
D
Máté: Architektúrák 3. előadás 5
Pulzusgenerátor 3.25. ábra.
Flip-flop: élvezérelt (edge triggered), D flip-flop: 3.26. ábra.
Az inverternek van egy pici (1-10 ns) késleltetése (Δ).
a b
cd
abc
b ÉS c
d
Δ
#Q
Q
D
Máté: Architektúrák 3. előadás 6
3.27. ábra: Tárolók és flip-flopok
(a) CK=1, (b) CK=0 szint esetén írja be D-t,
(c) CK emelkedő, (d) CK lefelé menő élénél.
Sokszor S (set, PR preset), R (reset,CLR clear) be- és Q# kimenet is van.
D Q
CK
D Q
>CK
(a) (b)
tárolók
(c) (d)
flip-flopok
D Q
CK
D Q
>CK
CK: órajel
Máté: Architektúrák 3. előadás 7
3.28. ábra: (a) 2 független D flip-flop,
1 2 3 4 5 6 7
14 13 12 11 10 9 8
D Q
>CK #Q
CLR
PR
D Q
>CK #Q
CLR
PR
Vcc
GND
Máté: Architektúrák 3. előadás 8
3.28. ábra: (b) közös CK-val vezérelt 8 bites D flip-flop: regiszter
20 19 18 17 16 15 14 13 12 11
1 2 3 4 5 6 7 8 9 10GND
Vcc
D Q
>CKCLR
D Q>CKCLR
D Q
>CKCLR
D Q>CKCLR
D Q
>CKCLR
D Q>CKCLR
D Q
>CKCLR
D Q>CKCLR
Máté: Architektúrák 3. előadás 9
Memória szervezése
Elvárás: szavak címezhetősége.
3.29. ábra: Négy db három bites szó. Bemenetek: három a vezérléshez, – CS (Chip Select): lapka választás, – RD (ReaD): 1: olvasás, 0: írás választása, – OE (Output Enable): kimenet engedélyezése.
kettő a címzéshez (dekódoló), három a bemenő adatoknak, három adat kimenet.
Máté: Architektúrák 3. előadás 10
D Q
>CK
D Q
>CK
D Q
>CK
D Q
>CK
D Q
>CK
D Q
>CK
D Q
>CK
D Q
>CK
D Q
>CK
D Q
>CK
D Q
>CK
D Q
>CK
dekóder
A0
A1
CSRDOE
input
output
0. szó
1. szó
2. szó
3. szó
210
210
Máté: Architektúrák 3. előadás 11
Memória szervezése
Az igazi memóriáknál a bemenet és kimenet közös (kevesebb lábra van szükség): Nem invertáló és invertáló pufferek (tri-state device, 3.30. ábra).
adat be adat ki
vezérlés
adat be adat ki
vezérlés
nem invertáló puffer invertáló puffer
magas
alacsony
bemenet esetén
Máté: Architektúrák 3. előadás 12
Memórialapkák Előnyös, ha a szavak száma 2 hatvány. 4 Mbit-es memória kétféle szervezése: 3.31. ábra.
A0 A1...
A18
D0 D1...
D7
512K 8 bites
memória
(4M bit)
CS WE OE
A0 A1...
A10D
4096K 1 bites
memória
(4M bit)
CS WE OE
RAS
CAS
19 cím, 8 adat vonal
11 cím, 1 adat vonalRow Address Strobe
Column Address Strobe
Máté: Architektúrák 3. előadás 13
Memórialapkák A jel (bemenet) beállított (asserted) vagy negált.
CS beállított: 1, de CS# beállított: 0
a) 512 K bájtos elrendezés: 19 cím, 8 adat vonal.
b) 2048*2048 bites elrendezés: 11 cím, 1 adat vonal: Bit kiválasztás sor- (RAS: Row Address Strobe) és oszlopindex CAS (Column ...) segítségével. Gyakran alkalmazzák nagyobb memóriáknál, bár a két cím megadása lassíthat.
Nagyobb memóriáknál 1, 4, 8, 16 bites kimeneteket is használnak.
Máté: Architektúrák 3. előadás 14
RAM (Random Access Memory) • Statikus RAM (SRAM). D flip-flop elemekből épül
fel. Amíg áram alatt van, tartja a tartalmát. Elérési idő: néhány nsec (cache-nek jók).
• Dinamikus RAM (DRAM): minden bit egy tranzisztor és egy kondenzátor: néhány msec-onként frissíteni kell, de nagyobb adatsűrűség érhető el. Elérési idő: néhány tíz nsec (főmemóriák). Szinkron: SDRAM (synchronous DRAM).Aszinkron működésű:- régi: FPM (Fast Page Mode) sor-, oszlopcím.- újabb: EDO (Extended Data Output) lehet új
memóriahivatkozás, mielőtt az előző befejeződik.
Máté: Architektúrák 3. előadás 15
ROM (Read-Only Memory)
ROM: gyárilag kialakított tartalom.
PROM (Programmable ROM): a tartalom biztosítékok kiégetésével alakul ki (hasonlóan a PLA-khoz, 3.15. ábra).
EPROM (Erasable PROM): a biztosítékok speciális fénnyel kiolvaszthatók és „kijavíthatók”.
EEPROM: elektromos impulzusokkal.
Flash (fény) memória: törlés és újraírás csak blokkonként.Kb. 10 000 használat után „elkopnak”.
Máté: Architektúrák 3. előadás 16
Az I8086/8088 utasítás rendszereJelőlések : értékadás : felcserélésop, op1, op2: tetszőlegesen választható operandus
(közvetlen, memória vagy regiszter). op1 és op2 közül az egyik regiszter kell legyen!reg: általános, bázis vagy index regisztermem: memória operandusipr: (8 bites) IP relatív cím port: port cím (8 bites eltolás vagy DX)[op]: az op által mutatott cím tartalma
Máté: Architektúrák 3. előadás 17
Adat mozgató utasítások Nem módosítják a flag-eket (kivéve POPF és SAHF)
MOV op1, op2 ; op1 op2 (MOVe)XCHG op1, op2 ; op1 op2 (eXCHanGe), op2 sem
; lehet közvetlen operandusXLAT ; AL [BX+AL] (trans(X)LATe), a
; BX által címzett maximum 256 byte-; os tartomány AL-edik byte-jának ; tartalma lesz AL új tartalma
LDS reg, mem ; reg mem, mem+1; DS mem+2, mem+3 (Load DS)
LES reg, mem ; reg mem, mem+1; ES mem+2, mem+3 (Load ES)
LEAreg, mem ; reg mem effektív (logikai) címe ; (Load Effective Address)
Máté: Architektúrák 3. előadás 18
A veremmel (stack-kel) kapcsolatos adat mozgató utasítások:
PUSH op ; SP SP-2; (SS:SP) op
PUSHF ; (PUSH Flags)
; SP SP-2; (SS:SP) STATUS
POP op ; op (SS:SP); SP SP+2
POPF ; (POP Flags)
; STATUS (SS:SP); SP SP+2
Az Intel 8080-nal való kompatibilitást célozza az alábbi két utasítás:
SAHF ; STATUS alsó 8 bitje AH
LAHF ; AH STATUS alsó 8 bitje
Máté: Architektúrák 3. előadás 19
Aritmetikai utasításokADD op1, op2 ; op1 op1 + op2 (ADD)
Pl.: előjeles/előjel nélküli számok összeadása MOV AX, -1 ; AX=-1 (=0FFFFH)ADD AX, 2 ; AX=1, C=1, O=0
ADC op1, op2 ; op1 op1 + op2 + C ; (ADD with Carry)
Pl.: két szavas összeadás (előjeles/előjel nélkül)ADD AX, BXADC DX, CX ; (DX:AX) = (DX:AX) +
(CX:BX)
INC op ; op op + 1, C változatlan! (INCrement)
Máté: Architektúrák 3. előadás 20
SUB op1, op2 ; op1 op1 - op2 (SUBtraction)
CMP op1, op2 ; flag-ek op1 - op2 szerint (CoMPare)
SBB op1, op2 ; op1 op1 - op2 – C:
; a több szavas kivonást segíti.
DECop ; op op - 1, C változatlan ; (DECrement)
NEG op ; op -op (NEGate)
Máté: Architektúrák 3. előadás 21
Az összeadástól és kivonástól eltérően a szorzás és osztás esetében különbséget kell tennünk, hogy előjeles vagy előjel nélküli számábrázolást alkalmazunk-e. További lényeges eltérés, hogy két 8 bites vagy 16 bites mennyiség szorzata ritkán fér el 8 illetve 16 biten, ezért a szorzás műveletét úgy alakították ki, hogy 8 bites tényezők szorzata 16, 16 biteseké pedig 32 biten keletkezzék:
Szorzásnál op nem lehet közvetlen operandus!
MUL op ; előjel nélküli szorzás (MULtiplicate),
IMUL op ; előjeles szorzás (Integer MULtiplicate).
Ha op 8 bites AX AL op.
Ha op 16 bites (DX:AX) AX op.
Máté: Architektúrák 3. előadás 22
Osztásnál op nem lehet közvetlen operandus!
DIV op ; (DIVide) előjel nélküli osztás,IDIV op ; (Integer DIVide) előjeles osztás,
; A nem 0 maradék előjele megegyezik; az osztóéval.
Ha op 8 bites: AL AX/op hányadosa,AH AX/op maradéka.
Ha op 16 bites: AX (DX:AX)/op hányadosa,DX (DX:AX)/op maradéka.
Osztásnál túlcsordulás azonnal elhal (abortál) a programunk!
Máté: Architektúrák 3. előadás 23
Ha bájtot bájttal vagy szót szóval akarunk osztani, akkor:• Előjel nélküli osztás előkészítése AH illetve DX
nullázásával történik. • Előjeles osztás előkészítésére szolgál az alábbi két előjel
kiterjesztő utasítás: CBW ; (Convert Byte to Word)
; AX AL előjel helyesenCWD ; (Convert Word to Double word)
; (DX:AX) AX előjel helyesen Pozitív számok esetén (az előjel 0) az előjel kiterjesztés az AH illetve a DX regiszter nullázását, negatív számok esetén (az előjel 1) csupa 1-es bittel való feltöltését jelenti.
Az előjel kiterjesztés máskor is alkalmazható.
Máté: Architektúrák 3. előadás 24
; Két vektor skalár szorzata. 1. változat
code segment para public ’code’
assume cs:code, ds:data, ss:stack, es:nothing
skalar proc far
push ds ; visszatérési cím a verembe
xor ax,ax ; ax 0
push ax ; visszatérés offset címe
mov ax,data ; ds a data szegmensre mutasson
mov ds,ax ; sajnos „mov ds,data”
; nem megengedett
; A
Máté: Architektúrák 3. előadás 25
mov cl,n ; cl n, 0 n 255
xor ch,ch ; cx = n szavasan
xor dx,dx ; az eredmény ideiglenes helye
JCXZ kesz ; ugrás a kesz címkére,
; ha CX (=n) = 0
xor bx,bx ; bx 0,
; bx-et használjuk indexezéshez
Máté: Architektúrák 3. előadás 26
ism: mov al,a[bx] ; al a[0], később a[1], ...
imul b[bx] ; ax a[0]b[0], a[1]b[1], ...
add dx,ax ; dx részösszeg
inc bx ; bx bx+1, az index növelése
; B
dec cx ; cx cx-1, (vissza)számlálás
JCXZ kesz ; ugrás a kész címkére, ha cx=0
jmp ism ; ugrás az ism címkére
kesz: mov ax,dx ; a skalár szorzat értéke ax-ben
; C
Máté: Architektúrák 3. előadás 27
call hexa ; az eredmény kiírása
; hexadecimálisan
mov si,offset kvse ; kocsi vissza soremelés
call kiiro ; kiírása
ret ; vissza az Op. rendszerhez
skalar endp ; a skalár eljárás vége
; D
Máté: Architektúrák 3. előadás 28
hexa proc ; ax kiírása hexadecimálisanxchg ah,al ; ah és al felcserélésecall hexa_b ; al (az eredeti ah) kiírásaxchg ah,al ; ah és al visszacserélésecall hexa_b ; al kiírásaret ; visszatérés
hexa endp ; a hexa eljárás vége; ----------------------------------------------------------hexa_b proc ; al kiírása hexadecimálisan
push cx ; mentés a verembemov cl,4 ; 4 bit-es rotálás előkészítéseROR al,CL ; az első jegy az alsó 4 bitencall h_jegy ; az első jegy kiírása ROR al,CL ; a második jegy az alsó 4 bitencall h_jegy ; a második jegy kiírása pop cx ; visszamentés a verembőlret ; visszatérés
hexa_b endp ; a hexa_b eljárás vége
Máté: Architektúrák 3. előadás 29
h_jegy proc ; hexadecimális jegy kiírásapush ax ; mentés a verembeAND al,0FH ; a felső 4 bit 0 lesz,
; a többi változatlanadd al,’0’ ; + 0 kódjacmp al,’9’ ; 9 ?JLE h_jegy1 ; ugrás h_jegy1 -hez, ha igenadd al,’A’-’0’-0AH ; A-F hexadecimális jegyek
; kialakításah_jegy1: mov ah,14 ; BIOS szolgáltatás előkészítése
int 10H ; BIOS hívás: karakter kiíráspop ax ; visszamentés a verembőlret ; visszatérés
h_jegy endp ; a hexa_b eljárás vége
Máté: Architektúrák 3. előadás 30
kiiro proc ; szöveg kiírás (DS:SI)-tőlpush axcld
ki1: lodsb ; ala következő karaktercmp al, 0 ; al =? 0je ki2 ; ugrás a ki2 címkéhez, ha al=0mov ah,14 ; BIOS rutin paraméterezéseint 10H ; az AL-ben lévő karaktert
; kiírja a képernyőrejmp ki1 ; a kiírás folytatása
ki2: pop axret ; visszatérés a hívó programhoz
kiiro endp ; a kiíró eljárás vége; ----------------------------------------------------------code ends ; a code szegmens vége
Máté: Architektúrák 3. előadás 31
data segment para public ’data’n db 3a db 1, 2, 3b db 3, 2, 1kvse db 13, 10, 0 ; kocsi vissza, soremelésdata ends ; a data szegmens vége; ==========================================stack segment para stack ’stack’
dw 100 dup (?) ; 100 word legyen a veremstack ends ; a stack szegmens vége; ==========================================
end skalar ; modul vége, ; a program kezdő címe: skalar
Máté: Architektúrák 3. előadás 32
Egyszerűsítési lehetőség:
; B
dec cx ; cx cx-1, (vissza)számlálás
JCXZ kesz ; ugrás a kész címkére, ha cx=0
jmp ism ; ugrás az ism címkére
kesz: mov ax,dx ; a skalár szorzat értéke ax-ben
helyett:
; B
LOOP ism ; ugrás az ism címkére,
; ha kell ismételni
kesz: mov ax,dx ; a skalár szorzat értéke ax-ben
Máté: Architektúrák 3. előadás 33
Annak érdekében, hogy a skalárszorzatot kiszámító program ne rontson el regisztereket, kívánatos ezek mentése:
; A
PUSH BX ; mentés
PUSH CX
PUSH DX
és visszamentése:
POP DX ; visszamentés
POP CX
POP BX
; C
Máté: Architektúrák 3. előadás 34
A paraméterek szabványos helyen történő átadása; Két vektor skalár szorzata. 2. változat. . .; A; ELJÁRÁS HÍVÁS A PARAMÉTEREK ; SZABVÁNYOS HELYEN TÖRTÉNŐ ÁTADÁSÁVAL
CALL SKAL ; ELJÁRÁS HÍVÁS; eredmény az AX regiszterben
; Ccall hexa ; az eredmény kiírásamov si,offset kvse ; kocsi vissza, soremelés call kiiro ; kiírása
. . .ret ; vissza az Op. rendszerhez
skalar endp ; a skalár eljárás vége
Máté: Architektúrák 3. előadás 35
SKAL PROC ; KÖZELI (NEAR) ELJÁRÁS ; KEZDETE
PUSH BX ; MENTÉSEK
PUSH CX
PUSH DX
mov cl,n ; cl n, 0 n 255
xor ch,ch ; cx = n szavasan
xor dx,dx ; az eredmény ideiglenes helye
jcxz kesz ; ugrás a kesz címkére, ha n=0
xor bx,bx ; bx 0,
; bx-et használjuk indexezéshez
Máté: Architektúrák 3. előadás 36
ism: mov al,a[bx] ; al a[0], később a[1], ...imul b[bx] ; ax a[0]b[0], a[1]b[1],...add dx,ax ; dx részösszeginc bx ; bx bx+1, az index növelése
; BLOOP ism ; ugrás az ism címkére,
; ha kell ismételnikesz: mov ax,dx ; a skalár szorzat értéke ax-ben
POP DX ; VISSZAMENTÉSEKPOP CXPOP BXRET ; VISSZATÉRÉS A HÍVÓ
; PROGRAMHOZSKAL ENDP ; A SKAL ELJÁRÁS VÉGE; D
Csak az a és b vektor skalár szorzatát tudja kiszámolni!
Máté: Architektúrák 3. előadás 37
A paraméterek regiszterekben történő átadása ; Két vektor skalár szorzata. 3. változat. . .; A; ELJÁRÁS HÍVÁS A PARAMÉTEREK ; REGISZTEREKBEN TÖRTÉNŐ ÁTADÁSÁVAL
MOV CL, n ; PARAMÉTER BEÁLLÍTÁSOKXOR CH, CH ; CX = n, ÉRTÉKMOV SI,OFFSET a ; SI a OFFSET CÍMEMOV DI,OFFSET b ; DI b OFFSET CÍMEcall skal ; eljárás hívás
; eredmény az ax regiszterbencall hexa ; az eredmény kiírásamov si,offset kvse ; kocsi vissza, soremelés call kiiro ; kiírása
. . .ret ; visszatérés az Op. rendszerhez
skalar endp ; a skalár eljárás vége
Máté: Architektúrák 3. előadás 38
skal proc ; Közeli (NEAR) eljárás kezdete
push bx ; mentések
push cx
push dx
xor dx,dx ; az eredmény ideiglenes helye
jcxz kesz ; ugrás a kesz címkére, ha n=0
xor bx,bx ; bx 0,
; bx-et használjuk indexezéshez
Máté: Architektúrák 3. előadás 39
ism: mov al,[SI+BX] ; FÜGGETLEN a-tólimul BYTE PTR [DI+BX]; FÜGGETLEN b-től
; csak „BYTE PTR”-ből derül ki, hogy 8 bites a szorzásadd dx,ax ; dx részösszeginc bx ; bx bx+1, az index növeléseloop ism ; ugrás az ism címkére,
; ha kell ismételnikesz: mov ax,dx ; a skalár szorzat értéke ax-ben
pop dx ; visszamentésekpop cxpop bxret ; visszatérés a hívó programhoz
skal endp ; a skal eljárás vége; D. . .
Így csak kevés paraméter adható át!
Máté: Architektúrák 3. előadás 40
; Két vektor skalár szorzata. 4. változat. . .; A; ELJÁRÁS HÍVÁS A PARAMÉTEREK ; VEREMBEN TÖRTÉNŐ ÁTADÁSÁVAL
MOV AL,n ; AL-t nem kell menteni, mertXOR AH,AH ; AX-ben kapjuk az eredménytPUSH AX ; AX=n a verembeMOV AX,OFFSET a ; AX a OFFSET címePUSH AX ; a verembeMOV AX,OFFSET b ; AX b OFFSET címePUSH AX ; a verembe
A verembe került: n értéke, a címe, b címe paraméterek
Máté: Architektúrák 3. előadás 41
call skal ; eljárás hívás; eredmény az ax regiszterben
ADD SP,6 ; paraméterek ürítése a veremből . . .
ret ; visszatérés az Op. rendszerhez
skalar endp ; a skalár eljárás vége
call skal
Hatására a verembe került a visszatérési cím
Máté: Architektúrák 3. előadás 42
skal proc ; Közeli (near) eljárás kezdetePUSH BP ; BP értékét mentenünk kellMOV BP,SP ; BP SP,
; a stack relatív címzéshezPUSH SI ; mentésekPUSH DIpush bxpush cx push dx
A verem tartalma: n értéke, a címe, b címe paraméterek visszatérési cím, bp, si, di, bx, cx, dx mentett regiszterek
Máté: Architektúrák 3. előadás 43
A verem tartalma:
n értéke, a címe, b címe paraméterek visszatérési cím, bp, si, di, bx, cx, dx mentett regiszterek
(SS:SP) dx+ 2 cx+ 4 bx+ 6 di+ 8 si+10 bp - - - - - - - - - - - - - - - - - - - - - (SS:BP)+12 visszatérési cím + 2
+14 b címe + 4+16 a címe + 6+18 n értéke + 8. . . korábbi mentések . . .
Máté: Architektúrák 3. előadás 44
+10 bp - - - - - - - - - - - - - - - - - - - - - (SS:BP)+12 visszatérési cím + 2
+14 b címe + 4+16 a címe + 6+18 n értéke + 8. . . korábbi mentések . . .
MOV SI,6[BP] ; SI az egyik vektor címeMOV DI,4[BP] ; DI a másik vektor címeMOV CX,8[BP] ; CX a dimenzió értékexor dx,dx ; az eredmény ideiglenes helyejcxz kesz ; ugrás a kesz címkére, ha n=0xor bx,bx ; bx 0, indexezéshez
Máté: Architektúrák 3. előadás 45
ism: mov al,[si+bx] ; független a-tólimul byte ptr [di+bx] ; független b-től
; csak „byte ptr”-ből derül ki, hogy 8 bites a szorzásadd dx,ax ; dx részösszeginc bx ; bx bx+1, az index növeléseloop ism ; ugrás az ism címkére,
; ha kell ismételnikesz: mov ax,dx ; a skalár szorzat értéke ax-ben
Máté: Architektúrák 3. előadás 46
pop dx ; visszamentésekpop cxpop bxPOP DIPOP SIPOP BPret ; visszatérés a hívó programhoz
skal endp ; a skal eljárás vége; D. . .
ADD SP,6 ; paraméterek ürítése a veremből
helyett más megoldás: RET 6 ; visszatérés a hívó programhoz
; verem ürítéssel: . . . SP = SP + 6
Máté: Architektúrák 3. előadás 47
Lokális adat terület, rekurzív és re-entrant eljárásokHa egy eljárás működéséhez lokális adat területre, munkaterületre van szükség, és a működés befejeztével a munkaterület tartalma fölösleges, akkor a munkaterületet célszerűen a veremben alakíthatjuk ki. A munkaterület lefoglalásának ajánlott módja:
. . . proc . . .PUSH BP ; BP értékének mentéseMOV BP,SP ; BP SP,
; a stack relatív címzéshezSUB SP,n ; n a munkaterület byte-jainak
száma. . . ; további regiszter mentések
Máté: Architektúrák 3. előadás 48
Lokális adat terület (NEAR eljárás esetén)
(SS:SP) lokális adat terület . . .+ 2 . . .. . . . . .. . . – 2
bp - - - - - - - - - - - - - - - - - - - - - (SS:BP)visszatérési cím + 2
paraméterek . . .korábbi mentések . . .
A munkaterület negatív displacement érték mellett stack relatív címzéssel érhető el. (A veremben átadottparaméterek ugyancsak stack relatív címzéssel, de pozitív displacement érték mellett érhetők el.)
Máté: Architektúrák 3. előadás 49
A munkaterület felszabadítása visszatéréskor a
. . . ; visszamentések
MOV SP,BP ; a munkaterület felszabadítása
POP BP ; BP értékének visszamentése
ret . . . ; visszatérés
utasításokkal történhet.
Máté: Architektúrák 3. előadás 50
Rekurzív és re-entrant eljárások
Egy eljárás rekurzív, ha önmagát hívja közvetlenül, vagy más eljárásokon keresztül.
Egy eljárás re-entrant, ha többszöri belépést tesz lehetővé, ami azt jelenti, hogy az eljárás még nem fejeződött be, amikor újra felhívható. A rekurzív eljárással szemben a különbség az, hogy a rekurzív eljárásban „programozott”, hogy mikor történik az eljárás újra hívása, re-entrant eljárás esetén az esetleges újra hívás ideje a véletlentől függ. Ez utóbbi esetben azt, hogy a munkaterületek ne keveredjenek össze, az biztosítja, hogy újabb belépés csak másik processzusból képzelhető el, és minden processzus saját vermet használ.
Máté: Architektúrák 3. előadás 51
Rekurzív és re-entrant eljárások
Ha egy eljárásunk készítésekor betartjuk, hogy az eljárás a paramétereit a vermen keresztül kapja, kilépéskor visszaállítja a belépéskori regiszter tartalmakat – az esetleg eredményt tartalmazó regiszterek kivételével –, továbbá a fenti módon kialakított munkaterületet használ, akkor az eljárásunk rekurzív is lehet, és a többszöri belépést is lehetővé teszi (re-entrant).
Máté: Architektúrák 3. előadás 52
FeladatokMilyen bemenetei vannak az ALU-nak?Milyen nem kombinációs áramköröket ismer?Kombinációs áramkör-e az ALU?Hogyan csökkenthető az összeadásnál az átvitelekből
származó idő?Magyarázza el a pulzus generátor működését!Mi a különbség a tároló és a flip-flop között? Mi a különbség a SRAM és a DRAM között?Mi az EPROM?Mi az EEPROM?
Máté: Architektúrák 3. előadás 53
Feladatok
Milyen adat mozgató utasításokat ismer?
Milyen aritmetikai utasításokat ismer?
Mit csinál az IDIV utasítás?
Mit csinál az CWD utasítás?
Miért hibás az
imul [di+bx]
utasítás?
Milyen paraméter átadási módszereket ismer?
Máté: Architektúrák 3. előadás 54
Feladatok
Alakítsa át a skalárszorzat kiszámításának négy változatát, hogy előjeles/előjel nélküli bájt/word vektor elemeit összegezze (számítson arra, hogy az eredmény nem fér el egy bájton/word-ön)!
Készítsen eljárást 2 jegyű előjeles/előjel nélküli szám decimálissá konvertálására és kiírására!
Készítsen eljárást előjeles/előjel nélküli word decimálissá konvertálására és kiírására!
Máté: Architektúrák 3. előadás 55
Feladatok
Hogy alakíthatunk ki lokális adat területet?
Mi a rekurzív és a re-entrant eljárás?
Készítsen rekurzív eljárást n! kiszámítására!
Készítsen rekurzív eljárást a és b legnagyobb közös osztójának meghatározására (euklideszi algoritmus)!