az isa szint tervezési szempontjai hosszú távú : később is jó legyen az architektúra,

45
Máté: Architektú rák 11. előadás 1 Az ISA szint tervezési szempontjai Hosszú távú: később is jó legyen az architektúra, Rövid távú: addig is piacon kell maradni. Rövidebb utasítások: kevesebb helyet foglalnak el, gyorsabban betölthetők, Hosszabb utasítások: több lehetséges műveleti kód, nagyobb memória címezhető. Bájt címzés: hatékonyabb szöveg feldolgozásnál, Szó címzés: nagyobb memória címezhető. Utasításformák, utasításhossz (5.9-10. ábra).

Upload: scarlet-webster

Post on 01-Jan-2016

26 views

Category:

Documents


5 download

DESCRIPTION

Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az architektúra, Rövid távú : addig is piacon kell maradni. Rövidebb utasítások : kevesebb helyet foglalnak el, gyorsabban betölt hetők, Hosszabb utasítások : több lehetséges műveleti kód, nagyobb memória címezhető. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 1

Az ISA szint tervezési szempontjai

• Hosszú távú: később is jó legyen az architektúra,Rövid távú: addig is piacon kell maradni.

• Rövidebb utasítások: kevesebb helyet foglalnak el, gyorsabban betölthetők,Hosszabb utasítások: több lehetséges műveleti kód, nagyobb memória címezhető.

• Bájt címzés: hatékonyabb szöveg feldolgozásnál,Szó címzés: nagyobb memória címezhető.

• …

Utasításformák, utasításhossz (5.9-10. ábra).

Page 2: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 2

A műveleti kód kiterjesztése

k bites műveleti kód esetén 2k különböző utasítás lehet, n bites címrésznél 2n memória címezhető, és egyik csak a másik rovására növelhető (5.11. ábra).

Változó hosszúságú műveleti kód (5. 12. ábra).

Lehetőségek:

• fix utasításhossz: rövidebb kód mellett hosszabb operandus rész,

• minimális átlagos utasításhossz: a gyakori kódok rövidek, a ritkán használtak hosszabbak.

Page 3: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 3

Címzési módszerek

3, 2, 1, 0 címes utasítások.

Címzési módok:

közvetlen operandus,

direkt címzés,

regiszter címzés

regiszter-indirekt címzés,

indexelt címzés,

bázisindex címzés,

verem címzés.

Page 4: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 4

Verem címzés

Fordított Lengyel Jelölés

(Postfix Polish Notation - Lukasiewicz)

Postfix jelölés: a kifejezéseket olyan formában adjuk meg, hogy az első operandus után a másodikat, majd ezután adjuk meg a műveleti jelet:

infix: x + y, postfix: x y +.

Előnyei: nem kell zárójel, sem precedenciaszabályok, jól alkalmazható veremcímzés esetén.

Page 5: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 5

Dijkstra algoritmusa

Infix jelölés konvertálása postfix-re (5.20, 21. ábra):• az infix elemek egy váltóhoz (switch) érkeznek - a

változók és konstansok Kaliforniába mennek (), • a többi esetben a verem tetejétől függően

(5.21. ábra): – a kocsi Texas felé megy (1: ),– a verem teteje Kaliforniába megy (2: ),– a kocsi eltűnik a verem tetejével együtt (3: ),– vége az algoritmusnak (4: ),– hibás az infix formula (5: ?).

Példák: 5.22. ábra.

Page 6: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 6

Fordított lengyel jelölésű formulák kiértékelése

Pl. (5.23. ábra):

(8 + 2 * 5)/(1 + 3 * 2 – 4) // infix8 2 5 * + 1 3 2 * + 4 – / // postfix

Olvassuk a formulát balról jobbra!

Ha a következő jel

• operandus: rakjuk a verembe,

• műveleti jel: hajtsuk végre a műveletet (a verem tetején van a jobb, alatta a bal operandus!).

Page 7: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 7

