480 likes | 556 Views
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.
E N D
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
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
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
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
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
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
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
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
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
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
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
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
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. 10. előadás
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
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
.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
.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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Ö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
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
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
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
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
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
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
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
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
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
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
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
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
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
Á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
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