1 / 91

Vezérlés átadó utasítások Eljárásokkal kapcsolatos utasítások Eljárás hívás:

Vezérlés átadó utasítások Eljárásokkal kapcsolatos utasítások Eljárás hívás: CALL op ; eljárás hívás - közeli: push IP, IP  op, - távoli: push CS, push IP, (CS:IP)  op. Visszatérés az eljárásból: RET ; visszatérés a hívó programhoz (RETurn)

marc
Download Presentation

Vezérlés átadó utasítások Eljárásokkal kapcsolatos utasítások Eljárás hívás:

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Vezérlés átadó utasítások Eljárásokkal kapcsolatos utasítások Eljárás hívás: CALL op ; eljárás hívás - közeli: push IP, IP  op, - távoli: push CS, push IP, (CS:IP)  op. Visszatérés az eljárásból: RET ; visszatérés a hívó programhoz (RETurn) - közeli: pop IP, - távoli: pop IP, pop CS. RET op ; . . . , SP  SP+op ; op csak közvetlen adat lehet! 4. előadás

  2. Feltétlen vezérlés átadás (ugrás) JMP op ; ha op közeli: IP  op, ; ha távoli: (CS:IP)  op. 4. előadás

  3. A feltételek: Zero, Equal, No(Not), Greater, Less, Above, Below, Carry 4. előadás

  4. A feltételek: Zero, Equal, No(Not), Carry, Sign, Overflow, Parity Even, Parity Odd. 4. előadás

  5. Minden feltételes vezérlés átadás IP relatív címzéssel (SHORT) valósul meg! Pl.: JZ MESSZE ; Hibás, ha ; MESSZE messze van Megoldás: JNZ IDE ; Negált feltételű ugrás JMP MESSZE IDE: . . . 4. előadás

  6. Ciklus szervező utasítások IP relatív címzéssel(SHORT)valósulnak meg. LOOP ipr ; CX  CX – 1, ugrás ipr -re, ; ha CX  0 LOOPZ ipr ; CX  CX – 1, ugrás ipr -re, ; ha (CX  0 és Z=1) LOOPE ipr ; ugyanaz mint LOOPZ LOOPNZ ipr ; CX  CX – 1, ugrás ipr -re, ; ha (CX  0 és Z=0) LOOPNE ipr ; ugyanaz mint LOOPNZ 4. előadás

  7. ; 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. mov cl, n ; a ciklus előkészítése xor ch, ch mov al, 1 ; lehetne: mov ax, 1 xor ah, ah ; akkor ez nem kell JCXZ kesz ; ha n=0, akkor 0-szor ; fut a ciklus mag c_mag: mul A ; ciklus mag LOOP c_mag ; ismétlés, ha kell kesz: mov B, ax 4. előadás

  8. ; 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 4. előadás

  9. 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 4. előadás

  10. 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 4. előadás

  11. 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 4. előadás

  12. 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 4. előadás

  13. 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 4. előadás

  14. 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 ; C call hexa ; az eredmény kiírása 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 4. előadás

  15. SKAL PROC ; KÖZELI (NEAR) ELJÁRÁS ; KEZDETE ; Az A-tól C-ig tartó program rész: 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 4. előadás

  16. 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 ; C 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! 4. előadás

  17. 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 4. előadás

  18. 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 4. előadás

  19. 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! 4. előadás

  20. ; 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 PUSH AX ; a verembe A verembe került: n értéke, a címe, b címe paraméterek 4. előadás

  21. 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 4. előadás

  22. 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 4. előadás

  23. 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) dxPUSH BP ; BP értékét mentenünk kell + 2 cxMOV BP,SP ; BP  SP, + 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 . . . 4. előadás

  24. +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íme MOV DI,4[BP] ; DI  a másik vektor címe MOV CX,8[BP] ; CX  a dimenzió értéke 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, indexezéshez 4. előadás

  25. 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 4. előadás

  26. 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 4. előadás

  27. C konvenció Hogy egy eljárás különböző számú paraméterrel legyen hívható, azt úgy lehet elérni, hogy a paramétereket fordított sorrendben tesszük a verembe, mert ilyenkor a visszatérési cím alatt lesz az első, alatta a második, stb. paraméter, és általában a korábbi paraméterek döntik el, hogy hogyan folytatódik a paramétersor. 4. előadás

  28. 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 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ése MOV BP,SP ; BP  SP, ; a stack relatív címzéshez SUB SP,n ; n byte-os munkaterület lefoglalása . . . ; további regiszter mentések 4. előadás

  29. 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 átadott paraméterek ugyancsak stack relatív címzéssel, de pozitív displacement érték mellett érhetők el.) 4. előadás

  30. 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. 4. előadás

  31. 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. 4. előadás

  32. 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). 4. előadás

  33. Gyorsító tár (cache – 2.16. ábra) A processzorok mindig gyorsabbak a memóriáknál. A CPU lapkára integrálható memória gyors, de kicsi. Feloldási lehetőség: a központi memória egy kis részét (gyorsító tár) a CPU lapkára helyezni: Amikor egy utasításnak adatra van szüksége, akkor először itt keresi, ha nincs itt, akkor a központi memóriában. Lokalitási elv: Ha egy hivatkozás a memória A címére történik, akkor a következő valószínűleg valahol A közelében lesz (ciklus, mátrix manipulálás, …). Ha A nincs a gyorsító tárban, akkor az A-t tartalmazó (adott méretű) blokk (gyorsító sor - cache line) kerül beolvasásra a memóriából a gyorsító tárba. 4. előadás

  34. Találati arány (h): az összes hivatkozás mekkora hányada szolgálható ki a gyorsító tárból. Hiba arány:1-h. Ha a gyorsító tár elérési ideje: c, a memória elérési ideje: m, akkor az átlagos elérési idő = c + (1- h) m. A gyorsító tár mérete: nagyobb tár – drágább. A gyorsító sor mérete: nagyobb sor – nagyobb a sor betöltési ideje is. Ugyanakkora tárban kevesebb gyorsító sor fér el. 4. előadás

  35. Osztott (külön utasítás és adat) gyorsító tár előnyei: • Egyik szállítószalag végzi az utasítás, másik az operandus előolvasást. • Az utasítás gyorsító tárat sohasem kell visszaírni (az utasítások nem módosulnak). Egyesített gyorsító tár: nem lehetséges párhuzamosítás. Hierarchia: • elsődleges, a CPU lapkán, • másodlagos, a CPU-val egy tokban, • külön tokban. 4. előadás

  36. Direkt leképezésű gyorsító tár működése: (4_38_abrahoz) Ha a gyorsító tár Vonal által mutatott sorában V=1 (valid), és a TAG megegyezik a címben lévő TAG-gel, akkor az adat bent van a gyorsító tárban (ebben a sorban). 4. előadás

  37. Halmazkezelésű (csoportasszociatív) gyorsító tár Ha egy program gyakran használ olyan szavakat, amelyek távol vannak egymástól, de ugyanoda képződnek le a gyorsító tárban, akkor sűrűn kell cserélni a gyorsító sort. Ha minden címhez n bejegyzés van, akkor n utas halmazkeresésű gyorsító tárról beszélünk. Ritka a több, mint 4 utas kezelés. LRU (Least Recently Used) algoritmus: gyorsító sor betöltése előtt a legrégebben használt bejegyzés kerül ki a gyorsító tárból. 4. előadás

  38. Halmaz kezelésű gyorsító tár (4.39. ábra) D bejegyzés A bejegyzés B bejegyzés C bejegyzés Ha a gyorsító tár Vonal által mutatott sorában az A, B, C és D bejegyzések egyikében V=1 (valid), és a hozzá tartozó TAG megegyezik a címben lévő TAG-gel, akkor az adat bent van a gyorsító tárban (ebben a bejegyzésben). 4. előadás

  39. Memóriába írás Stratégiák: Írás áteresztés (write through): az írás a memóriába történik. Ha a cím a gyorsítóban van, oda is be kell írni, különben el kellene dobni a gyorsító sort. Késleltetett írás (write deferred, write back): ha a cím bent van a gyorsító tárban, akkor csak a gyorsító tárba írunk, a memóriába csak gyorsító sor cserénél. Ha a cím nincs a gyorsító tárban, akkor előtte betölthetjük: írás allokálás (write allocation) – többnyire ezt alkalmazzák késleltetett írás esetén. 4. előadás

  40. regiszterek Gyorsító tár Központi memória Mágneslemez Optikai lemez Szalag Elérési idő: néhány nanosec >100 msec Kapacitás: néhány bájt néhány száz GB Memória hierarchia (2.18. ábra) 4. előadás

  41. címzés adat sínvezérlésmegszakítások sínütemezés/kiosztássegédprocesszorállapotvegyes Φ+5V földelés órajel tápfeszültség CPU (Central Processing Unit) Általában egyetlen lapkán van. Lábakon keresztül kommunikál a többi egységgel (3.34. ábra). CPU 4. előadás

  42. címzés adat sínvezérlésmegszakítások sínütemezés/kiosztás segédprocesszorállapotvegyes CPU Φ+5V Lábak (pins) három típusa: cím, adat, vezérlés. Ezek párhuzamos vezetékeken, az un. sínen keresztül kapcsolódnak a memória, az I/O egységek hasonló lábaihoz. 4. előadás

  43. címzés adat sínvezérlésmegszakítások sínütemezés/kiosztás segédprocesszorállapotvegyes CPU Φ+5V Lényeges a cím- és adatlábak száma (3.34. ábra): • Ha m címláb van, akkor 2m memóriarekesz érhető el (tipikus m = 16, 20, 32, 64). • Ha n adatláb van, akkor egyszerre n bit olvasható illetve írható (tipikus n = 8, 16, 32, 36, 64). 4. előadás

  44. címzés adat sínvezérlésmegszakítások sínütemezés/kiosztás segédprocesszorállapotvegyes CPU Φ+5V Óra, áram (3.3 v. 5V), föld, továbbá vezérlőlábak: • sín vezérlés (bus control): mit csináljon a sín, • megszakítások, • sín kiosztás (ütemezés, egyeztetés – bus arbitration): kinek dolgozzon a sín, • segéd processzor vezérlése, jelzései, • állapot, • egyebek. 4. előadás

  45. címzés adat sínvezérlésmegszakítások sínütemezés/kiosztás segédprocesszorállapotvegyes CPU Φ+5V Pl. utasítás betöltése: • A CPU kéri a sín használat jogát, • Az utasítás címét a cím lábakra teszi, • vezérlő vonalon informálja a memóriát, hogy olvasni szeretne, • a memória a kért szót az adat vonalakra teszi, kész jelzést tesz egy vezérlő vonalra, • a CPU végrehajtáshoz átveszi az utasítást. 4. előadás

  46. CPU lapka regiszterek memória-sín memória sínvezérlő B/K sín ALU modem nyomtató lemez Lapkán belüli sínek Sín (bus): Korai személyi számítógépeknél egyetlen (külső) rendszersín, manapság legalább kettő van: egy belső és egy külső (I/O), 3.35. ábra. 4. előadás

  47. Sínprotokoll: a sín működésének + a csatlakozások mechanikai, elektronikus definíciója Mesterek (masters): aktív (kezdeményező) berendezések (CPU, lemez vezérlő). Szolgák (slaves): passzív (végrehajtó) berendezések (lemez vezérlő, CPU), 3.35. ábra. Ez a szereposztás tranzakciónként eltérő lehet. A memória sohasem lehet mester! 4. előadás

  48. A sínhez kapcsolódó lapkák lényegében erősítők.Mester – sín vezérlő (bus driver) – sín. Sín – sín vevő (bus receiver) – szolga.Mester–szolgáknál: sín adó-vevő (bus transceiver). A csatlakozás gyakran tri-state device vagy open collector – wired-OR segítségével történik. Sávszélesség: (továbbítható bitek száma) / sec. Sávszélesség növelése:Gyorsítás: probléma a sín aszimmetria (skew), kompatibilitás. Sínszélesség: szélesebb sín  drágább, kompatibilitás. 4. előadás

  49. 8086 80286 80386 20 bites cím vezérlés 4 bites 8 bites Sínszélesség (pl. IBM PC: 3.37., 3.51. ábra). 3.37. ábra. A cím szélességének növekedése az elmúlt időszakban 4. előadás

  50. 3.51. ábra.A PC/AT sín két komponense, az eredeti PC és az új rész 4. előadás

More Related