Pentium II utasításformái (5.13. ábra)Több generáción keresztül kialakult architektúra.Csak egy operandus lehet memória cím. Prefix, escape (bővítésre), MOD, SIB (Scale Index

Base – Skála Index Bázis).

Címzési módok (5.26. ábra): nagyon szabálytalan, nehéz (kompatibilitás). Baj: nem minden utasításban használható minden mód, nem minden regiszter használható minden módban (nincs EBP indirekt, ESP relatív címzés).

SIB (5.27. ábra): jó, de megéri?

Page 8: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 8

UltraSPARC (5.14. ábra)32 bites egyszerű utasítások. Regiszter címzés (5 bit) + FP-OP, közvetlen (13 bit).LOAD, STORE és processzorokat szinkronizáló

utasítás (memóriát használó utasítások): a cím vagy két regiszter összege, vagy index + 13 bites eltolás.

32 bites közvetlen adat megadása: SETHI – megad 22 bitet, a következő utasítás a maradék 10 bitet.

Jósláshoz 3 bitet elcsíptek a PC-relatív eltolásból. Az A bit az eltolás rést akadályozza meg bizonyos

feltételek esetén. CALL, 30 bites relatív cím (szót címez).

Page 9: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 9

JVM (5.15. ábra)Változó hosszúságú egyszerű utasítások, 8 kivételével

mind 1, 2 vagy 3 típusú, a legtöbb 1 bájtos. Külön utasítások a kis indexű lokális változók betöltésére:

ILOAD_1 ≡ ILOAD 1 ≡ WIDE ILOAD 1 Címzési módok: közvetlen és index címzési mód

(5.15. ábra).

Page 10: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 10

Orthogonalitási elv: Jó architektúrában a műveleti kódok és a címzési módszerek (majdnem) szabadon párosíthatók.

Három címes elképzelés (5.24. ábra): A 2. típus közvetlen adat megadást, és index módú LOAD és STORE utasítást tesz lehetővé. A 3. típusba elágazó, eljárás hívó utasítások tartoznának, és ide is tartozna LOAD és STORE, ezek R0-t használnák.

Két címes elképzelés (5.25. ábra).

Összefoglaló: 5.28. ábra. A bonyolult címzési módok tömörebb programokat tesznek lehetővé, de nehezítik a párhuzamosítást. Ha a párosítás nem történhet szabadon, akkor jobb, ha csak egy választási lehetőség van (egyszerűbb hatékony fordítóprogramot írni).

Page 11: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 11

Utasítástípusok • Adatmozgató (másoló) utasítások.• Diadikus: +, -, *, /, AND, OR, NOT, XOR, … • Monadikus: léptetés, forgatás, CLR, INC, NEG, …• Összehasonlítás, feltételes elágazás: Z, O, C, …• Eljáráshívás. Visszatérési cím:

rögzített helyre (rossz) - az eljárás első szavába (jobb) - verembe (rekurzív eljárásokhoz is jó).

• Ciklusszervezés (5.29. ábra): számláló • Input/output (5.30-32. ábra):

- programozott I/O: tevékeny várakozás, 5.31. ábra- megszakítás vezérelt I/O- DMA I/O (5.32. ábra): cikluslopás

Page 12: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 12

A Pentium II utasításai• Egész utasítások legnagyobb része: 5.33. ábra.• Egyéb utasítások (pl. lebegőpontosak).

Az UltraSPARC utasításaiÖsszes egész utasítás: 5.34. ábra. A utasításnévben CC: beállítja a feltételkódot. Szimulált utasítások (5.35. ábra), pl.: MOV SRC,DST ≡ OR SRC,G0,DST

A picoJava II utasításai (5.36. ábra)Típusoltság biztonsági okokból. I (int: 32), L (long: 64) F (float: 32) D (double: 64 bit)

Page 13: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 13

Vezérlési folyamat

Szekvenciális vezérlés: Az utasítások abban a sorrendben kerülnek végrehajtásra, ahogy a memóriában elhelyezkednek.

Elágazás: 5.37. ábra.

