Az ISA szint tervezési szempontjai

Slides:



Advertisements
Hasonló előadás
Adatbázisrendszerek elméleti alapjai 2. előadás
Advertisements

Számítógépek felépítése 3. előadás CPU, utasítás ciklus, címzés
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
Programozási Nyelvek (C++) Gyakorlat Gyak 03.
Adatbázisrendszerek elméleti alapjai 5. előadás
JavaScript.
Programozási alapismeretek 7. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás2/  Sorozatszámítás.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Bevezetés a Java programozásba
11. előadás (2005. május 10.) A make segédprogram Alacsony szintű műveletek és bitmezők Fájl, katalógus rendszer hívások 1.
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje (ábra) Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire előny,
Máté: Architektúrák13. előadás1 procedure MásodikMenet;  2. menet, vázlat  const méret = 8; EndUtasítás = 99; var HelySzámláló, osztály, hossz, kód:
. . Egyszerű sín alapú számítógép (2.1. ábra)
Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje (ábra) Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire előny,
Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje (4.17. ábra) Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire.
Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire előny, de.
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.
EKG kapuzott (ECG gated) szív vizsgálat
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Máté: Architektúrák12. előadás1 Blokk ismétlés Nemcsak a blokk definíciójának kezdetét jelölik ki, hanem a kifejtést (hívást) is előírják. A program más.
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
Mutatók, tömbök, függvények
Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 1 Fordítóprogramok 1 Programozó matematikus szak 2003/2004-es tanév II. félév.
PIC processzor és környezete
CISC - RISC processzor jellemzők
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
6. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
Fuzzy halmazok. 4. előadás2 3 4 Egy hagyományos halmazEgy Fuzzy halmaz.
Egy harmadik generációs gép (az IBM 360) felépítése
Ficsor Lajos Template-ek CPP8/ 1 Template-ek. Ficsor Lajos Template-ek CPP8/ 2 A template fogalma Kiindulási probléma: tetszőleges típusokon kellene ugyanolyan.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
C nyelv utasításai.
Máté: Architektúrák11. előadás1 Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’... szegmens sz_név ENDS sz_név a szegmens (szelet)
Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje (4.17. ábra) Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire.
szakmérnök hallgatók számára
Alprogramok deklarációja, definíciója és meghívása Páll Boglárka.
Összetett adattípusok a Pascal nyelvben
Ismétlés A pascal program szerkezete: program programnev; Programfej
Összetett adattípusok
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
Készítette: Csíki Gyula
Hernyák Zoltán Programozási Nyelvek II.
Hernyák Zoltán Programozási Nyelvek II.
Egy második generációs gép (az IBM 7094) felépítése
Egy első generációs gép (az IAS) felépítése
A Mikroprocesszor Harmadik rész.
Objektum orientált programozás
Objektum orientált programozás
A Visual Basic nyelvi elemei
Osztott adatbázisok.  Gyors ismétlés: teljes redukáló  Teljes redukáló költsége  Természetes összekapcsolások vetítése  Természetes összekapcsolások.
Barna Róbert KE GTK Informatika Tanszék Pénzügyi feladatok VBA támogatása 7. előadás.
Barna Róbert KE GTK Informatika Tanszék Pénzügyi feladatok VBA támogatása 8. előadás.
C Programozási alapok.
Írja fel a tizes számrendszerbeli
A 2. géptermi beszámoló VBA anyagának összefoglalása
Máté: Architektúrák13. előadás1 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.
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
HEFOP 3.3.1–P /1.0A projekt az Európai Unió társfinanszírozásával, az Európa terv keretében valósul meg. 1 Számítógép architektúrák dr. Kovács.
Memóriakezelés feladatok Feladat: 12 bites címtartomány. 0 ~ 2047 legyen mindig.
Excel programozás (makró)
Számítógépek felépítése 4. előadás ALU megvalósítása, vezérlő egység
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
Változók.
Számítógép architektúrák
procedure MásodikMenet; 2. menet, vázlat
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Cache példák 2019 (IMSC).
Előadás másolata:

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). 349-351 Máté: Architektúrák 11. előadás

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. 351-354 Máté: Architektúrák 11. előadás

regiszter-indirekt címzés, indexelt címzés, bázisindex címzés, 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. 358-364 Máté: Architektúrák 11. előadás

Fordított Lengyel Jelölés 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. 364-365 Máté: Architektúrák 11. előadás

