Aritmetikai áramkörök

Slides:



Advertisements
Hasonló előadás
1 Számítógépek felépítése 9. előadás I/O rendszerek.
Advertisements

Memóriák típusai, jellemzői
A számítógép felépítése
Neumann-elvek A számítógép legyen teljesen elektronikus, külön vezérlő és végrehajtó egységgel. Kettes számrendszert használjon. Az adatok és a programok.
Alapvető digitális logikai áramkörök
A mikroprocesszor 1. rész.
Máté: Architektúrák3. előadás1 Alapvető digitális logikai áramkörök Integrált áramkör (IC, Integrated Circuit, chip, lapka) 5x5 mm 2 szilícium darab kerámia.
Számítógépek felépítése 3. előadás CPU, utasítás ciklus, címzés
Adatbázisrendszerek elméleti alapjai 5. előadás
Belső memóriák tipusai
Alaplapra integrált csatlakozók
Nem kombinációs áramkörök
Máté: Architektúrák3. előadás1 Alapvető digitális logikai áramkörök Integrált áramkör (IC, Integrated Circuit, chip, lapka) 5x5 mm 2 szilícium darab kerámia.
Máté: Architektúrák2. előadás1 Központi memória (2.9. ábra) A programok és adatok tárolására szolgál. Bit: a memória alapegysége, egy 0-t vagy 1-et tartalmazhat.
A verem működése fpga-n
Alapfogalmak Hardver:  A számításokat végző fizikai-technikai rendszer (kézzel fogható, fizikai termékek) Szoftver:  Programok, programrendszerek (szellemi.
A memória.
Alapfogalmak Adat: fogalmak, tények, jelenségek olyan formalizált ábrázolása, amely emberi vagy gépi értelmezésre, feldolgozásra, közlésre alkalmas. Információ:
Memóriák.
Mikroszámítógépek I 8085 processzor.
Mikroszámítógépek I 8085 processzor.
PIC processzor és környezete
CISC - RISC processzor jellemzők
A memória.
Fuzzy halmazok. 4. előadás2 3 4 Egy hagyományos halmazEgy Fuzzy halmaz.
Felkészítő tanár: Széki Tibor tanár úr
A memóriák típusai, jellemzői
A mikrovezérlők világa
Tematikus fogalomtár FÉLVEZETŐS TÁRAK
MIÉRTEK A SZÁMÍTÁSTECHNIKÁBAN
A számítógép felépítése (funkcionális)
MI A MEMÓRIA? A memória tulajdonképpen egy logikai áramkör, ami adatok megőrzésére alkalmas. Az adat számunkra most azt jelenti, hogy van-e jel vagy nincs.
Máté: Architektúrák4. előadás1 ; B = A n-dik hatványa, ; A és n előjel nélküli byte, B word ; Feltétel: A n-1 –dik hatványa elfér AL –ben. movcl, n; a.
Számítógép architektúra Címzésmódok. 2007Címzésmódok2-21 Operandusok egy operandus hossza lehet: –1 byte –2 byte (szó) –4 byte egy operandus lehet: –az.
Számítógép architektúra
modul Szövegfeldolgozás Speciális informatikai feladatok.
A Memória.
A mikroszámítógép felépítése
Mikrokontroller (MCU, mikroC)
Egy második generációs gép (az IBM 7094) felépítése
Egy első generációs gép (az IAS) felépítése
A Mikroprocesszor Harmadik rész.
A központi egység Informatika alapjai Készítette: Senkeiné B. Judit.
Mikroprocesszor.
HARDVER IT ALAPFOGALMAK. NEUMANN-ELVŰ SZÁMÍTÓGÉPEK FELÉPÍTÉSE Központi feldolgozó egység Háttértárolók Adatbeviteli eszközök (Input) Operatív tár (Memória)
Osztott adatbázisok.  Gyors ismétlés: teljes redukáló  Teljes redukáló költsége  Természetes összekapcsolások vetítése  Természetes összekapcsolások.
Alaplapra integrált csatlakozók
Ismerkedjünk tovább a számítógéppel
Máté: Architektúrák6. előadás1 Logikai utasítások Bitenkénti logikai műveleteket végeznek. 1 az igaz, 0 a hamis logikai érték. ANDop1,op2; op1  op1 &
Írja fel a tizes számrendszerbeli
IT ALAPFOGALMAK HARDVER.
Mikroprocesszorok (Microprocessors, CPU-s)
HEFOP 3.3.1–P /1.0A projekt az Európai Unió társfinanszírozásával, az Európa terv keretében valósul meg. 1 Számítógép architektúrák dr. Kovács.
ifin811/ea1 C Programozás: Hardver alapok áttekintése
Memóriakezelés feladatok Feladat: 12 bites címtartomány. 0 ~ 2047 legyen mindig.
Számítógépek felépítése 4. előadás ALU megvalósítása, vezérlő egység
1 Számítógépek felépítése 5. előadás a CPU gyorsítása, pipeline, cache Dr. Istenes Zoltán ELTE-TTK.
Alapvető digitális logikai áramkörök
Készítette:Mohamed Ahmed Azmi 9.A. Random Access Memory Alap tudnivalók a RAM -ról: Írható és olvasható memória. Feladata ideiglenes adatok tárolása,
1 A számítógépek felépítése jellemzői, működése. 2 A számítógép feladata Az adatok Bevitele Tárolása Feldolgozása Kivitele (eredmény megjelenítése)
1 A számítógépek tárolói. 2 Memória Memóriaszó  A tárak olyan egységei, melyek egyetlen művelettel kezelhetők.  A legrövidebb memóriaszó a byte (bájt)
Adatok tárolása. Tárolók Félvezető tárak RAM Operatív tár Cache tár Regiszterek CMOS RAM ROM BIOS Mágnestárak Mágneslemez Hajlékony lemez Merevlemez MágnesszalagMágneskártya.
Sz&p prof.
CPU (Processzor) A CPU (Central Processing Unit – Központi Feldolgozó Egység) a számítógép azon egysége, amely értelmezi az utasításokat és vezérli.
RAM (Random Access Memory)
Információtechnológiai alapismeretek
Neumann elvek és a Neumann elvű számítógép felépítése
Építsünk Processzort Avagy mi is kell hozzá.
A számítógép működésének alapjai
Számítógépek felépítése 9. előadás I/O rendszerek
Előadás másolata:

Aritmetikai áramkörök Léptető (shifter): 3.16. ábra, C=0: balra, 1: jobbra. Összeadók: Fél-összeadó (half adder, 3.17. ábra), Teljes összeadó (full adder, 3.18. ábra). - átvitel továbbterjesztő (ripple carry adder), - átvitel kiválasztó (carry select adder) eljárás. Aritmetikai-logikai egység: bitszelet (bit slice, 3.19. ábra), ALU (Arithmetic Logic Unit, 3.20. ábra). Az F0, F1 vezérlő jelektől függően ÉS, VAGY (+), NEGÁCIÓ vagy ÖSSZEADÁS. INC bemenet. 151-155 Máté: Architektúrák 3. előadá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. Memória: „Emlékszik” az utolsó bemenetre. 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, R bemenet. Időzített (clocked) SR tároló (3.23. ábra). Időzített D-tároló (3.24. ábra). Mindkét SR tároló indeterminisztikussá válna, ha S = R = 1 egyszerre fordulna elő. 156-160 Máté: Architektúrák 3. előadás

Az inverternek van egy pici (1-10 ns) késleltetése. Pulzusgenerátor 3.25. ábra. Az inverternek van egy pici (1-10 ns) késleltetése. Flip-flop: élvezérelt (edge triggered), D flip-flop: 3.26. ábra. 3.27. ábra: Tárolók (a, b) és flip-flopok (c, d) :. CK: órajel. (a) CK=1, (b) CK=0 esetén írja be D-t, (c) CK emelkedő, (d) CK lefelé menő élénél. Sokszor S (PR), R (CLR) be- és Q# kimenet is van. 3.28. ábra: (a) 2 független D flip-flop, (b) közös CK-val vezérelt 8 D flip-flop: regiszter. 160-162 Máté: Architektúrák 3. előadás

CS (Chip Select): lapka választás, Memória szervezése Elvárás: szavak címezhetősége. 3.29. ábra: Négy db három bites szó. Nyolc bemenet: három a vezérléshez, kettő a címzéshez (dekódoló), három a bemenő adatoknak, három adat kimenet. 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. 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 devices, 3.30. ábra). 162-166 Máté: Architektúrák 3. előadás