Eljárás (5.42. ábra): Az eljáráshívás úgy tekinthető, mint egy magasabb szinten definiált utasítás végrehajtása: elég, ha azt tudjuk, mit csinál az eljárás, nem lényeges, hogy hogyan.

Rekurzív eljárás: önmagát közvetlenül vagy közvetve hívó eljárás.

Page 14: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 14

Hanoi tornyai (5.38-39. ábra) Rekurzív eljárás, amely n korongot mozgat át i-ről j-

re (5.40. ábra.):

public void towers (int n, int i, int j) { int k;

if(n==1) System.out.println(”korong: ”+i+”->”+j); else { k=6-i-j; towers(n-1, i, k); towers(1, i, j); towers(n-1, k, j); }}

Page 15: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 15

5.41. ábra

a verem

towers(3,1,3) k= után (a)

towers(2,1,2) k= után (b)

towers(1,1,3) 1 -> 3 k= után (c)

visszatérés után (d)

towers(1,1,2) 1 -> 2 k= után (e)

towers(1,3,2) 3 -> 2

towers(1,1,3) 1 -> 3

towers(2,2,3)

towers(1,2,1) 2 -> 1

towers(1,2,3) 2 -> 3

towers(1,1,3) 1 -> 3

5.39. ábra

Page 16: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 16

Rekurzív eljárások megvalósításához veremre van szükség. Minden hívás esetén az eljárás paramétereit a verembe kell tenni, és ott kell elhelyezni a lokális változókat is!

Eljárás prológus: a régi verem keret mutató (FP) elmentése, új verem keret mutató megadása és a verem mutató (SP) növelése, hogy legyen hely a veremben a lokális változók számára.

Eljárás epilógus: visszatéréskor a verem kitakarítása.

Page 17: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 17

5.45. ábra: Pentium II program (~5.45. ábra).

5.46. ábra: UltraSPARC II program, eltolás rés!

5.47. ábra: JVM program, kb. jó, csak az angolról fordítás miatt az elejét módosítani kellett volna:

”Move disk from” i ”to” j

”Korong mozgatása” i ”-ről” j ”-re”

Page 18: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 18

Vezérlési folyamat• Szekvenciális vezérlés (5.37. ábra)• Elágazás. • Eljárás: 5.42. ábra. • Csapdák.• Megszakítások.• Korutinok: 5.43. ábra. Párhuzamos feldolgozás

szimulálására alkalmas egy CPU-s gépen.

goto helyett jobb a ciklus vagy az eljárás alkalmazása.

Page 19: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 19

Assembler

előre hivatkozási probléma

egy sor olvasása

a beolvasott sor fordítása

a lefordított utasítás az object file-ba

a sor és a lefordított utasítás a lista file-ba

Page 20: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 20

Megoldási lehetőség:

Az assembler kétszer olvassa a program szövegét (két menet). Az első menet célja összegyűjteni, táblázatba foglalni a szimbólum definíciókat, így a második menet idején már minden (a programban definiált) szimbólum ismert, tehát a második menetben már nem jelentkezik az előre hivatkozás problémája.

Valahogy megpróbálni a fordítást egy menetben. Késleltetni a fordítást ott, ahol előre hivatkozás van, pl. táblázatba tenni a még le nem fordított részeket. A menet végén már minden szimbólum ismert, ekkor feldolgozni a táblázatot. Esetleg minden szimbólum definíciót követően azonnal feldolgozni a szimbólumra vonatkozó korábbi hivatkozásokat.

Page 21: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 21

Mindkét esetben szükség van szimbólum tábla készítésére, de az utóbbi megoldásban a még le nem fordított utasítások miatt is szükség van táblázatra. További nehézséget jelent, hogy nem sorban készülnek el a tárgy kód (object code) utasításai, ezért ezeket pl. listába kell helyezni, majd rendezni a listát, és csak ezután történhet meg az object és a lista file elkészítése.

Manapság a legtöbb assembler két menetben működik.

