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)

Slides:



Advertisements
Hasonló előadás
C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Advertisements

 Megfigyelhető, hogy amikor több elem közötti összehasonlítás történik, akkor szükség van egyszerre több értékre is, főleg akkor, ha ezek az értékek jóval.
C++ programozási nyelv Gyakorlat hét
Összefoglalás 1. Pascal program szerkezete 2. Pascal típusai
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Budapesti Műszaki és Gazdaságtudományi Egyetem Elektronikus Eszközök Tanszéke A programozás alapjai 1. (VIEEA100) 9. előadás.
Adatbázisrendszerek elméleti alapjai 6. előadás
Adatbázisrendszerek elméleti alapjai 5. előadás
Visual Basic for Application (VBA)
JavaScript.
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Programozási alapismeretek 7. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás2/  Sorozatszámítás.
Programozás alapjai.
Dinamikus tömbök.
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á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:
Az ISA szint tervezési szempontjai
Máté: Architektúrák10. 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á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
Máté: Orvosi képfeldolgozás1. előadás1. Máté: Orvosi képfeldolgozás1. előadás2 A leképezés fizikai alapjai Fény, fénykép, mikroszkóp Röntgen sugárzás.
Máté: Orvosi képfeldolgozás3. előadás1 Torzítás. Máté: Orvosi képfeldolgozás3. előadás2 A tárgy nagyítása A forrás nagyítása forrás tárgy kép A tárgy.
Programozás II. 3. Gyakorlat C++ alapok.
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.
C A C nyelv utasításai.
Mutatók, tömbök, függvények
C A C nyelv utasításai. Ismétlés Utasítások csoportosítása.
A verem működése fpga-n
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.
Reprezentációs függvény. Adva egy adattípus absztrakt és konkrét specifikációja: d a = ( A, F, E a ); d c = ( C, G, E c ); A = {A 0,..., A n };C = {C 0,...,
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Fuzzy halmazok. 4. előadás2 3 4 Egy hagyományos halmazEgy Fuzzy halmaz.
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.
P ROGRAMOZÁS I/O műveletek. S YSTEM.C ONSOLE A programjainknak fontos része a felhasználóval való kommunikáció. Adatokat kell kérni tőle, vagy közölnünk.
Programozás Az adatokról C# -ban.
Máté: Architektúrák12. előadás1 Operációs rendszer szintje Operating System Machine (OSM) Ezen a szinten programozóknak rendelkezésre állnak a felhasználói.
Alprogramok deklarációja, definíciója és meghívása Páll Boglárka.
Szintaktikai, szemantikai szabályok
1.3. Pascal program felépítése Az els ő program. Program ; … Begin … End. Program fej Deklarációs rész Végrehajtó rész.
Összetett adattípusok
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
Hernyák Zoltán Programozási Nyelvek II.
Hernyák Zoltán Programozási Nyelvek II.
Máté: Architektúrák10. 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 Mikroprocesszor Harmadik rész.
Objektum orientált programozás
A Visual Basic nyelvi elemei
Funkciós blokkok A funkciós blokkok áttekintése Az alkalmazás előnyei.
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.
HTML ÉS PHP (Nagyon) rövid áttekintés. ADATBÁZISRENDSZEREK MŰKÖDÉSI SÉMÁJA Felh. interakció DB Connector MySQL ? A gyakorlaton:
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.
Barna Róbert KE GTK Informatika Tanszék Pénzügyi feladatok VBA támogatása 5. előadás.
Függvények a C nyelvben 1 Függvényeket a következő esetekben szokás írni: Ha ugyanazt a tevékenységet többször is el kell végeznünk ugyanolyan típusú,
C Programozási alapok.
Máté: Orvosi képfeldolgozás5. előadás1 Mozgó detektor: előnyHátrány állójó időbeli felbontás nincs (rossz) térbeli felbontás mozgójó térbeli felbontás.
Algoritmusok és Adatszerkezetek Egy kifejezés lengyelformára hozása - bemutató.
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.
Memóriakezelés feladatok Feladat: 12 bites címtartomány. 0 ~ 2047 legyen mindig.
Programozás C# -ban Elágazások.
A CLIPS keretrendszer
Példa: Dinteger = {..., -1,0,1,...}; Dboolean = {true, false};
Változók.
procedure MásodikMenet; 2. menet, vázlat
Előadás másolata:

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) 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.

