Upload
neo
View
17
Download
0
Embed Size (px)
DESCRIPTION
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. - PowerPoint PPT Presentation
Citation preview
Máté: Architektúrák 10. előadás 1
Szegmens, szegmens csoportsz_név SEGMENT aling_type combine_type ’osztály’. . . szegmens sz_név ENDSsz_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.
Máté: Architektúrák 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.
Máté: Architektúrák 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.
Máté: Architektúrák 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.
Máté: Architektúrák 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.
Máté: Architektúrák 10. előadás 6
A GROUP utasítással csoportosíthatjuk a szegmenseinket:
G_nevGROUP 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.
Máté: Architektúrák 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
Máté: Architektúrák 10. előadás 8
code segment para public ’code’ASSUME CS:code, DS:GRPASSUME SS:stack, ES:nothing
...MOV SI,OFFSET W ; SI W offset-je: 0
; az ADAT2 szegmens elejétől mért távolságMOV 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....
Máté: Architektúrák 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.
Máté: Architektúrák 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.
Máté: Architektúrák 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.
Máté: Architektúrá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.
Máté: Architektúrák 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 (10op1255), op2 az egy sorba írható karakterek számát jelenti (60op2132). 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.
Máté: Architektúrák 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.
Máté: Architektúrák 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).
Máté: Architektúrák 10. előadás 16
.LISTEngedé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.
Máté: Architektúrák 10. előadás 17
.CREFKé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).
Máté: Architektúrák 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.
Máté: Architektúrák 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.
Máté: Architektúrák 10. előadás 20
Memóriába írásStraté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.
Máté: Architektúrák 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.
Máté: Architektúrák 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.
Máté: Architektúrák 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.
Máté: Architektúrák 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. ábra Cí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ó.
Máté: Architektúrák 10. előadás 25
UltraSPARC II CPU mikroarchitektúrájaA 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.
Máté: Architektúrák 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.
Máté: Architektúrák 10. előadás 27
9 szakaszos csővezeték (4.50. ábra)1. ciklusonként max. 4 utasítás az I-gyorsítóból,2. néhány irányító bitet tesz az utasításokhoz,3. 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,
8. csapda kezelés9. regiszterekbe írás
Máté: Architektúrák 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 II CPU + 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.
Máté: Architektúrák 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.
Máté: Architektúrák 10. előadás 30
picoJava II csővezetéke (4.52. ábra)
1. Betöltés: egyszerre 8 bájt az I gyorsítótárból.
2. 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.
3. Operandus betöltés a veremből (regiszter oszlopból).
4. Utasítás végrehajtás.
5. D gyorsítóba írás, ha kell.
6. Eredmények verembe írása , ha kell.
Máté: Architektúrák 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.
Máté: Architektúrák 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.
Máté: Architektúrák 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
Máté: Architektúrák 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.
Máté: Architektúrák 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).
Máté: Architektúrák 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.
Máté: Architektúrák 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!
Máté: Architektúrák 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
Máté: Architektúrák 10. előadás 39
Memória modellekByte - 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: STORE A -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.
Máté: Architektúrák 10. előadás 40
RegiszterekISA-szinten a mikroszint nem minden regisztere
látszik (TOS, MAR), de van közös is (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, ...
Máté: Architektúrák 10. előadás 41
UtasításkészletLOAD, 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: 16 bites, 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.
Máté: Architektúrák 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.
Máté: Architektúrák 10. előadás 43
Memóriaszervezés:
• 16K db 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.
Máté: Architektúrák 10. előadás 44
Regiszterek (5.3. ábra):
• (majdnem) általános regiszterek: EAX (a fő 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.
Máté: Architektúrá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).
Máté: Architektúrák 10. előadás 46
UltraSPARC II
SPARC 1987 még 32, a Version 9 már 64 bites architektú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).
Máté: Architektúrák 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 Window Pointer, 5.5. ábra) mutatja az
aktuális regiszter ablakot (több regiszter készlet létezik, de mindig csak egy látszik). Ha kifogy a 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.
Máté: Architektúrák 10. előadás 48
JVM (Java Virtual Machine)Memóriamodell (4.10. ábra): konstans, lokális,
operandus és metódus terület. Minden cím CPP, LV, SP vagy PC relatív címzésű.
Biztonság: Nincs pointer. Az internetről letöltött bináris programok nem tudnak kárt okozni.
Maximum 64 KB-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).