Előnyös, ha a szavak száma 2 hatvány. 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. A jel beállított (asserted) vagy negált. ( vagy #). 512 K*8-as elrendezés: 19 cím, 8 adat vonal. 2048*2048*1-es elrendezés: 11 cím, 1 adat vonal: Bit kiválasztás egy sor- (RAS: Row Address Strobe) és egy 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. 166-168 Máté: Architektúrák 3. előadás

RAM (Random Access Memory, 3.32. ábra) 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. 168-169 Máté: Architektúrák 3. előadás

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”. Összefoglalás: 3.32. ábra. 169-170 Máté: Architektúrák 3. előadás

Az I8086/8088 utasítás rendszere Jelőlések  : értékadás  : felcserélés op, 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 regiszter mem: memória operandus ipr: (8 bites) IP relarív cím port: port cím (8 bites eltolás vagy DX) [op]: az op által mutatott cím tartalma A20 Máté: Architektúrák 3. előadás

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 operandus XLAT ; 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) LEA reg, mem ; reg  mem effektív (logikai) címe ; (Load Effective Address) A20 Máté: Architektúrák 3. előadás

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: LAHF ; AH  STATUS alsó 8 bitje SAHF ; STATUS alsó 8 bitje  AH A21 Máté: Architektúrák 3. előadás