Page 22: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 22

Két menetes assembler, első menetLegfontosabb feladata a szimbólum tábla felépítése.A szimbólum tábla:

érték: – címke címe, – változó címe, – szimbolikus konstans értéke.

egyéb információk:– típus,– méret,– szegmens neve, amelyben a szimbólum definiálva van,– relokációs flag,– . . .

A szimbólum neve értéke egyéb információk

. . . . . . . . .

Page 23: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 23

Literál:

pl. az IBM 370-es gépcsaládon:

L 14,=F’5’ ; Load register 14 az 5-ös

; Full Word konstanssal

Többek között a literálok gyakori használata vezetett a közvetlen operandus megadás kialakulásához és elterjedéséhez.

Page 24: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 24

Egy lehetséges operációs kód tábla egy részlete:

mnemonic op1 op2 kód hossz osztály

AAA - - 37 1 6

ADD reg8 reg8 02 2 10

ADD reg16 reg16 03 2 11

... ... ... ... ... ...

AND reg8 reg8 22 2 10

AND reg16 reg16 23 2 11

... ... ... ... ... ...

Page 25: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 25

procedure ElsőMenet; 1. menet, vázlatconst méret = 8; EndUtasítás = 99;var HelySzámláló, osztály, hossz, kód: integer; VanInput: boolean; szimbólum, literál, mnemo:

array[1..méret] of char; sor: array[1..80] of char;begin Előkészítés; TáblákIinicializálása; HelySzámláló := 0; VanInput = true;

Page 26: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 26

while VanInput do begin sorok feldolgozása SorOlvasás(sor); Megőrzés(sor); if NemKomment(sor) then begin nem kommentár

SzimbólumDef(sor, szimbólum); if szimbólum[1] ’ ’ then

szimbólum definíció

ÚjSzimbólum(sor,szimbólum, HelySzámláló); LiterálKeresés(sor, literál); if literál[1] ’ ’ then ÚjLiterál(literál); hossz := 0; OpKódKeresés(sor, mnemo); OpKódTáblában(sor, mnemo, osztály, kód);

Page 27: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 27

if osztály 0 then nem létező utasítás PszeudoTáblában(sor,mnemo, osztály, kód);

if osztály 0 then HibásOpKód; hossz := típus(osztály); utasítás hossza HelySzámláló := HelySzámláló + hossz; if osztály = EndUtasítás then begin VanInput := false; LiterálTáblaRendezés; DuplikátumokKiszűrése; Lezárások; end;{if osztály = } end; nem kommentár end; while VanInput end; 1. menet

Page 28: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 28

OpKódKeresés eljárás triviális, mindössze az a feladata, hogy a sor-ban az első szóköz után a látható karaktereket a következő szóközig terjedően mnemo-ba másolja.

OpKódTáblában eljárás meglehetősen bonyolult, az operandusok elemzésével kell megállapítania, hogy az utasítás melyik osztály-ba tartozik. Látszólag feleslegesen határozza meg a kód-ot, de a többi feladata mellett ez már nagyon egyszerű, és így ez a függvény a második menetben változtatás nélkül alkalmazható.

Az OpKódTáblában eljárás nem alkalmas pl. az ORG pszeudo utasítás feldolgozására! Nem ismeri a HelySzámláló-t.

A SorOlvasás(sor); Megőrzés(sor); arra utal, hogy a második menetben olvashatjuk az első menet eredményét. Pl. az első menet folyamán szokás elvégezni az INCLUDE utasításokhoz, a makró definíciókhoz és makró hívásokhoz tartozó feladatokat.

Page 29: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 29

Az Előkészítés valami ilyesmi lehet: Push(NIL); sehova mutató pointer a verembe InputFileNyitás; p = ProgramSzövegKezdete;...

A továbbiak során p mutatja a következő feldolgozandó karaktert.

A SorOlvasás eljárás:begin while p = EOF do begin Pop(p); if p = NIL then ENDHiba; nincs END utasítás end; EgySorOlvasás(sor);end;