Infix jelölés konvertálása postfix-re (5.20, 21. ábra): 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. 364-366 Máté: Architektúrák 11. előadás

Fordított lengyel jelölésű formulák kiértékelése Pl. (5.23. ábra): (8 + 2 * 5)/(1 + 3 * 2 – 4) // infix 8 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!). 367-368 Máté: Architektúrák 11. előadás

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? 354-355, 370-372 Máté: Architektúrák 11. előadás

32 bites egyszerű utasítások. 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). 355-356, 372 Máté: Architektúrák 11. előadás

ILOAD_1 ≡ ILOAD 1 ≡ WIDE ILOAD 1 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). 356-358, 372-373 Máté: Architektúrák 11. előadás

Két címes elképzelés (5.25. ábra). 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). 368-370, 372-373 Máté: Architektúrák 11. előadás

Adatmozgató (másoló) utasítások. 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 373-384 Máté: Architektúrák 11. előadás

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) 385-398 Máté: Architektúrák 11. előadás

Rekurzív eljárás: önmagát közvetlenül vagy közvetve hívó eljárás. 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. 400-401 Máté: Architektúrák 11. előadás

Rekurzív eljárás, amely n korongot mozgat át i-ről j-re (5.40. ábra.): 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); } 402-403 Máté: Architektúrák 11. előadás

towers(1,1,3) 1 -> 3 k= után (c) visszatérés után (d) 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 403-405 Máté: Architektúrák 11. előadás

Eljárás epilógus: visszatéréskor a verem kitakarítása. 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. 403-405 Máté: Architektúrák 11. előadás

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” 404-405, 412-418 Máté: Architektúrák 11. előadás

Szekvenciális vezérlés (5.37. ábra) Elágazás. Eljárás: 5.42. ábra. 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. 400-412 Máté: Architektúrák 11. előadás

előre hivatkozási probléma egy sor olvasása 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 A92, 528-529 Máté: Architektúrák 11. előadás

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. A92, 528-529 Máté: Architektúrák 11. előadás

Manapság a legtöbb assembler két menetben működik. 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. A92, 528-529 Máté: Architektúrák 11. előadás

Két menetes assembler, első menet Legfontosabb 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 . . . A93-93, 529-531 Máté: Architektúrák 11. előadás

pl. az IBM 370-es gépcsaládon: L 14,=F’5’ ; Load register 14 az 5-ös 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. A94, 531-532 Máté: Architektúrák 11. előadás

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 02 2 10 reg16 03 11 ... AND 22 23 A94-95, 531 Máté: Architektúrák 11. előadás

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; A95, 532-533 Máté: Architektúrák 11. előadás

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); A95-96, 532-533 Máté: Architektúrák 11. előadás

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 A96, 532-533 Máté: Architektúrák 11. előadás

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. A95-96, 532 Máté: Architektúrák 11. előadás

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); A96-97 Máté: Architektúrák 11. előadás

p = IncludeSzövegKezdete; 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; A97 Máté: Architektúrák 11. előadás

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; A97-98, 534 Máté: Architektúrák 11. előadás

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); A98, 534 Máté: Architektúrák 11. előadás

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; A98-99, 534 Máté: Architektúrák 11. előadás

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 A99, 534 Máté: Architektúrák 11. előadás

Ö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, . . . A99, 535 Máté: Architektúrák 11. előadás

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), . . . A99 Máté: Architektúrák 11. előadás

Az object file nemcsak a lefordított utasításokat tartalmazza, hanem további – a szerkesztőnek szóló – információt is. 402-408 Máté: Architektúrák 11. előadás

Makró definíciók felismerése 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. A101, 528 Máté: Architektúrák 11. előadás

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. A101 Máté: Architektúrák 11. előadás

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. A101-102 Máté: Architektúrák 11. előadás

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. A102, 527 Máté: Architektúrák 11. előadás

Az ISA szint tervezési szempontjai. Milyen utasítás formákat ismer? 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? Máté: Architektúrák 11. előadás

Mi az orthogonalitási elv? 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)? Máté: Architektúrák 11. előadás

Mi az előre hivatkozási probléma? 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? Máté: Architektúrák 11. előadás

Mi a makró generátor feladata? Hogy ismerhetők föl a makró definíciók? 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? Máté: Architektúrák 11. előadás