Máté: Architektúrák11. előadás2 aling_type (illesztés típusa): a szerkesztőnek szóló információ. 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 másik modulban lévő ugyanilyen nevű szegmens szelet folytatása.

Máté: Architektúrák11. előadás3 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. COMMON : az azonos nevű szegmens szeletek azonos címre szerkesztendők. Az így keletkező terület hossza megegyezik a leghosszabb ilyen szegmens szelet hosszával. A COMMON hatása csak különböző modulokban megírt szegmens szeletekre érvényesül. 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).

Máté: Architektúrák11. előadás4 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. 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. A szegmens osztály legtöbbször CODE, DATA, CONSTANT, STACK, MEMORY.

Máté: Architektúrák11. előadás5 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...]

Máté: Architektúrák11. előadás6 ASSUME sz_reg1:sz_név1[, sz_reg2:sz_név2...] Az ASSUME utasításban felsorolt szegmenseket „aktív”-nak nevezzük. Az ASSUME utasítás nem gondoskodik a szegmens regiszterek megfelelő tartalommal történő feltöltéséről! Ez a programozó feladata! Az ASSUME utasítás hatása egy-egy szegmens regiszterre vonatkozóan mindaddig érvényes, amíg egy másik ASSUME utasítással mást nem mondunk az illető regiszterről.

Máté: Architektúrák11. előadás7 A GROUP utasítással csoportosíthatjuk a szegmenseinket: G_nevGROUP S_név1[, S_név2...] Az egy csoportba sorolt szegmenseket a szerkesztő a memória egy szegmensébe helyezi. Ha ilyenkor az ASSUME utasításban a csoport nevét adjuk meg, és ennek megfelelően állítjuk be a bázis regisztert, akkor a csoport minden szegmensének minden elemére tudunk hivatkozni. Ilyenkor egy változó OFFSET -je és effektív címe ( EA ) nem feltétlenül egyezik meg.

Máté: Architektúrák11. előadás8 GRPGROUPADAT1,ADAT2 ADAT1SEGMENTpara public ’data’ Adw1111h... ADAT1ENDS ADAT2SEGMENTpara public ’data’ Wdw2222h... ADAT2ENDS code segmentpara public ’code’ ASSUMECS:code, DS:GRP ASSUMESS:stack, ES:nothing...

Máté: Architektúrák11. előadás9 GRPGROUP ADAT1,ADAT2 codesegment... ADAT1SEGMENT... ASSUME CS:code, DS:GRP Adw 1111hASSUME SS:stack, ADAT1ENDS ADAT2SEGMENT... Wdw 2222h... ADAT2ENDS MOV SI,OFFSET W; SI  W offset -je: 0 ; az ADAT2 szegmens elejétől mért távolság MOVAX,[SI]; AX  1111h, ; de!!! LEASI, W; SI  effektív címe: ; a GRP szegmens csoport elejétől mért távolság MOVAX,[SI] ; AX  2222h.

Máté: Architektúrák11. előadás10 Globális szimbólumok A több modulból is elérhető szimbólumok. A globális szimbólumok teszik lehetővé, hogy a programjainkat modulokra bontva készítsük el. Az egyes modulok közötti kapcsolatot a globális szimbólumok jelentik.

Máté: Architektúrák11. előadás11 Globális 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: PUBLICsz1[, sz2...] 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: EXTRNsz1:típus1[, sz2:típus2...]

Máté: Architektúrák11. előadás12 INCLUDE utasítás INCLUDEFile_Specifikáció hatására az assembler az INCLUDE utasítás helyére bemásolja az utasítás paraméterében specifikált file szövegét. Az INCLUDE -olt file-ok is tartalmazhatnak INCLUDE utasítást.

Máté: Architektúrák11. előadás13 Ha makró definícióinkat a MyMacros.i file-ba kívánjuk összegyűjteni, akkor célszerű ezt a file-t így elkészítenünk: IFNDEF MyMacros_i MyMacros_i= 1...;; makró, struktúra definíciók...;; EXTRN szimbólumok ENDIF Ekkor a MyMacros.i file legfeljebb egyszer kerül bemásolásra, mert az összes további esetben a feltételes fordítás feltétele már nem teljesül. A. -ot _ -sal helyettesítettük! A legtöbb include file-ban ezt a konvenciót alkalmazzák.

