1 / 74

A verem két felső szavának cseréje (4.17. ábra)

Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire előny. SP → A B. A verem két felső szavának cseréje (4.17. ábra). A verem két felső szavának cseréje (4.17. ábra). SP → B B. swap4-ben előny, hogy TOS tartalmazza a verem tetején lévő szót.

rafiki
Download Presentation

A verem két felső szavának cseréje (4.17. ábra)

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. Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire előny. SP → A B A verem két felső szavának cseréje (4.17. ábra) 7. előadás

  2. A verem két felső szavának cseréje (4.17. ábra) SP → B B swap4-ben előny, hogy TOS tartalmazza a verem tetején lévő szót. 7. előadás

  3. A verem két felső szavának cseréje (4.17. ábra) swap6-ban hátrány, mert ez az utasítás csak azért kell, hogy TOS tartalmazza a verem tetején lévő szót. SP → B A 7. előadás

  4. A verem két felső szavának cseréje (4.17. ábra) 7. előadás

  5. A WIDE utasítás A WIDE utasítás valójában prefixum: önmagában nem csinál semmit, csak jelzi, hogy a következő utasításnak 16 bites indexe van. Pl.: ILOAD varnum lokális változó a verembe varnum a lokális változó 8 bites indexe. WIDE ILOAD varnum lokális változó a verembe varnum a lokális változó 16 bites indexe. w_iload1 címe = iload1 címe + 0x100 6. előadás

  6. ILOAD varnum lokális változó a verembe varnum a lokális változó 8 bites indexe. 6. előadás

  7. WIDE ILOAD varnum lokális változó a verembe varnum a lokális változó 16 bites indexe. 6. előadás

  8. 6. előadás

  9. Az GOTO offset utasítás. PC relatív: PC értékéhez hozzá kell adni a két bájtos, előjeles offset értékét. Mic-1 program: goto5 kezdeményezi a PC új értékénél lévő bájt olvasását, Main1-ben goto(MBR) már a folytatás első opkódjának megfelelő címre ugrik! 6. előadás

  10. A IFLT offset utasítás (Mic-1) Kivesz egy szót a veremből és ugrik, ha negatív. Fontos: T címe = F címe + 0x100 6. előadás

  11. INVOKEVIRTUAL disp (4.12. ábra), • A CPP által mutatott területen a disp (2 bájt) indexű szó mutat a meghívandó metódus kezdő szavára. • Ennek a szónak - az első két bájtja tartalmazza a metódus paramétereinek számát, - a második két bájtja a metódus lokális változóinak számát. • A metódus végrehajtása a metódus 5. bájtján indul. 6. előadás

  12. verem a hívás után ← SP verem a hívás előtt ← SP Betett paraméterek A verem új alapja ← LV A verem alapja hívás előtt A hívó lokális területe ← LV INVOKEVIRTUAL disp (~4.12. ábra) 6. előadás

  13. INVOKEVIRTUAL disp A CPP által mutatott táblázat disp indexű eleme a meghívandó metódusra mutat. disp első bájtjának MBR-be olvasását már Main1 kezdeményezte. A könyvben MBRU OR Hszerepel, azORművelet kommutativitása miatt megengedhető. 6. előadás

  14. INVOKEVIRTUAL: a metódus elején lévő 2 bájt tartalmazza a paraméterek számát. TOS-ban tároljuk ideiglenesen OBJREF címét, ide mutat majd a hívott metódus LV-je. Az utasítások sorrendje más, mint a könyvben! 6. előadás

  15. INVOKEVIRTUAL: lokálisok száma 2 bájt a paraméterek száma után, OBJREF cseréje, ide kerül a lokális változók fölötti címre mutató Kapcsoló mutató. A mutatott címre kerül majd a Hívó PC-je. TOS = MAR = OBJREF címe TOS = OBJREF címe 6. előadás

  16. verem a hívás után ← SP verem a hívás előtt INVOKEVIRTUAL disp (~4.12. ábra) ← SP ← SP Betett paraméterek A verem új alapja ← LV A verem alapja hívás előtt A hívó lokális területe ← LV 6. előadás

  17. INVOKEVIRTUAL: a hívó PC-je és LV-je TOS = OBJREF címe TOS = MDR nélkül TOS a Kapcsoló mutató címét (a hívott LV-jét)tartalmazná! 6. előadás

  18. Verem IRETURN előtt ← SP A verem alapja IRETURN előtt IRETURN ~4.12. ábra Betett paraméterek Verem IRETURN után ← SP ← LV A verem alapja IRETURN után A hívó lokális területe ← LV 6. előadás

  19. IRETURN // ~4.13. ábra iret3-4: MAR nem lehet SOURCE operandus! 6. előadás

  20. 6. előadás

  21. Házi feladat: A 4.17. ábra többi része. Továbbfejlesztések: több sínes rendszerek. 6. előadás

  22. Logikai utasítások Bitenkénti logikai műveleteket végeznek. 1 az igaz, 0 a hamis logikai érték. AND op1,op2 ; op1  op1 & op2, bitenkénti és TEST op1,op2 ; flag-ek op1 & op2 szerint OR op1,op2 ; op1  op1 | op2, bitenkénti vagy XOR op1,op2 ; op1  op1 ^ op2 (eXclusive OR), ; bitenkénti kizáró vagy NOT op ; op  ~op, bitenkénti negáció, ; nem módosítja STATUS tartalmát! 6. előadás

  23. Bit forgató (Rotate) és léptető (Shift) utasítások Forgatják (Rotate) illetve léptetik (Shift) op tartalmát. A forgatás/léptetés történhet • 1 bittel, • vagy byte illetve word esetén a CL regiszter alsó 3 illetve 4 bit-jén megadott bittel jobbra (Right) vagy balra (Left). Az utoljára kilépő bit lesz a Carry új tartalma. 6. előadás

  24. A rotálás történhet a Carry-n keresztül, ilyenkor a belépő bit a Carry-ből kapja az értékét: RCR op,1/CL ; Rotate through Carry Right RCL op,1/CL ; Rotate through Carry Left 6. előadás

  25. A rotálás történhet úgy, hogy Carry csak a kilépő bitet fogadja, a belépő bit értékét a kilépő bit szolgáltatja: ROR op,1/CL ; ROtate Right ROL op,1/CL ; ROtate Left 6. előadás

  26. Logikai léptetés jobbra: A belépő bit 0: SHR op,1/CL ; SHift Right 0 Előjel nélküli egész számok 2 hatványával történő osztására alkalmas. Aritmetikai léptetés jobbra: A belépő bit op előjele: SAR op,1/CL ; Shift ArithmeticalRight Előjeles egész számok 2 hatványával történő osztására alkalmas.Negatív számok esetén csal! 6. előadás

  27. Balra léptetéskor a belépő bit mindig 0: SHL op,1/CL ; SHift Left SAL op,1/CL ; Shift ArithmeticalLeft SAL ≡ SHL 0 Előjel nélküli vagy előjeles egész számok 2 hatványával történő szorzására alkalmas. 6. előadás

  28. hexa proc ; ax kiírása hexadecimálisan ; legyen a példa kedvéért: ax = 1234H xchg ah,al ; ah és al felcserélése ; most: ax = 3412H, al = 12H call hexa_b ; al (az eredeti ah) kiírása ; kiírtuk, hogy 12 xchg ah,al ; ah és al visszacserélése ; most újra: ax = 1234H, al = 34H call hexa_b ; al kiírása ; most kiírtuk, hogy 34, tehát eddig kiírtuk, hogy 1234 ret ; visszatérés hexa endp ; a hexa eljárás vége 6. előadás

  29. hexa_b proc ; al kiírása hexadecimálisan ; az első híváskor: al = 12H 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 ; most: al = 21H call h_jegy ; az első jegy kiírása ; kiírtuk, hogy 1 ROR al,CL ; a 2. jegy az alsó 4 biten ; most újra: al = 12H call h_jegy ; a második jegy kiírása ; most kiírtuk, hogy 2, tehát eddig kiírtuk, hogy 12 pop cx ; visszamentés a veremből ret ; visszatérés hexa_b endp ; a hexa_b eljárás vége 6. előadás

  30. 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’-0AH-’0’ ; A…F hexadecimális ; jegyek kialakítása h_jegy1: mov ah,14 ; BIOS hívás: int 10H ; karakter kiírás pop ax ; visszamentés a veremből ret ; visszatérés h_jegy endp ; a h_jegy eljárás vége 6. előadás

  31. Processzor vezérlő utasítások I. A processzor állapotát módosít(hat)ják. 6. előadás

  32. Input, output, interfész, I/O lapkák UART (Universal Asynchronous Receiver and Transmitter) egy bájtot tud olvasni az adatsínről, és aztán sorosan továbbítja az eszközhöz (vagy fordítva), programmal konfigurálható (belső regiszterének beállításával): • 5-8 bit szélesség, • sebesség (50-19.200 bps), • paritás ellenőrzés (páros, páratlan, nincs). USART (Universal Synchronous Asynchronous Receiver and Transmitter): szinkron és aszinkron módon is tud működni. 6. előadás

  33. #CS A0-A1 #WR #RD RESET D0-D7 8255ApárhuzamosB/K lapka 8 Port A Port B Port C 2 8 8 8 PIO (Parallel Input/Output, 3.60. ábra) 24 B/K vonal, amellyel TTL kompatibilis eszközökhöz (billentyűzet, kapcsolók, nyomtatók) tud kapcsolódni. Konfigurálható. Leggyakoribb az ábrán látható használat. Aszinkron eszközökhöz „kézfogás” logika van beépítve. 6. előadás

  34. Beviteli/Kiviteli (B/K, Input/Output, I/O) eszközök használata (chip selection): • Valódi B/K eszköz. • Memóriára leképezett B/K (memory-mapped I/O). Pl.: 3.61. ábra. 2 KB EPROM a 0 címnél 2 KB RAM a 8000H címnél 4 B PIO az FFFCH címnél 64 K 32 K 0 6. előadás

  35. 2 KB EPROM a 0 címnél 2 KB RAM a 8000H címnél 4 B PIO az FFFCH címnél 64 K 32 K 0 3. 61-62. ábra. Teljes cím dekódolás.A15 a legmagasabb helyértékű bit. A0 A11 A15 #CS EPROM #CS RAM #CS PIO 6. előadás

  36. 2 KB EPROM a 0 címnél 2 KB RAM a 8000H címnél 4 B PIO az FFFCH címnél 64 K 32 K 0 3.61-62. ábra. Részleges cím dekódolás. A0 A15 #CS PIO #CS RAM #CS EPROM 6. előadás

  37. Input, output (I/O) utasítások (I8086/88) A külvilággal történő információ csere port-okon (kapukon) keresztül zajlik. A kapu egy memória cím, az információ csere erre a címre történő írással, vagy erről a címről való olvasással történik. Egy-egy cím vagy cím csoport egy-egy perifériához kötődik. A központi egység oldaláról a folyamat egységesen az IN (input) és az OUT (output) utasítással történik. 6. előadás

  38. Input, output (I/O) utasítások (I8086/88) A perifériától függ, hogy a hozzá tartozó port 8 vagy 16 bites. A központi egységnek az AL illetve AX regisztere vesz részt a kommunikációban. A port címzése 8 bites közvetlen adattal vagy a DX regiszterrel történik. IN AL/AX,port ; AL/AX  egy byte/word a port-ról OUT port,AL/AX ; port  egy byte/word AL/AX-ből 6. előadás

  39. A periféria oldaláról a helyzet nem ilyen egyszerű. Az input információ „csomagokban” érkezik, az output információt „csomagolva” kell küldeni. A csomagolás (vezérlő információ) mondja meg, hogy hogyan kell kezelni a csomagba rejtett információt (adatot). Éppen ezért az operációs rendszerek olyan egyszerűen használható eljárásokat tartalmaznak (BIOS – Basic Input/Output System – rutinok, stb.), amelyek elvégzik a ki- és becsomagolás munkáját, és ezáltal lényegesen megkönnyítik a külvilággal való kommunikációt. 6. előadás

  40. Kész a következő karakter fogadására Van beírt karakter Billentyűzet állapot Képernyő állapot Megszakítás engedélyezett Beírt karakter Megjelenítendő karakter Billentyűzet puffere Képernyő puffere Input/output (5.31-33. ábra) Az I/O vezérlő regiszterei (5.31. ábra). Terminál: külön regiszterek az inputra és outputra. 6. előadás

  41. programozottB/K (5.32. ábra) tevékeny várakozás (pollozásos technika): public static void output_buffer(int buf[], int count) { // count számú bájt kiírása buf-ból az eszközre int status, i, ready; for(i=0; i < count; i++) { do { status = in(display_status_reg); // az állapot lekérdezése ready = (status >> 7) & 0x01; // a kész bit elkülönítése } while(ready != 1); out(display_buffer_reg, buf[i]); } } 6. előadás

  42. megszakítás vezéreltB/K az eszköz megkapja a feladatát, majd ha elkészült, beállítja a „Megszakítás engedélyezett” bitet, addig a központi egység más feladatot végezhet. • DMA (Direct Memory Access, 5.33. ábra) a DMA önállóan végzi az eszköz figyelését és az adatok mozgatását. DMA Memória címszámlálóeszközirány CPU Cikluslopás. 6. előadás

  43. Processzor vezérlő utasítások II. NOP ; NO oPeration, üres utasítás, ;nem végez műveletet. WAIT ; A processzor várakozik, amíg más ; processzortól (pl. lebegőpontos ; segédprocesszortól) kész jelzést nem kap. HLT ; HaLT,leállítja a processzort. ; A processzor külső megszakításig ; várakozik. 6. előadás

  44. Megszakítás rendszer, interrupt utasítások • Az I/O utasítás lassú  a CPU gyors, a CPU várakozni kényszerül • I/O regiszter (port): a port és a központi egység közötti információ átadás gyors, a periféria autonóm módon elvégzi a feladatát. Újabb perifériához fordulás esetén a CPU várakozni kényszerülhet. • Pollozásos technika (~tevékeny várakozás):a futó program időről időre megkérdezi a periféria állapotát, és csak akkor ad ki újabb I/O utasítást, amikor a periféria már fogadni tudja. A hatékonyság az éppen futó programtól függ. 6. előadás

  45. Megszakítás A (program) megszakítás azt jelenti, hogy az éppen futó program végrehajtása átmenetileg megszakad – a processzor állapota megőrződik, hogy a program egy későbbi időpontban folytatódhassék – és a processzor egy másik program, az úgynevezett megszakítás kezelő végrehajtását kezdi meg. Miután a megszakítás kezelő elvégezte munkáját, gondoskodik a processzor megszakításkori állapotának visszaállításáról, és visszaadja a vezérlést a megszakított programnak. 6. előadás

  46. Pl.: nyomtatás • Nyomtatás pufferbe, később a tényleges nyomtatást vezérlő program indítása. • Nyomtatás előkészítése (a nyomtató megnyitása), HLT. • A továbbiak során a nyomtató megszakítást okoz, ha kész újabb adat nyomtatására. Ilyenkor a HLT utasítást követő címre adódik a vezérlés. A következő karakter előkészítése nyomtatásra, HLT. A bekövetkező megszakítás hatására a megszakító rutin mindig a következő adatot nyomtatja. Ha nincs további nyomtatandó anyag, akkor a nyomtatást vezérlő program lezárja a nyomtatót (nem következik be újabb megszakítás a nyomtató miatt), és befejezi a működését. 6. előadás

  47. A HLT utasítás csak akkor szükséges, ha a nyomtatást kérő program befejezte a munkáját. Ellenkező esetben visszakaphatja a vezérlést. Ilyenkor az ő feladata az esetleg szükséges várakozásról gondoskodni a program végén. Bevitel esetén olyankor is várakozni kell, ha még a beolvasás nem történt meg, és a további futáshoz szükség van ezekre az adatokra. Jobb megoldás, ha a HLT utasítás helyett az operációs rendszer fölfüggeszti a program működését, és elindítja egy másik program futását. Ez vezetett a multiprogramozás kialakulásához. 6. előadás

  48. A megszakító rutin megszakítható-e? Gyors periféria kiszolgálása közben megszakítás kérés, … „Alap” állapot – „megszakítási” állapot, megszakítási állapotban nem lehet újabb megszakítás. Hierarchia: megszakítási állapotban csak magasabb szintű ok eredményezhet megszakítást. Bizonyos utasítások csak a központi egység bizonyos kitüntetett állapotában hajthatók végre, alap állapotban nem → csapda, szoftver megszakítás. Megoldható az operációs rendszer védelme, a tár védelem stb. A megoldás nem tökéletes: vírus. 6. előadás

  49. Csapda és megszakítás Csapda (trap): A program által előidézett feltétel (pl. túlcsordulás) hatására automatikus eljárás hívás. Csapda kezelő. Megszakítás (interrupt): Olyan automatikus eljárás hívás, amit általában nem a futó program, hanem valamilyen B/K eszköz idéz elő, pl. a program utasítja a lemezegységet, hogy kezdje el az adatátvitelt, és annak végeztével megszakítást küldjön. Megszakítás kezelő. A csapda a programmal szinkronizált, a megszakítás nem. 6. előadás

  50. Pl.: Egy sornyi karakter képernyőre írása a terminálon. Előkészítés: Egy rendszerprogram összegyűjti a kiírandó karaktereket egy pufferben, beállít egy globális változót, hogy mutasson a puffer elejére, egy másik globális változóban megadja a karakterek számát. Megnézi, hogy a terminál tud-e adatot fogadni (5.31. ábra), és ha igen, akkor elindítja az első karakter kiíratását. Ekkor a CPU fölszabadul egy másik program futtatására. A terminál a képernyőre írja a karaktert, és megszakítást kezdeményez. A megszakítás kezelő újabb karakter kiírását kezdeményezi . . . 6. előadás

More Related