Aritmetikai utasítások ADD 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, BX ADC DX, CX ; (DX:AX) = (DX:AX) + (CX:BX) INC op ; op  op + 1, C változatlan! (INCrement) A21-22 Máté: Architektúrák 3. előadás

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. DEC op ; op  op - 1, C változatlan (DECrement) NEG op ; op  -op (NEGate) A23 Máté: Architektúrák 3. előadás

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: Ha op 8 bites AX  AL  op. Ha op 16 bites (DX:AX)  AX  op. 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), A23-24 Máté: Architektúrák 3. előadás

Osztásnál op nem lehet közvetlen operandus! 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. 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. Osztásnál túlcsordulás  azonnal elhal (abortál) a programunk! A24-25 Máté: Architektúrák 3. előadás

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 helyesen CWD ; (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. A24 Máté: Architektúrák 3. előadás

; 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 A26 Máté: Architektúrák 3. előadás

xor ch,ch ; cx = n szavasan xor dx,dx ; az eredmény ideiglenes helye 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 A26 Máté: Architektúrák 3. előadás

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 A26-27 Máté: Architektúrák 3. előadás

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 A27 Máté: Architektúrák 3. előadás

hexa proc ; ax kiírása hexadecimálisan xchg ah,al ; ah és al felcserélése call hexa_b ; al (az eredeti ah) kiírása xchg ah,al ; ah és al visszacserélése call hexa_b ; al kiírása ret ; 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 verembe mov cl,4 ; 4 bit-es rotálás előkészítése ROR al,CL ; az első jegy az alsó 4 biten call h_jegy ; az első jegy kiírása ROR al,CL ; a második jegy az alsó 4 biten call h_jegy ; a második jegy kiírása pop cx ; visszamentés a veremből hexa_b endp ; a hexa_b eljárás vége A27 Máté: Architektúrák 3. előadás

h_jegy proc ; hexadecimális jegy kiírása push ax ; mentés a verembe AND al,0FH ; a felső 4 bit 0 lesz, ; a többi változatlan add al,’0’ ; + 0 kódja cmp al,’9’ ;  9 ? JLE h_jegy1 ; ugrás h_jegy1 -hez, ha igen add al,’A’-’0’-0AH ; A-F hexadecimális jegyek ; kialakítása h_jegy1: mov ah,14 ; BIOS szolgáltatás előkészítése int 10H ; BIOS hívás: karakter kiírás pop ax ; visszamentés a veremből ret ; visszatérés h_jegy endp ; a hexa_b eljárás vége A27 Máté: Architektúrák 3. előadás

kiiro proc ; szöveg kiírás (DS:SI)-től push ax cld ki1: lodsb ; ala következő karakter cmp al, 0 ; al =? 0 je ki2 ; ugrás a ki2 címkéhez, ha al=0 mov ah,14 ; BIOS rutin paraméterezése int 10H ; az AL-ben lévő karaktert ; kiírja a képernyőre jmp ki1 ; a kiírás folytatása ki2: pop ax ret ; visszatérés a hívó programhoz kiiro endp ; a kiíró eljárás vége ; ---------------------------------------------------------- code ends ; a code szegmens vége A27-28 Máté: Architektúrák 3. előadás

data segment para public ’data’ n db 3 a db 1, 2, 3 b db 3, 2, 1 kvse db 13, 10, 0 ; kocsi vissza, soremelés data ends ; a data szegmens vége ; ========================================== stack segment para stack ’stack’ dw 100 dup (?) ; 100 word legyen a verem stack ends ; a stack szegmens vége end skalar ; modul vége, ; a program kezdő címe: skalar A28 Máté: Architektúrák 3. előadás

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 helyett: LOOP ism ; ugrás az ism címkére, ; ha kell ismételni A28 Máté: Architektúrák 3. előadás

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 A28-29 Máté: Architektúrák 3. előadás

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 call hexa ; az eredmény kiírása mov si,offset kvse ; kocsi vissza, soremelés call kiiro ; kiírása ; C ret ; vissza az Op. rendszerhez skalar endp ; a skalár eljárás vége A29-30 Máté: Architektúrák 3. előadás

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 A30 Máté: Architektúrák 3. előadás

Csak az a és b vektor skalár szorzatát tudja kiszámolni! 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 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 POP DX ; VISSZAMENTÉSEK POP CX POP BX RET ; VISSZATÉRÉS A HÍVÓ ; PROGRAMHOZ SKAL ENDP ; A SKAL ELJÁRÁS VÉGE ; D Csak az a és b vektor skalár szorzatát tudja kiszámolni! A30 Máté: Architektúrák 3. előadás

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ÁSOK XOR CH, CH ; CX = n, ÉRTÉK MOV SI,OFFSET a ; SI  a OFFSET CÍME MOV DI,OFFSET b ; DI  b OFFSET CÍME call skal ; eljárás hívás ; eredmény az ax regiszterben call hexa ; az eredmény kiírása mov 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 A31 Máté: Architektúrák 3. előadás

skal proc ; Közeli (NEAR) eljárás kezdete push bx ; mentések push cx push dx xor bx,bx ; bx  0, ; bx-et használjuk indexezéshez xor dx,dx ; az eredmény ideiglenes helye jcxz kesz ; ugrás a kesz címkére, ha n=0 A31 Máté: Architektúrák 3. előadás

Így csak kevés paraméter adható át! ism: mov al,[SI+BX] ; FÜGGETLEN a-tól imul BYTE PTR [DI+BX]; FÜGGETLEN b-től ; csak „BYTE PTR”-ből derül ki, hogy 8 bites a szorzás add dx,ax ; dx  részösszeg inc bx ; bx  bx+1, az index növelése 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 pop dx ; visszamentések pop cx pop bx ret ; 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! A31-32 Máté: Architektúrák 3. előadás

; 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, mert XOR AH,AH ; AX-ben kapjuk az eredményt PUSH AX ; AX=n a verembe MOV AX,OFFSET a ; AX  a OFFSET címe PUSH AX ; a verembe MOV AX,OFFSET b ; AX  b OFFSET címe A verembe került: n értéke, a címe, b címe paraméterek A32 Máté: Architektúrák 3. előadás

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 A verembe került call skal hatására a visszatérési cím A32 Máté: Architektúrák 3. előadás

skal proc ; Közeli (near) eljárás kezdete PUSH BP ; BP értékét mentenünk kell MOV BP,SP ; BP  SP, ; a stack relatív címzéshez PUSH SI ; mentések PUSH DI push bx push 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 A33 Máté: Architektúrák 3. előadás

n értéke, a címe, b címe paraméterek visszatérési cím, 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 . . . A33 Máté: Architektúrák 3. előadás

MOV SI,6[BP] ; SI  az egyik vektor címe MOV DI,4[BP] ; DI  a másik vektor címe MOV CX,8[BP] ; CX  a dimenzió értéke xor bx,bx ; bx  0, indexezéshez xor dx,dx ; az eredmény ideiglenes helye jcxz kesz ; ugrás a kesz címkére, ha n=0 ism: mov al,[si+bx] ; független a-tól imul byte ptr [di+bx] ; független b-től ; csak „byte ptr”-ből derül ki, hogy 8 bites a szorzás add dx,ax ; dx  részösszeg inc bx ; bx  bx+1, az index növelése loop ism ; ugrás az ism címkére, ; ha kell ismételni A33 Máté: Architektúrák 3. előadás

kesz: mov ax,dx ; a skalár szorzat értéke ax-ben pop dx ; visszamentések pop cx pop bx POP DI POP SI POP BP ret ; 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 A33-34 Máté: Architektúrák 3. előadás

Lokális adat terület, rekurzív és re-entrant eljárások Ha 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 felesleges, 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ése MOV BP,SP ; BP  SP, ; a stack relatív címzéshez SUB SP,n ; n a munkaterület byte-jainak száma . . . ; további regiszter mentések A34-35 Máté: Architektúrák 3. előadás

Lokális adat terület (NEAR eljárás esetén) (SS:SP) lokális . . . + 2 adat terület . . . . . . – 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 verembe elhelyezett paraméterek ugyancsak stack relatív címzéssel, de pozitív displacement érték mellett érhetők el.) A35 Máté: Architektúrák 3. előadás

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. A35 Máté: Architektúrák 3. előadás

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. A35 Máté: Architektúrák 3. előadás

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). A35 Máté: Architektúrák 3. előadás