Máté: Architektúrák11. előadás14 Lista vezérlési utasítások TITLEcím A fordítás során keletkező lista minden oldalán megjelenik ez a cím. Egy modulon belül csak egyszer alkalmazható. SUBTITLEalcím Többször is előfordulhat egy modulon belül. A program lista minden oldalán – a cím alatt – megjelenik az utolsó SUBTITLE utasításban megadott alcím.

Máté: Architektúrák11. előadás15 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 ( 10  op1  255 ), op2 az egy sorba írható karakterek számát jelenti ( 60  op2  132 ). Ha valamelyik paramétert nem adjuk meg, akkor természetesen nem változik a korábban beállított értéke. A sorok száma kezdetben 66, a karaktereké 80.

Máté: Architektúrák11. előadás16 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. NAMEnév A modul nevét definiálhatjuk vele. A szerkesztő ezt a nevet fogja használni. Ha nem szerepel NAME utasítás a modulban, akkor a TITLE utasítással megadott cím a modul neve. Ha ez sincs, akkor a file nevének első 6 karaktere lesz a modul neve.

Máté: Architektúrák11. előadás17 COMMENThatá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 kommentár belsejében nem szerepelhet határoló_jel. %OUTszö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..RADIXszámrendszer_alapja Ha programban egy szám nem tartalmaz számrendszer jelölést, akkor az illető számot ebben a számrendszerben kell érteni (alapértelmezésben decimális).

Máté: Architektúrák11. előadás18.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.

Máté: Architektúrák11. előadás19.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).

Máté: Architektúrák11. előadás20 ENDkifejezés A modul végét jelzi, kifejezés a program indítási címe. Ha a programunk több modulból áll, akkor természetesen csak egy modul végén adhatunk meg kezdő címet.

Máté: Architektúrá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: ábra. idő szekvenciális vezérlés elágazás program számláló

Máté: Architektúrák11. előadás22 Eljárás (5.44. á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 …

Máté: Architektúrák11. előadás23 Hanoi tornyai ( ábra) 1. pálca 2. pálca 3. pálca towers(5, 1, 3);

Máté: Architektúrák11. előadás24 Hanoi tornyai ( á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 mozgatása: ”+i+”-ről”+j”-re”); else { k=6-i-j; towers(n-1, i, k); towers(1, i, j); towers(n-1, k, j); }

Máté: Architektúrák11. előadás25 ~ ábra A verem tartalma az eljárásban: Hívások: j i n k | j i n k | j i n k towers(3,1,3) 3, 1, 3, V, F, k c konvenció 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, 3, 1, 1, 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, 2, 1, 1, V, F, k towers(1,3,2)3  2 3, 1, 3, V, F, 2, 2, 1, 2, V, F, 3, 2, 3, 1, V, F, k towers(1,1,3)1  3 3, 1, 3, V, F, 2, 3, 1, 1, V, F, k towers(2,2,3) 3, 1, 3, V, F, 2, 3, 2, 2, V, F, k towers(1,2,1)2  1 3, 1, 3, V, F, 2, 3, 2, 2, V, F, 1, 1, 2, 1, V, F, k towers(1,2,3)2  3 3, 1, 3, V, F, 2, 3, 2, 2, V, F, 1, 3, 2, 1, V, F, k towers(1,1,3)1  3 3, 1, 3, V, F, 2, 3, 2, 2, V, F, 1, 3, 1, 1, V, F, k...V: visszatérési cím, F: régi FP

Máté: Architektúrák11. előadás26 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.

Máté: Architektúrák11. előadás27 A Hanoi tornyai probléma megoldása ábra: Pentium 4 program ábra: UltraSPARC III program. Eltolás rés!

Máté: Architektúrák11. előadás28 Vezérlési folyamat Szekvenciális vezérlés (5.39. ábra) Elágazás. Eljárás: ábra. Megszakítások. Csapdák. Korutinok: á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

Máté: Architektúrák11. előadás29 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

Máté: Architektúrák11. előadás30 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.

Máté: Architektúrák11. előadás31 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.

Máté: Architektúrák11. előadás32 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.

Máté: Architektúrák11. előadás33 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...

Máté: Architektúrák11. előadás34 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.

Máté: Architektúrák11. előadás35 Egy lehetséges operációs kód tábla részlete: mnemonicop1op2kódhosszosztály AAA ADD reg ADD reg AND reg AND reg

Máté: Architektúrák11. előadás36 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;

Máté: Architektúrák11. előadás37 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);

