1 / 48

Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens sz_név ENDS sz_név a szegmens (szelet) neve. A fordító az azonos nevű szegmens szeleteket úgy tekinti, mintha folyamatosan, egyetlen szegmens szeletbe írtuk volna.

neo
Download Presentation

Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

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. Szegmens, szegmens csoport sz_névSEGMENTaling_type combine_type ’osztály’ . . . szegmens sz_névENDS sz_név a szegmens (szelet) neve. A fordító az azonos nevű szegmens szeleteket úgy tekinti, mintha folyamatosan, egyetlen szegmens szeletbe írtuk volna. Az azonos nevű szegmens szeletek paraméterei egy modulon belül nem változhatnak. A szerkesztő egy memória szegmensbe szerkeszti az azonos nevű szegmenseket. A szegmens osztály legtöbbször CODE, DATA, CONSTANT, STACK, MEMORY. 10. előadás

  2. aling_type(illesztés típusa) azt mondja meg, hogy a szegmens szelet milyen címen kezdődjön: BYTE 1-gyel, WORD 2-vel, DWORD 4-gyel, PARA 16-tal, PAGE 256-tal osztható címen. Akkor van jelentősége, ha a szegmens szelet egy ugyanilyen nevű szegmens szelet folytatása. 10. előadás

  3. combine_type(kombinációs típus) a szerkesztőnek szóló üzenet. Lehet: PUBLIC: (alapértelmezés) az azonos nevű szegmens szeletek egymás folytatásaként szerkesztendők. STACK: a stack részeként szerkesztendő a szegmens szelet, egyebekben megegyezik a PUBLIC-kal. Amennyiben van STACK kombinációs típusú szegmens a programban, akkor SS és SP úgy inicializálódik, hogy SS az utolsó STACK kombinációs típusú szegmensre mutat, SP értéke pedig ennek a szegmensnek a hossza. COMMON: az azonos nevű szegmens szeletek azonos címre szerkesztendők. Az így keletkező terület hossza megegyezik a leghosszabb szegmens szelet hosszával. A COMMON hatása csak különböző modulokban megírt szegmens szeletekre érvényesül. 10. előadás

  4. MEMORY: a szerkesztő ezt a szegmenst az összes többi szegmens fölé fogja szerkeszteni, mindig a program legmagasabb címre kerülő része (a Microsoft LINK programja ezt nem támogatja). AT kif: a kif sorszámú paragrafusra kerül a szegmens szelet. Alkalmas lehet pl. a port-okhoz kapcsolódó memória címek szimbolikus definiálására. 10. előadás

  5. Az ASSUME utasítás az assembler-t informálja arról, hogy a címzésekhez a szegmens regisztereket milyen tartalommal használhatja, más szóval, hogy melyik szegmens regiszter melyik szegmensnek a szegmens címét tartalmazza (melyik szegmensre mutat): ASSUME sz_reg1:sz_név1[, sz_reg2:sz_név2 ...] Az ASSUME utasításban felsorolt szegmenseket „aktívak”-nak nevezzük. Az ASSUME utasítás nem gondoskodik a szegmens regiszterek megfelelő tartalommal történő feltöltéséről! Ez a programozó feladata! Az ASSUME utasítás hatása egy-egy szegmens regiszterre vonatkozóan mindaddig érvényes, amíg egy másik ASSUME utasítással mást nem mondunk az illető regiszterről. 10. előadás

  6. A GROUP utasítással csoportosíthatjuk a szegmenseinket: G_nev GROUP S_név1[, S_név2...] Az egy csoportba sorolt szegmensek a memória egy szegmensébe kerülnek. Ha ilyenkor az ASSUME utasításban a csoport nevét adjuk meg, és ennek megfelelően állítjuk be a bázis regisztert, akkor a csoport minden szegmensének minden elemére tudunk hivatkozni. Ilyenkor egy változó OFFSET-je és effektív címe (EA) nem feltétlenül egyezik meg. 10. előadás

  7. GRP GROUP ADAT1,ADAT2 ADAT1 SEGMENT para public ’data’ A dw 1111h ... ADAT1 ENDS ADAT2 SEGMENT para public ’data’ W dw 2222h ... ADAT2 ENDS 10. előadás

  8. code segment para public ’code’ ASSUME CS:code, DS:GRP ASSUME SS:stack, ES:nothing ... MOV SI,OFFSET W ; SI  W offset-je: 0 ; az ADAT2 szegmens elejétől mért távolság MOV AX,[SI] ; AX  1111h, ; de!!! LEA SI, W ; SI  effektív címe: ; a GRP szegmens csoport elejétől mért távolság MOV AX,[SI]; AX  2222h. ... 10. előadás

  9. Globális szimbólumok A több modulból is elérhető szimbólumok. Ha egy szimbólumot globálissá kívánunk tenni, akkor PUBLIC-ká kell nyilvánítanunk annak a modulnak az elején, amelyben a szimbólumot definiáljuk: PUBLIC szimb1[, szimb2...] Azokban a modulokban, amelyekben más modulban definiált szimbólumokat is használni szeretnénk, az ilyen szimbólumokat EXTRN-né kell nyilvánítanunk: EXTRN szimb1:típus1[, szimb2:típus2...] A globális szimbólumok lehetővé teszik, hogy a programjainkat modulokra bontva készítsük el. Az egyes modulok közötti kapcsolatot a globális szimbólumok jelentik. 10. előadás

  10. INCLUDE utasítás INCLUDE File_Specifikáció hatására az assembler az INCLUDE utasítás helyére bemásolja az utasítás paraméterében specifikált file szövegét. Az INCLUDE-olt file-ok is tartalmazhatnak INCLUDE utasítást. 10. előadás

  11. Ha makró definícióinkat a MyMacros.i file-ba kívánjuk összegyűjteni, akkor célszerű ezt a file-t így elkészítenünk: IFNDEF MyMacros_i MyMacros_i = 1 ... ;; makró, struktúra definíciók ... ;; EXTRN szimbólumok ENDIF Ekkor a MyMacros.i file legfeljebb egyszer kerül bemásolásra, mert az összes további esetben a feltételes fordítás feltétele már nem teljesül. A .-ot _-sal helyettesítettük! A legtöbb include file-ban ezt a konvenciót alkalmazzák. 10. előadás

  12. Lista vezérlési utasítások TITLE cím A fordítás során keletkező lista minden oldalán megjelenik ez a cím. Egy modulon belül csak egyszer alkalmazható. SUBTITLE alcím Többször is előfordulhat egy modulon belül. A program lista minden oldalán – a cím alatt – megjelenik az utolsó SUBTITLE utasításban megadott alcím. 10. előadás

  13. PAGE [op1][,op2] Paraméter nélkül lapdobást jelent. Ha egyetlen paramétere van és az egy + jel, akkor a fejezet sorszámát növeli eggyel, és a lapszámot 1-re állítja. Ettől eltérő esetekben op1 az egy lapra írható sorok (10op1255), op2 az egy sorba írható karakterek számát jelenti (60op2132). Ha valamelyik paramétert nem adjuk meg, akkor természetesen nem változik a korábban beállított érték. A sorok száma kezdetben 66, a karaktereké 80. 10. előadás

  14. A TITLE, a SUBTITLE és a PAGE egy elkészült programcsoport végső papír-dokumentációjának jól olvashatóságát segíti. A programfejlesztés során ritkán készítünk program listákat. NAME név A modul nevét definiálhatjuk vele. A szerkesztő ezt a nevet fogja használni. Ha nem szerepel NAME utasítás a modulban, akkor a TITLE utasítással megadott cím a modul neve. Ha ez sincs, akkor a file nevének első 6 karaktere lesz a modul neve. 10. előadás

  15. COMMENT határoló_jel szöveg határoló_jel Segítségével több soros kommentárokat írhatunk. Az assembler a COMMENT utáni első látható karaktert tekinti határoló_jel-nek, és ennek a jelnek az újabb előfordulásáig minden kommentár. Nyilvánvaló, hogy a belsejében nem szerepelhet határoló_jel. %OUT szöveg Amikor ehhez az utasításhoz ér a fordítóprogram, akkor a paraméterként megadott szöveg-et kiírja a képernyőre. .RADIX számrendszer_alapja Ha programban egy szám nem tartalmaz számrendszer jelölést, akkor az illető számot ebben a számrendszerben kell érteni (alapértelmezésben decimális). 10. előadás

  16. .LIST Engedélyezi a forrás- és tárgykódú sorok bekerülését a lista file-ba (alapértelmezés). .XLIST Tiltja a forrás- és tárgykódú sorok bekerülését a lista file-ba. Jól használható arra, hogy INCLUDE előtt tiltsuk a listázást, utána .LIST -el újra engedélyezzük, és ezzel az INCLUDE file-ok többszöri listázását elkerüljük. .LFCOND Minden feltételes blokk kerüljön listára. .SFCOND Csak a teljesülő feltételes blokkok kerüljenek listára (alapértelmezés). .TFCOND Vált a két előző listázási mód között. 10. előadás

  17. .CREF Készüljön kereszthivatkozási (cross-reference) tábla (alapértelmezés). Ez a tábla azt a célt szolgálja, hogy könnyen megtaláljuk az egyes változókra történő hivatkozásokat a programban. .XCREF Ne készüljön kereszthivatkozási tábla. .LALL Kerüljön listára a makró hívások kifejtése. .SALL Ne kerüljön listára a makró hívások kifejtése. .XALL A makró hívások kifejtéséből csak a kódot generáló rész kerüljön listára (alapértelmezés). 10. előadás

  18. END kifejezés A modul végét jelzi, kifejezés a program indítási címe. Ha a programunk több modulból áll, akkor természetesen csak egy modul végén adhatunk meg kezdő címet. 10. előadás

  19. Halmaz kezelésű gyorsítótár (4.39. ábra) 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árba, 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ésnél a legrégebben használt sor kerül ki a gyorsítótárból. 10. előadás

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

  21. UltraSPARC II 64 bites RISC gép, felűről kompatibilis a 32 bites SPARC V8 architektúrával. CPU, 5.4 millió tranzisztor, 4 CPU közös memóriával használható. 787 láb (3.46-47. ábra). 64 (jelenleg csak 44) bites cím és 128 bites adat lehetséges. 10. előadás

  22. UPA (Ultra Port Architecture) sín és/vagy kapcsoló. A memóriákat és max. 4 CPU –t szolgál ki. Sor és oszlop cím. Két független tranzakció sorozatot tud kezelni egyidejűleg (írás, olvasás), mindkettőben több függőben lévő tranzakcióval. UDB II (UltraSPARC Data Buffer II).Puffereli a beolvasott, kiírandó adatokat. Gondoskodik a tényleges memóriába írásról, az átviteleknél hiba javító kódot generál/ellenőriz. SBus: 25 MHz-es szinkron sín a perifériáknak. 10. előadás

  23. 64 B-os gyorsító sor (cash line). Belső gyorsító tár (16 KB utasítás + 16 KB adat). Külső 512 KB - 16 MB. A másodlagos gyorsító tár mérete 512 KB –től 16 MB –ig terjedhet, tehát 8 K –tól 256 K gyorsító sor lehet a gyorsító tárban. A gyorsító tár címzéséhez 13 – 18 bit szükséges. A CPU mindig 18 bites „Line” címet (Címkeazonosítót) ad át. A gyorsító tár csak maximális méret esetén használja mind a 18 bitet címzésre. 10. előadás

  24. 512 KB –os gyorsító tár esetén a 44 bites cím felosztása (~4.38. ábra): Tag: 25 bit, Line: 13 bit, gyorsító soron belüli bájt cím: 6 bit = 44 bit. Nagyobb gyorsító tár esetén rövidebb Tag (Címkeadat) is elég lenne (pl. 16 MB –os tár esetén 20 bites), de ilyekor – hogy a CPU egységesen működhessen – a gyorsító tár Tag-et kiegészíti Line legmagasabb helyértékű bitjeivel, ezt nevezi a 3.47. ábraCímkeadatnak. Az Adat címe a gyorsító sor címén (Címkeazonosító) kívül még 2 bitet tartalmaz, mert egy átvitel során a gyorsító sornak csak negyed része mozgatható. 10. előadás

  25. UltraSPARC II CPU mikroarchitektúrája A SPARC sorozat RISC elgondoláson alapul. A legtöbb utasításnak két forrás és egy cél regisztere van. Óra ciklusonként 4 utasítást tud kiosztani. A kiosztás sorrendben történik, de befejeződhet eltérő sorrendben. PREFETCH utasítás feltételezett betöltésre, nem okoz hibát gyorsító tár hiánykor. 10. előadás

  26. Előre betöltő/Elküldő (4.49. ábra): ciklusonként négy utasítást tölt be – egy fél gyorsítósort. 2 bites elágazás jövendölő + statikus elágazás jövendölés. Maximum 12 elemű sort épít. Csoportosító: egyszerre 4 (maximum 2 fix- és 2 lebegőpontos) utasítást tud kiosztani. A kiosztás és befejezés a sorrendtől eltérő lehet. Az egész és lebegőpontos egység tejesen független, nem kell őket szinkronizálni. Betöltő/Tároló: írás áteresztő. A gyorsítótár hiány elkerülésére külön sor a függőben lévő LOAD-ok és STORE-ok számára. 10. előadás

  27. 9 szakaszos csővezeték (4.50. ábra) • ciklusonként max. 4 utasítás az I-gyorsítóból, • néhány irányító bitet tesz az utasításokhoz, • a négyes utasítás csoportból annyit kioszt, ahányat tud, • a fix pontos utasítások 1 ciklus alatt végrehajtódnak + 3 üres szakasz, • a gyorsítótár szakaszban LOAD és STORE még dolgozik + 2 üres szakasz, • a lebegőpontos utasítások általában 1 szakaszt igényelnek a regiszterek eléréséhez + 3-at a végrehajtáshoz, • csapda kezelés • regiszterekbe írás 10. előadás

  28. picoJava II (SUN, 3.48. ábra). JVM-et (Java Virtual Machine) megvalósító hardver.1, 2, 4, 8 vagy 16 KB I és D 2 utas gyorsítótár, 16 bájtos gyorsító sor, késleltetett írás, írás allokálás.64 bites memória sín (külön adat és cím vezetékek) és 32 bites PCI sín interfész. Flash PROM.16 I/O vonal nyomógombokhoz, kapcsolókhoz, lámpákhoz.Elsősorban beépített számítógépekben alkalmazzák. Sun microJava 701 szabványos BGA (Ball Grid Array) tokban: picoJava IICPU + 16 KB I és D gyorsító, 316 láb: memória (adat, cím), PCI sín, vezérlés, órák, megszakítás, tesztelés, programozható B/K, … számára. 10. előadás

  29. picoJava II CPU mikroarchitektúrája 4.51. ábra Regiszter oszlop, a verem fölső 64 szavát tartalmazza. A regiszter oszlop közvetlenül, a D gyorsító egy ciklus késleltetéssel érhető el. Automatikus eljárás (cselező – dribbling): a regiszter oszlop ne legyen túl tele vagy túl üres. Ciklikus puffer 2 mutatóval: nem kell másolgatni. Nem szuperskaláris: a mikroműveleteket abban a sorrendben hajtja végre és fejezi be, ahogy kiosztottuk. 10. előadás

  30. picoJava II csővezetéke (4.52. ábra) • Betöltés: egyszerre 8 bájt az I gyorsítótárból. • Dekódolás: RISC jellegű, két forrás és egy cél regisztert tartalmazó mikroutasításokat állít előCISC utasítás folyamból. • Operandus betöltés a veremből (regiszter oszlopból). • Utasítás végrehajtás. • D gyorsítóba írás, ha kell. • Eredmények verembe írása , ha kell. 10. előadás

  31. Utasítás összevonás, pl.: n=k+m; (4.53. ábra) Tegyük fel, hogy k, m, n rendre a 7., 1. és 3. lokális változó, akkor egy lehetséges IJVM program: iload 7 // a 7. lokális változó a verem tetejére, iload 1 // az 1. lokális változó a verem tetejére, iadd // a verem tetején lévő két regiszter // összege a verem tetejére, istore 3 // a verem tetejét a 3. lokális változóba. A dekódoló egyetlen mikroműveletté vonja össze. 10. előadás

  32. Utasítások összevonása (4.54. ábra). JVM-nek több utasítása van, mint IJVM-nek! A dekódoló 74 bites mikroműveleteket oszt ki, ezek legtöbbje egy kódot és három regisztert tartalmaz, és egy ciklusban végrehajtható. Közben figyel, hogy a sorozat megfelel-e egy legfeljebb 4 hosszú mintának (4.55. ábra). Ha megfelel, akkor a sorozatot egyetlen mikroutasítással helyettesíti. Elágazás jövendölés: nem lesz elágazás! Inkább olcsó, mint bonyolult hardver. 10. előadás

  33. Összehasonlítás Pentium II CISC gép egy CISC utasítás → több RISC mikroutasítás UltraSPARC II RISC gép picoJava II verem gép, sok memória hivatkozás több CISC utasítás → egy RISC mikroutasítás 10. előadás

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

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

  36. 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, viszont lassabb utasítások. 10. előadás

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

  38. Utasítások szintje (ISA) Amit a fordító program készítőjének tudnia kell: memóriamodell, regiszterek, adattípusok, utasítások. A hardver és szoftver között helyezkedik el, 5.1 ábra. Általában a mikro architektúra nem tartozik hozzá. A jóság két kritériuma: • hatékony hardver megvalósítási lehetőség, • jó médium a fordítóknak. Továbbfejlesztéseknél ügyelni kell a kompatibilitásra! Nyilvános definíció: van: SPARC, JVM (tervezők); nincs: Pentium II (gyártók). kernelmód (user) felhasználói mód 10. előadás

  39. Memória modellek Byte - ASCII kód 7 bit+paritás. Szó: 4 vagy 8 byte. Igazítás (alignment), 5.2. ábra: hatékonyabb, de probléma a kompatibilitás (a Pentium II-nek két ciklusra is szüksége lehet egy szó beolvasásához). Néha külön memória az adatoknak és az utasításoknak (nem ugyanaz, mint az osztott gyorsítótár!). Memória szemantika:STOREA -t közvetlenül követő LOAD A mit ad vissza? A memória műveletek végrehajtása: • kötött sorrendben, • definiálatlan sorrendben: • SYNC utasítás: befejeztet minden megkezdett memória műveletet, • RAW/WAR függőség esetén a hardver vár. 10. előadás

  40. Regiszterek ISA-szintena mikroszint nem minden regisztere látszik(TOS, MAR), de van közösis (PC, SP). Speciális regiszterek:PC, SP, … Általános célú regiszterek:a gyakran használt adatok gyors elérésére. Jó, ha szimmetrikusak: fordítók, konvenciók. RISC gépen általában legalább 32 általános célú. Kernelmódban továbbiak: gyorsítótár vezérlés, memória védelem, … PSW (Program Status Word): eredmény negatív, nulla, ... mód, prioritásszint, megszakítás-állapot, ... 10. előadás

  41. Utasításkészlet LOAD, STORE, MOVE, aritmetikai, logikai, feltételes elágazó utasítások, … Pentium II: Nagyon sok előd (kompatibilitás!), a fontosabbak: • 4004: 4 bites, • 8086, 8088: 16bites, 8 bites adat sín. • 80286: 24 bites (nem lineáris) címtartomány (16K darab 64 KB-s szegmens). • 80386:IA-32 architektúra, az Intel első 32 bites gépe, lényegében az összes későbbi is ezt használja. • Pentium II –től MMX utasítások. 10. előadás

  42. A Pentium IIüzemmódjai real (valós): az összes 8088 utáni fejlesztést kikapcsolja (8088-ként viselkedik). Hibánál a gép egyszerűen összeomlik, lefagy. virtuális 8086: a 8088-as programok védett módban futnak (ha az MS-DOS-t WINDOWS-ból indítjuk, és abban hiba történik, akkor nem fagy le, hanem visszaadja a vezérlést a WINDOWS-nak). védett: valódi Pentium II. 4 védelmi szint (PSW): 0: kernelmód (operációs r.), 1, 2: ritkán használt, 3: felhasználói mód. 10. előadás

  43. Memóriaszervezés: • 16Kdb szegmens (de a WINDOWS-ok és UNIX is csak egy szegmenst támogatnak, és ennek egy részét az operációs rendszer foglalja el), • minden szegmensen belül a címtartomány: 0 - 232-1 • Little Endian tárolási mód: az alacsonyabb címen van az alacsonyabb helyértékű bájt. 10. előadás

  44. Regiszterek (5.3. ábra): • (majdnem) általános regiszterek: EAX(afő aritmetikai), EBX(mutatók tárolása), ECX(ciklusszervezés), EDX(szorzás, osztásnál EAX-et 64 bitesre egészíti ki). Ezek 8 és 16 bites részei önálló regiszterként használhatók. 10. előadás

  45. Regiszterek (5.3. ábra): • ESI, EDI (mutatók tárolására, szöveg kezelésre), • EBP (keretmutató, verem kezelésre), • ESP (verem mutató), • CS, …, GS (kompatibilitás a régebbi gépekkel, mivel a Windows, Unix csak egy címtartományt használ, ezekre csak a visszafelé kompatibilitás miatt van szükség), • EIP (utasítás számláló), • EFLAGS (PSW). 10. előadás

  46. UltraSPARC II SPARC 1987 még 32, a Version 9 már 64bitesarchitektúra, az UltraSPARC ezen alapul. Memóriaszervezés: 64 bites (lineáris) címtartomány (jelenleg maximum 44 bit használható). Big endian, de little endian is beállítható. Regiszterek(szervezésük túl bonyolult): • 32 általános (5.4. ábra) 64 bites,a használatuk részben konvención, részben a hardveren alapul), • 32 lebegőpontos (32 vagy 64 bites, de lehetséges két regiszterben egy 128 bites számot tárolni). 10. előadás

  47. Általános regiszterek (5.4. ábra) • Globális változók: minden eljárás használhatja, • FP: az aktuális veremkeret mutatója, • SP, R31: visszatérési cím, • Be-, kimenő paraméterek, lokális változók. CWP (Current WindowPointer, 5.5. ábra) mutatjaaz aktuális regiszterablakot (több regiszter készlet létezik, de mindig csak egy látszik). Ha kifogya regiszter készlet, memóriába mentés, … Load/store architektúra:csak ezek az utasítások fordulhatnak a memóriához.A többi utasítás operandusa regiszterben vagy az utasításban van. Az eredmény regiszterbe kerül. 10. előadás

  48. JVM (Java Virtual Machine) Memóriamodell (4.10. ábra): konstans, lokális, operandus ésmetódus terület. Minden cím CPP,LV, SP vagy PCrelatív címzésű. Biztonság: Nincs pointer.Az internetről letöltött bináris programok nemtudnak kárt okozni. Maximum 64KB-os ill. 16 KW-ös területek, de minden metódusnak saját lokális területe van. Nagyobb, vagy dinamikus helyfoglalásra:halom (heap), new, release. Ha ez elfogy: szemétgyűjtő (garbage collector). Más, mint a verem! Nincs általános regiszter – sok a memóriához fordulás (PicoJava II. legfeljebb 16+16 KB cache). 10. előadás

More Related