Kezdetben: kevés, egyszerű utasítás. Történeti áttekintés Kezdetben: kevés, egyszerű utasítás. Később: sok, egyre összetettebb utasítás. IBM 360-as család. Lefelé kompatibilis, csak a nagyobb gépek hajtják végre hardveresen az utasításokat (gyors), a kicsik interpretálnak (olcsó). Interpretálás előnyei: hibásan interpretált utasítások könnyű javítása, új utasítások egyszerű hozzáadása, strukturált felépítés; összetett utasítások hatékony fejlesztése. 58-59 Máté: Architektúrák 3. előadás

az első 8 bites processzorok: Hetvenes évek vége: a csak olvasásra használható gyors memóriák (vezérlőtárak – ROM Read Only Memory) megjelenése és beépülése a CPU-ba. az első 8 bites processzorok: - Motorola 68000 egyszerű utasításokkal nagy interpretert épít (siker), - Zilog 8000 bonyolult hardver utasításokat (kudarc). 60 Máté: Architektúrák 3. előadás

A nyolcvanas évek elejétől: A központi memória sebessége csaknem elérte a vezérlő tárak sebességét. RISC (Reduced Instruction Set Computer - csökkentett utasításkészletű számítógép): SPARC, DEC Alpha. Cél: minél gyorsabban indítani és átlapolni a gyors, egyszerű utasításokat. CISC (Complex Instruction Set Computer, összetett utasításkészletű számítógép): IBM nagy gépek, VAX, …. Összetett, és lassabb utasítások. 60-61 Máté: Architektúrák 3. előadás

hardveres (nem mikroprogramozott) utasítások, Miért nem nyert a RISC? Kompatibilitás + az elveket az Intel is részben átveszi (486-tól RISC mag). RISC tervezési elvei hardveres (nem mikroprogramozott) utasítások, az utasítások indítási sebességének maximalizálása, könnyen dekódolható utasítások, memóriához fordulás csak betöltés (load) és tárolás (store) esetén. Sok regiszter kell! 62-63 Máté: Architektúrák 3. előadás