Máté: Architektúrák11. előadás38 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 

Máté: Architektúrák11. előadás39 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.

Máté: Architektúrák11. előadás40 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;

Máté: Architektúrák11. előadás41 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;

Máté: Architektúrák11. előadás42 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;

Máté: Architektúrák11. előadás43 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);

Máté: Architektúrák11. előadás44 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;

Máté: Architektúrák11. előadás45 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 

Máté: Architektúrák11. előadás46 Ö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,...

Máté: Architektúrák11. előadás47 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),...

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

Máté: Architektúrák11. előadás49 Feladatok Ismertesse a SEGMENT utasítás operandusait! Definiálhatók-e azonos nevű szegmensek? Mi történik fordítás során az azonos nevű szegmensekkel? Mi történik szerkesztés során az azonos nevű szegmensekkel? Mi az aling_type (illesztés típusa) paraméter szerepe? Milyen értékeket vehet fel az aling_type paraméter? Mi a combine_type (kombinációs típus) paraméter szerepe? Milyen értékeket vehet fel a combine_type paraméter? Mi a PUBLIC paraméter hatása? Mi a COMMON paraméter hatása?

Máté: Architektúrák11. előadás50 Feladatok Mi a MEMORY paraméter hatása? Mi a STACK paraméter hatása? Mi az AT kifejezés paraméter hatása? Mire szolgál az ASSUME utasítás? Meddig érvényes egy ASSUME utasítás hatása? Mire szolgál a GROUP utasítás? Hogy hozhatunk létre szegmens csoportot? Mi az előnye a szegmens csoport használatának? Mutasson példát arra, hogy egy változó OFFSET -je és effektív címe ( EA ) nem egyezik meg! Mi a szerepe a globális szimbólumoknak? Hogy definiálhatunk globális szimbólumot?

Máté: Architektúrák11. előadás51 Feladatok Mi a PUBLIC utasítás hatása? Milyen paraméterei vannak a PUBLIC utasításnak? Mi az EXTENT utasítás hatása? Milyen paraméterei vannak az EXTERN utasításnak? Miért kell megadni a globális változó típusát az EXTERN utasításban? Mi az INCLUDE utasítás hatása? Hogy akadályozható meg, hogy egy file-t többször INCLUDE -oljunk egy programban?

Máté: Architektúrák11. előadás52 Feladatok Milyen lista vezérlési utasításokat ismer? Mi a TITLE utasítás hatása? Mi a SUBTITLE utasítás hatása? Mi a PAGE utasítás hatása? Hogyan paraméterezhető a PAGE utasítás? Mi a NAME utasítás hatása? Mi pótolja NAME szerepét, ha hiányzik ez az utasítás? Hogy írhatunk több soros kommentárt a programba? Mi a %OUT utasítás hatása? Mi a.RADIX utasítás hatása? Mi a.LIST utasítás hatása? Mi a.XLIST utasítás hatása?

Máté: Architektúrák11. előadás53 Feladatok Mi a.LFCOND utasítás hatása? Mi a.SFCOND utasítás hatása? Mi a.TFCOND utasítás hatása? Mi a.CREF utasítás hatása? Mi a.XCREF utasítás hatása? Mi a.LALL utasítás hatása? Mi a.SALL utasítás hatása? Mi a.XALL utasítás hatása? Mi a END utasítás hatása?

Máté: Architektúrák11. előadás54 Feladatok Mi a szekvenciális vezérlés? Mi az eljárás? Mi a rekurzív eljárás? Mondjon példát rekurzív eljárással megoldható problémára! Mi az eljárás prológus? Mi az eljárás epilógus? Mi az eltolás rés? Mi a csapda? Mi a megszakítás? Mi a különbség a csapda és a megszakítás között? Mit nevezünk korutinnak (társrutinnak, coroutine)?

Máté: Architektúrák11. előadás55 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? Milyen hibákat ismerhet föl az assembler? Milyen hibákat nem képes fölismerni az assembler? Hogy dolgozható fel az INCLUDE utasítás?