Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaCsenge Feketené Megváltozta több, mint 10 éve
1
Máté: Architektúrák11. előadás1 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ő. …
2
Máté: Architektúrák11. előadás2 Utasításformák, utasításhossz (5.9-10. ábra). Műveleti kód cím Műv. kódcím1cím2 M.k.cím1cím2cím3 1 szó utasítás 1 szó utasítás 1 szó utasítás ut. utasítás
3
Máté: Architektúrák11. előadás3 A műveleti kód kiterjesztése k bites műveleti kód esetén 2 k különböző utasítás lehet, n bites címrésznél 2 n memória címezhető, és egyik csak a másik rovására növelhető (5.11. ábra). 1514131211109876543210 műv. kód1. cím2. cím3. cím 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.
4
Máté: Architektúrák11. előadás4 A műveleti kód kiterjesztése (5.12. ábra) 16 bit 4 bites műveleti kód 0000xxxxyyyyzzzz 15 db 3 címes utasítás 0001xxxxyyyyzzzz 0010xxxxyyyyzzzz... 1100xxxxyyyyzzzz 1101xxxxyyyyzzzz 1110xxxxyyyyzzzz 16 bit 8 bites műveleti kód 11110000yyyyzzzz 14 db 2 címes utasítás 11110001yyyyzzzz 11110010yyyyzzzz... 11111011yyyyzzzz 11111100yyyyzzzz 11111101yyyyzzzz Az 1111 kódot nem használtuk ki 3 címes utasításnak (menekülő kód), és ez lehetővé teszi, hogy további – igaz, nem 3 címes – utasításokat adjunk meg. 1111 1110 és 1111 1111 is menekülő kód.
5
Máté: Architektúrák11. előadás5 A műveleti kód kiterjesztése 16 bit 12 bites műveleti kód 111111100000zzzz 31 db 1 címes utasítás 111111100001zzzz 111111100010zzzz... 11111110 zzzz 111111101111zzzz 1111 0000zzzz 1111 0001zzzz... 1111 1101zzzz 1111 1110zzzz 16 bit 16 bites műveleti kód 1111 0000 16 db 0 címes utasítás 1111 0001 1111 0010... 1111 1101 1111 1110 1111 1111 1111 1111 is menekülő kód.
6
Máté: Architektúrák11. előadás6 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): 815558 1Műv.kód0célforrás1forrás2Műv.kód 2 1célforrás1eltolás 3Műv.kódeltolás 1. típus: aritmetikai utasítások. 2. típus: közvetlen adat megadás, index módú LOAD és STORE utasítás. 3. típus: elágazó, eljárás hívó utasítások, LOAD és STORE, ezek R0 -t használnák.
7
Máté: Architektúrák11. előadás7 Két címes elképzelés (5.25. ábra). 8354354 Műv.kódmódregeltolásmódregeltolás Feltételes 32 bites direkt operandus vagy eltolás A mód 3 bitje lehetővé teszi a közvetlen operandus, direkt, regiszter, regiszter indirekt, index és verem címzési módokat Két további mód bevezetésére is lehetőség van.
8
Máté: Architektúrák11. előadás8 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) 0-51-20-1 0-4 prefixműv.kódmódSIBeltolásközvetlen 233 módRECR/M 233 skálaindexbázis 611 utasítás Melyik operandus a forrás? bájt/szó bit bájt
9
Máté: Architektúrák11. előadás9 Címzési módok (5.26. ábra): nagyon szabálytalan. 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). 32 bites címzési módok: MÓD R/M00011011 000M[EAX]M[EAX+offset8]M[EAX+offset32]EAX v. AL 001M[ECX]M[ECX+offset8]M[ECX+offset32]ECX v. CL 010M[EDX]M[EDX+offset8]M[EDX+offset32]EDX v. DL 011M[EBX]M[EBX+offset8]M[EBX+offset32]EBX v. BL 100SIBSIB offset8-calSIB offset32-velESP v. AH 101direktM[EBP+offset8]M[EBP+offset32]EBP v. CH 110M[ESI]M[ESI+offset8]M[ESI+offset32]ESI v. DH 111M[EDI]M[EDI+offset8]M[EDI+offset32]EDI v. BH
10
Máté: Architektúrák11. előadás10 SIB (5.27. ábra): jó, de megéri? ← EBP Egyéb lokális változók a[0] ← EBP+8 a[1] ← EBP+12 a[2] ← EBP+16 Verem keret Legyen i az EAX regiszterben SIB módú hivatkozás: M[4*EAX+EBP+8] 233 skálaindexbázis bit
11
Máté: Architektúrák11. előadás11 UltraSPARC (5.14. ábra) 32 bites egyszerű utasítások. Form.2565185 1a m.k.célm.k.forrás10FP-OPforrás23 címes 1b m.k.célm.k.forrás11közvetlen konst.2 címes Aritmetikai utasítások: 1 cél és 2 forrás regiszter vagy 1 cél, 1 forrás regiszter és 1 közvetlen konstans. LOAD, STORE (csak ezek használják a memóriát): a cím két regiszter összege vagy egy regiszter + 13 bites eltolás. Processzorokat szinkronizáló utasítás.
12
Máté: Architektúrák11. előadás12 32 bites közvetlen adat megadása: SETHI – megad 22 bitet, a következő utasítás a maradék 10 bitet. Form.25322 2 m.k.célm.k.közvetlen konstansSETHI Form.214322 (19) 3 m.k. A feltm.k.PC relatív címUGRÁS Az ugrások PC -relatívok, szót (4-gyel osztható bájt címet) címeznek. Jósláshoz 3 bitet elcsíptek. Az A bit az eltolás rést akadályozza meg bizonyos feltételek esetén. 3 Form.230 4 m.k. PC relatív cím CALL Eljárás hívás: 30 bites PC -relatív (szó) cím
13
Máté: Architektúrák11. előadás13 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, kis konstansok verembe töltésére: ILOAD_1 ~ ILOAD 1 ~ WIDE ILOAD 1 Címzési módok: közvetlen és index címzési mód 88888 1Műv.kód 2 bájt index, konstans vagy típus 3Műv.kódshortindex, konstans, eltolás
14
Máté: Architektúrák11. előadás14 A további 8 utasítás szinte mind külön csoportot alkot. Ezekkel nem foglalkozunk részletesen. 88888 4Műv.kódindexkonstans 5Műv.kódindexdimenzió 6Műv.kódindex#param.0 7Műv.kódindexkonstans 8Műv.kód32 bites ugrási eltolás 9Műv.kódváltozó hosszúságú
15
Máté: Architektúrák11. előadás15 Összefoglaló: 5.28. ábra. Címzési módPentium IIUltraSPARC IIJVM KözvetlenXXX DirektX RegiszterXX Regiszter indirektX IndexXXX Bázis-indexXX VeremX 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).
16
Máté: Architektúrák11. előadás16 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
17
Máté: Architektúrák11. előadás17 Ciklusszervezés (5.29. ábra) i=1; L1:első utasítás. utolsó utasítás i = i + 1; if(i ≤ n) goto L1; Végfeltételes ismétlés i=1; L1: if(i > n) goto L2; első utasítás. utolsó utasítás i = i + 1; goto L1; L2:… Kezdő feltételes ismétlés
18
Máté: Architektúrák11. előadás18 Feltételes végrehajtás (5.49-50. ábra): CMOVZ R2, R3, R1 csak akkor hajtja végre R2 = R3 -t, ha R1= 0. if(R1 == 0) R2 = R3; CMP R1, 0 BNE L1 MOV R2, R3 L1: … CMOVZ R2, R3, R1 if(R1 == 0) { R2 = R3; R4 = R5; } else { R6 = R7; R8 = R9; } CMP R1, 0 BNE L1 MOV R2, R3 MOV R4, R5 BR L2 L1: MOV R6, R7 MOV R8, R9 L2: … CMOVZ R2, R3, R1 CMOVZ R4, R5, R1 CMOVN R6, R7, R1 CMOVN R8, R9, R1
19
Máté: Architektúrák11. előadás19 Predikáció, IA – 64 (5. 51. ábra) 64 predikátum regiszter: 1 bites regiszterek, többnyire párban. CMPEQ R2, R3, P4 beállítja P4 -et és törli P5 -öt, ha R2 = R3, különben P5 -öt állítja be és P4 -et törli. if(R1 == R2) R3 = R4 + R5; else R6 = R4 – R5; CMP R1, R2 BNE L1 MOV R3, R4 ADD R3, R5 BR L2 L1: MOV R6, R4 SUB R6, R5 L2: … CMPEQ R1, R2, P4 ADD R3, R4, R5 SUB R6, R4, R5
20
Máté: Architektúrák11. előadás20 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)
21
Máté: Architektúrák11. előadás21 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. idő szekvenciális vezérlés elágazás program számláló
22
Máté: Architektúrák11. előadás22 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. hívó eljárás hívott eljárás főprogram …
23
Máté: Architektúrák11. előadás23 Hanoi tornyai (5.38-40. ábra) Rekurzív eljárás, amely n korongot mozgat i -ről j -re: public void towers (int n, int i, int j) { int k; if(n==1) // System.out.println(”korong: ”+i+”->”+j”re”); 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); }
24
Máté: Architektúrák11. előadás24 5.39-40. ábra 5.41. ábra Hívások: A verem tartalma az eljárásban: towers(3,1,3) 3, 1, 3, V, F, k towers(2,1,2) 3, 1, 3, V, F, 2, 2, 1, 2, V, F, k towers(1,1,3)1 -> 3 3, 1, 3, V, F, 2, 2, 1, 2, V, F, 3, 1, 1, 3, V, F, k visszatérés után 3, 1, 3, V, F, 2, 2, 1, 2, V, F, 3 towers(1,1,2)1 -> 2 3, 1, 3, V, F, 2, 2, 1, 2, V, F, 3, 1, 1, 2, V, F, k towers(1,3,2)3 -> 2 towers(1,1,3)1 -> 3V: visszatérési cím towers(2,2,3)F: régi FP towers(1,2,1)2 -> 1 towers(1,2,3)2 -> 3 towers(1,1,3)1 -> 3
25
Máté: Architektúrák11. előadás25 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.
26
Máté: Architektúrák11. előadás26 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” ”Korong mozgatása” i ”->” j
27
Máté: Architektúrák11. előadás27 Vezérlési folyamat Szekvenciális vezérlés (5.37. ábra) Elágazás. Eljárás: 5.42. ábra. Megszakítások. Csapdák. Korutinok: 5.43. ábra. Párhuzamos feldolgozás szimulálására alkalmas egy CPU-s gépen. A B főprogram … goto helyett jobb a ciklus vagy az eljárás alkalmazása! korutinok
28
Máté: Architektúrák11. előadás28 Assembler 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 előre hivatkozási probléma
29
Máté: Architektúrák11. előadás29 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ási probléma. 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.
30
Máté: Architektúrák11. előadás30 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.
31
Máté: Architektúrák11. előadás31 Két menetes assembler, első menet Legfontosabb feladata a szimbólum tábla felépítése. A szimbólum tábla: A szimbólum neve értékeegyéb információk... érték:– címke címe, – változó címe, – szimbolikus konstans értéke.
32
Máté: Architektúrák11. előadás32 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ékeegyéb információk...
33
Máté: Architektúrák11. előadás33 Literál: pl. az IBM 370-es gépcsaládon: L14,=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.
34
Máté: Architektúrák11. előadás34 Egy lehetséges operációs kód tábla részlete: mnemonicop1op2kódhosszosztály AAA --3716 ADD reg8 02210 ADD reg16 03211... AND reg8 22210 AND reg16 23211...
35
Máté: Architektúrák11. előadás35 procedure ElsőMenet; 1. menet, vázlat const 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;
36
Máté: Architektúrák11. előadás36 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);
37
Máté: Architektúrák11. előadás37 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
38
Máté: Architektúrák11. előadás38 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.
39
Máté: Architektúrák11. előadás39 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;
40
Máté: Architektúrák11. előadás40 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;
41
Máté: Architektúrák11. előadás41 procedure MásodikMenet; 2. menet, vázlat const 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;
42
Máté: Architektúrák11. előadás42 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);
43
Máté: Architektúrák11. előadás43 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;
44
Máté: Architektúrák11. előadás44 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
45
Máté: Architektúrák11. előadás45 Ö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,...
46
Máté: Architektúrák11. előadás46 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),...
47
Máté: Architektúrák11. előadás47 Az object file nemcsak a lefordított utasításokat tartalmazza, hanem további – a szerkesztőnek szóló – információt is.
48
Máté: Architektúrák11. előadás48 Makró generátor Feladata 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ése Amennyiben 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.
49
Máté: Architektúrák11. előadás49 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.
50
Máté: Architektúrák11. előadás50 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.
51
Máté: Architektúrák11. előadás51 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.
52
Máté: Architektúrák11. előadás52 Feladatok Az 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?
53
Máté: Architektúrák11. előadás53 Feladatok Mi 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)?
54
Máté: Architektúrák11. előadás54 Feladatok Mi 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?
55
Máté: Architektúrák11. előadás55 Feladatok Mi 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?
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.