Page 30: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 30

Ha sor történetesen INCLUDE utasítás, akkor az EgySorOlvasás eljárás ezt a következőképpen dolgozhatja fel:

Push(p);

IncludeFileNyitás;

p = IncludeSzövegKezdete;

Page 31: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 31

procedure MásodikMenet; 2. menet, vázlatconst méret = 8; EndUtasítás = 99;var HelySzámláló, osztály, hossz, kód: integer; VanInput: boolean; szimbólum, mnemo: array[1..méret] of char; sor: array[1..80] of char; operandusok[1..3] of integer; op1, op2, címzési mód byte

object: [1..10] of byte;begin Előkészítés2; {nincs TáblákIinicializálása;} HelySzámláló := 0; VanInput = true;

Page 32: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 32

while VanInput do begin sorok feldolgozása SorOlvasás2(sor); {nincs Megőrzés(sor);} if NemKomment(sor) then begin nem kommentár

SzimbólumDef(sor, szimbólum); if szimbólum[1] ’ ’ then

szimbólum definíció

SzimbólumEllenőrzés (sor, szimbólum, HelySzámláló); {nincs LiterálKeresés(sor, literál);

hossz := 0; OpKódKeresés(sor, mnemo); OpKódTáblában(sor, mnemo, osztály, kód);

Page 33: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 33

if osztály 0 then nem létező utasítás PszeudoTáblában(sor,mnemo, osztály, kód);

if osztály 0 then HibásOpKód2; Most készül a lista!

case osztály of

0: hossz := fordít0(sor, operandusok);

1: hossz := fordít1(sor, operandusok);

...

end;

Összeállítás (kód, osztály, operandusok, object);

ObjectKiírás(object);

Listázás(HelySzámláló, object, sor);

HelySzámláló := HelySzámláló + hossz;

Page 34: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 34

if osztály = EndUtasítás then begin

VanInput := false;

{nincs LiterálTáblaRendezés;

DuplikátumokKiszűrése;}

Lezárások2;

end;{if osztály = }

end; nem kommentár end; while VanInput end; 2. menet

Page 35: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 35

Összeállítás = assemble

Az assembler számos hibát ismerhet fel:• használt szimbólum nincs definiálva,• egy szimbólum többször van definiálva,• nem létező operációs kód,• nincs elegendő operandus,• túl sok operandus van,• hibás kifejezés (pl. 9 egy oktális számban),• illegális regiszter használat,• típus hiba,• nincs END utasítás,• . . .

Page 36: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 36

Számos olyan hibát azonban, melyet a magasabb szintű

nyelvek fordítói könnyen felismernek – vagy egyáltalán elő se

fordulhatnak – az assembler nem tud felderíteni:• az eljárás hívás paramétereinek típusa nem megfelelő,• a regiszter mentések és helyreállítások nem állnak

„párban”,• hibás vagy hiányzik a paraméter vagy a lokális változó

terület ürítése a veremből,• a hívás és a hívott eljárás helyén érvényes ASSUME-ok

ellentmondásosak (nem feltétlenül hiba, de az lehet),• . . .

Page 37: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 37

Az object file nemcsak a lefordított utasításokat tartalmazza, hanem további – a szerkesztőnek szóló – információt is.

Page 38: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 38

Makró generátorFeladata a makró definíciók megjegyzése (pl. makró

táblába helyezése) és a makró hívások kifejtése. Általában az assembler első menetében működik.

Makró definíciók felismeréseAmennyiben az assembler a forrás szöveg olvasása

közben makró definíciót talál (ezt könnyű felismerni a műveleti kód részen lévő MACRO szó alapján), akkor a makró definíció teljes szövegét – az ENDM műveleti kódot tartalmazó sor végéig – elhelyezi a makró táblában. A felismerést és a tárolást a SorOlvasás vagy a PszeudoTáblában eljárás végezheti.

Page 39: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 39

Makró hívások kifejtése

Az

OpKódTáblában(sor,mnemo, osztály, kód); if osztály 0 then nem létező utasítás

PszeudoTáblában(sor, mnemo, osztály, kód);

programrész után be kell szúrni az

if osztály 0 then

MakróTáblában(sor, mnemo, osztály, kód);

sorokat. A eljárás feladata a makró hívás felismerése és a makró helyettesítés is. A kifejtett makró egy pufferbe kerül, a puffer tartalma az INCLUDE utasításnál látottakhoz hasonlóan illeszthető a program szövegébe.

Page 40: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 40

A makró kifejtés egy ciklikusban:

EgySzóOlvasásaAMakróTörzsből;

if FormálisParaméter then

AMegfelelőAktuálisParaméterÁtmásolása;

else

ASzóÁtmásolása;

ElválasztójelFeldolgozása;

Az ElválasztójelFeldolgozása legtöbbször az elválasztójel másolását jelenti, de a makró definícióban különleges szerepet játszó karakterek esetén ettől eltérő – magától értetődő – speciális feladatot kell végrehajtani.

Page 41: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 41

A LOCAL utasítás feldolgozásához a makró generátor egy 0 kezdeti értékű változót használ. Makró híváskor a LOCAL utasításban szereplő szimbólumot, és az összes előfordulását a makró törzsben ??xxxx alakú azonosítóval helyettesíti, ahol xxxx a változó aktuális értéke hexadecimális számrendszerben. A változó értékét minden a LOCAL utasításban szereplő szimbólum feldolgozása után 1–gyel növeli.

Legegyszerűbb, ha a lokális szimbólumot formális paraméternek tekinti, és a generált ??xxxx alakú azonosítót a megfelelő argumentumnak.

Page 42: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 42

FeladatokAz ISA szint tervezési szempontjai.Milyen utasítás formákat ismer?Hogy viszonyulhat az utasítás hossza a szóhosszhoz?Mit jelent a műveleti kód kiterjesztése?Milyen címzési módszereket ismer?Mit jelent a postfix címzés?Hogy alakítható át egy infix formula postfix-é?Hogy értékelhető ki egy postfix formula?Milyen utasítás formái vannak a Pentium II-nek?Mi a SIB szerepe?Milyen utasítás formái voltak a SPARC gépnek?Milyen utasítás formái vannak a JVM-nek?

Page 43: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 43

FeladatokMi az orthogonalitási elv?Milyen utasítás formái lehetnek egy 3 címes gépnek?Milyen utasítás formái lehetnek egy 2 címes gépnek?Milyen utasítástípusokat ismer?Mi a különbség az UltraSPARC II ADD, ADDC,

ADDCC és ADDCCC utasításai között?Mi a szekvenciális vezérlés?Mi az eljárás?Mi a rekurzív eljárás?Mi az eljárás prológus?Mi az eljárás epilógus?Mi az eltolási rés?Mit nevezünk korutinnak (coroutine)?

Page 44: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 44

FeladatokMi az előre hivatkozási probléma?Milyen megoldásokat ismer az előre hivatkozási

problémára?Mi a szimbólum tábla?Mi a literál?Mi az OpKódKeresés feladata?Mi az OpKódTáblában feladata?Hogy nézhet ki az Előkészítés eljárás?Hogy nézhet ki az SorOlvasás eljárás?Hogy dolgozható fel az INCLUDE utasítás?Milyen hibákat ismerhet föl az assembler?Milyen hibákat nem képes fölismerni az assembler?

Page 45: Az ISA szint tervezési szempontjai Hosszú távú : később is jó legyen az  architektúra,

Máté: Architektúrák 11. előadás 45

FeladatokMi a makró generátor feladata?Hogy ismerhetők föl a makró definíciók?Mi a makró generátor feladata makró definíció esetén?Hogy ismerhetők föl a makró hívások?Hogy illeszthető a program szövegéhez a makró

kifejtés eredménye?Hogy működhet a makró kifejtés?Hogy történhet a LOCAL utasítás feldolgozása?