Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Máté: Architektúrák5. előadás1 Egyszerűsített lexikális elemző Feladata, hogy azonosító, szám, speciális jelek és a program vége jel előfordulásakor rendre.

Hasonló előadás


Az előadások a következő témára: "Máté: Architektúrák5. előadás1 Egyszerűsített lexikális elemző Feladata, hogy azonosító, szám, speciális jelek és a program vége jel előfordulásakor rendre."— Előadás másolata:

1 Máté: Architektúrák5. előadás1 Egyszerűsített lexikális elemző Feladata, hogy azonosító, szám, speciális jelek és a program vége jel előfordulásakor rendre A, 0,, és. karaktert írjon a képernyőre. Az esetleges hibákat ? jelezze. XLAT utasítás alkalmazásának tervezése: Karakter típusokkarakterekkód Hibás karakter0 BetűA … Z a … z2 Számjegy0 … 94 Speciális jel,.; + - ( ) cr lf6 Vége jel$8

2 Máté: Architektúrák5. előadás2 datasegment para public ’data’ ; ugró táblák a szintaktikus helyzetnek megfelelően: ; kezdetben, speciális és hibás karakter után t_sdwhiba ; hibás kar.:  spec. jel szint dwlev_a; betű: dwlev_n ; számjegy: dwlev_s; spec. jel: dwvege; szöveg vége: program vége

3 Máté: Architektúrák5. előadás3 ; azonosító szint t_adwhiba ; hibás kar.:  spec. jel szint dwOK; betű: nincs teendő dwOK ; számjegy: nincs teendő dwlev_s; speciális jel: azonosító vége dwvege; szöveg vége: program vége ; szám szint t_ndwhiba ; hibás kar.:  spec. jel szint dwhiba; betű: hiba:  spec. jel szint dwOK ; számjegy: nincs teendő dwlev_s; speciális jel: szám vége dwvege; szöveg vége: program vége leveldw?; az aktuális ugrótábla címe

4 Máté: Architektúrák5. előadás4 c_hdb0; hibás karakter kódja c_bdb2; betű kódja c_ndb4; számjegy kódja c_sdb6; speciális jel kódja c_vdb8; végjel kódja specjeldb’,.;+-()’, 13, 10; a speciális jelek vegjeldb’$’; vége jel, kihasználjuk, ; hogy itt van! tabledb256 dup (?); átkódoló tábla (256 byte) textdb’a,tz.fe  a 21 a12  12a $’ ; elemzendő szöveg DATAends

5 Máté: Architektúrák5. előadás5 codesegment para public ’CODE’ assume cs:code, ds:data, es:data, ss:stack Lexprocfar pushds xorax,ax pushax; visszatérési cím a veremben movax,data movds,ax moves,ax; assume miatt callprepare; átkódoló tábla elkészítése movsi, offset text; az elemzendő szöveg ; kezdőcíme callparsing; elemzés ret; vissza az Op. rendszerhez Lexendp

6 Máté: Architektúrák5. előadás6 prepareproc; az átkódoló tábla elkészítése ; az eljárás rontja AX, BX, CX, DI, SI tartalmát cld; a string műveletek iránya pozitív movbx, offset table movdi,bx moval,c_h; hibás karakter kódja movcx,256; a tábla hossza repstostable; table  minden karakter hibás

7 Máté: Architektúrák5. előadás7 moval,c_b; betű kódja movdi,’A’; A ASCII kódja adddi,bx; A helyének offset címe movcx,’Z’-’A’+1; a nagybetűk száma ; a betűk ASCII kódja folyamatos! repstosb movdi,’a’; a ASCII kódja adddi,bx; a helyének offset címe movcx,’z’-’a’+1; a kisbetűk száma repstosb

8 Máté: Architektúrák5. előadás8 moval,c_n; számjegy kódja movdi,’0’; 0 ASCII kódja adddi,bx; 0 helyének offset címe movcx,’9’-’0’+1; a számjegyek száma ; a számjegyek ASCII kódja folyamatos! repstosb

9 Máté: Architektúrák5. előadás9 movsi,offset specjel; speciális jelek ; feldolgozása xorah,ah ; ki fogjuk használni, hogy ax=al pr1:lodsspecjel; speciális jelek olvasása movdi,ax; ah=0 miatt ax = a spec. jel cmpal,vegjel; vegjel közvetlenül a ; speciális jelek után! jepr2; ez már a vegjel moval,c_s; speciális karakter kódja mov[BX+DI],al; elhelyezés a táblában looppr1; ciklus vége

10 Máté: Architektúrák5. előadás10 pr2:moval,c_v; a végjel kódja mov[BX+DI],al; elhelyezés a táblában ret; vissza a hívó eljáráshoz prepareendp

11 Máté: Architektúrák5. előadás11 parsingproc; elemzés ; az eljárás rontja AX, BX, CX, DI, SI tartalmát cld; a string műveletek iránya pozitív movbx, offset table movdi,offset t_s ; spec. jel szint lv1:movlevel,di; szint beállítás xorah,ah; kihasználjuk, hogy ax=al OK:lodstext; a következő karakter XLAT; AL  0, 2, 4, 6 vagy 8 MOVDI,LEVEL; DI  az akt. ugró ; tábla címe ADDDI,AX; DI  a megfelelő elem ;címe JMP[DI]; kapcsoló utasítás

12 Máté: Architektúrák5. előadás12 hiba:movdi,offset t_s; hibás karakter, ; spec. jel szint moval,’?’ lv2: movah,14; BIOS hívás előkészítése int10h; BIOS hívás: ; karakter írás a képernyőre jmplv1 lev_a:movdi,offset t_a; azonosító kezdődik moval,’A’ jmplv2

13 Máté: Architektúrák5. előadás13 lev_n:movdi,offset t_n; szám kezdődik moval,’0’ jmplv2 lev_s:movdi,offset t_s; speciális jel moval,’,’ jmplv2 vege:moval,’.’; szöveg vége movah,14; BIOS hívás előkészítése int10h; BIOS hívás: ; karakter írás a képernyőre ret; elemzés vége, vissza a hívóhoz parsingendp codeends

14 Máté: Architektúrák5. előadás14 stacksegmentparastack ’stack’ dw100 dup (?); 100 word legyen a verem stack ends endLex; modul vége, start cím: Lex

15 Máté: Architektúrák5. előadás15 Mikroarchitektúra szint Feladata az ISA (Instruction Set Architecture) megvalósítása. Nincs rá általánosan elfogadott, egységes elv. IJVM (Integer Java Virtual Machine): a JVM egész értékű aritmetikát tartalmazó része. Nem használjuk a C-ben írt SUN JVM interpretert, mert nem elég hatékony az elemi logikai áramkörök kezelésére. Mikroprogram: betölti, értelmezi és végrehajtja az IJVM utasításokat.

16 Máté: Architektúrák5. előadás16 Az ISA-szintű utasítások „függvények”, ezeket egy főprogram hívja meg végtelen ciklusban. A függvények a mikroarchitektúra szintjén valósulnak meg (mikroprogram). A mikroprogram változói (a regiszterek) definiálják a számítógép állapotát, pl.: PC (Program Counter, utasításszámláló). Az IJVM utasítások szerkezete: •az első mező az opcode (Operation Code, műveleti kód), •az esetleges második mezőben az operandus meghatározására szolgáló adat van. Betöltés-végrehajtás (fetch-execute) ciklus.

17 Máté: Architektúrák5. előadás17 ALU ( ábra) 6 vezérlőjel:  ENA az A bemenet engedélyése (1)/ tiltása (0),  ENB a B bemenet engedélyése (1)/ tiltása (0),  INVA: A#. (Ha ENA = 0, akkor #0 = FFFF = – 1)  F0, F1 kiválasztja az AND, OR, B#, + művelet valamelyikét,  INC: +1.

18 Máté: Architektúrák5. előadás18 Néhány példa (4.2. ábra átrendezve) A könyvben nem logikus, hibás. F0F0 F1F1 ENAENBINVAINCTevékenység A AND B A OR B A B #A #B

19 Máté: Architektúrák5. előadás19 Néhány példa (4.2. ábra folytatás) F0F0 F1F1 ENAENBINVAINCTevékenység – A + B A + B A B – A B – A B – 1

20 Máté: Architektúrák5. előadás20 Adatút (Data Path, 4.1. ábra) 32 bites regiszterek, sínek, ALU, léptető (SLL8 8 bittel balra, SRA1 1 bittel jobbra léptet). ALU bemenetei közül az egyik a H (Holding – tartó), a másik a B sín (9 lehetőség – vezérlőjelek: ). N1, ha az eredmény < 0, különben 0, Z1, ha az eredmény = 0, különben 0. Megfelelő időzítéssel egy cikluson belül lehetséges egy regiszterből olvasni és az eredményt akár ugyanoda visszaírni (vezérlőjelek: ) 4.3. ábra.

21 Máté: Architektúrák5. előadás21 Memóriaműveletek (4.1. ábra) •Szócímzés (32 bites): adatszó írás, olvasás. MAR (Memory Address Register): szócím, MDR (Memory Data Register): szó. •Bájtcímzés: ISA szintű utasítás bájt olvasás. PC (Program Counter): bájtcím, MBR (Memory Byte Register): bájt. MBR kétfajta értelmezése (két vezérlőjel): •MBR: MBR előjelesen kerül a B sínre, •MBRU: MBR előjel nélkül kerül a B sínre. Byte-szó címek transzformálása: 4.4. ábra.

22 Máté: Architektúrák5. előadás22 Az adatút vezérlése Összesen 29 jel szükséges (4.1., 5-6. ábra): •9 jel: regiszterekbe írás a C sínről, •9 jel: a B sínre írás a regiszterekből, •8 jel: 6 az ALU és 2 a léptető vezérlésére, •3 jel: a memória eléréshez (nem ábrázoltuk!) 2 jel: szó íráshoz/olvasáshoz 1 jel: bájt olvasáshoz. A memória ciklus az adatút végén kezdődik (MAR ill. PC feltöltése után), ezért olvasásnál az eredmény csak két ciklussal később használható, addig MDR ill. MBR régi értéke érhető el.

23 Máté: Architektúrák5. előadás23 Mikroutasítások 24 bit: az adatút vezérléséhez (a B sínre csak egy regiszter írhat egyszerre, ezért 9 helyett elég 4 bit), 9 bit: a következő utasítás címének megadásához, 3 bit: a következő utasítás kiválasztásának módjára. Ez adja a 36 bites mikroutasítást: 4.5. ábra. Mic-1: 4.6. ábra. •512x36 bites vezérlőtár, a mikroprogramnak, •MPC (MicroProgram Counter): mikroprogram- utasításszámláló. •MIR (MicroInstruction Register): mikroutasítás- regiszter.

24 Máté: Architektúrák5. előadás24 Mic-1 működése Adatút ciklus (4.6. ábra): •(MIR feltöltődik a vezérlőtár MPC által mutatott szavával.) •Kialakul a B sín kívánt tartalma, ALU és a léptető megtudja, mit kell csinálnia, •Az ALU és a léptető elvégzi a feladatát, a C sín, N (Negative) és Z (Zero) megkapja az új értékét, •A regiszterek feltöltődnek. MBR/MDR megkapja az értékét, ha az előző ciklus adatot kért a memóriából. •Kialakul MPC új értéke.

25 Máté: Architektúrák5. előadás25 MPC új tartalma •A 9 bites következő cím (Addr) az MPC-be kerül. •JAMN/JAMZ esetén MPC legmagasabb bitjének és az N/Z bitnek logikai vagy kapcsolata képződik MPC legmagasabb helyértékén (elágazás). Pl.: esetén a következő utasítás Z –től függően a 0x92 vagy 0x192 címen található (feltételes ugrás – elágazás – a mikroprogramban). CímAddrJAMAdatútvezérlő bitek 0x750x92001…JAMZ =1

26 Máté: Architektúrák5. előadás26 MPC új tartalma (folytatás) •JMPC esetén MPC 8 alacsonyabb helyértékű bitjének és MBR 8 bitjének bitenkénti vagy kapcsolata képződik MPC-ben az adatút ciklus vége felé (MBR megérkezése után). Ilyenkor Addr 8 alacsonyabb helyértékű bitje általában 0 (feltétlen ugrás az MBR –ben tárolt címre – kapcsoló utasítás). Kezdődhet az újabb mikroutasítás végrehajtása.

27 Máté: Architektúrák5. előadás27 Mic-1 működése •(MPC)  MIR •regiszter  B sín,Addr  MPC ALU megtudja, mit kell csináljon, •eredmény  C, N, Z •C  regiszterekbeJAMN, JAMZ(N, Z) •mem.  MDR és/vagy mem  MBR •JMPC(MBR)

28 Máté: Architektúrák5. előadás28 Eljárás: paraméterek, munka terület. Rekurzív (önmagát hívó) eljárás, pl.: 0! = 1,ha n>0, akkor n! = n*(n-1)! A hívó és hívott eljárás paraméterei, változói nem lehetnek azonos területen: lokális változók. Verem (stack): LV (Local Variable), SP (Stack Pointer) verem mutató (4.8. ábra). A verem operandusok és az eredmény tárolására is használható, pl. (4.9. ábra): a1 = a2 + a3

29 Máté: Architektúrák5. előadás29 Az IJVM memóriamodellje A 4 GB memória, 1 G szóként is szervezhető. Funkcionális részei: ábra. •CPP (Constant Pool Pointer): terület a konstansok, mutatók tárolása; tartalma a program betöltésekor alakul ki, ISA utasítások nem írhatják felül. •LV (Local Variable frame): lokális változók területe •Operandusverem: a lokális változók területe fölött, •Metódus terület: itt van a program. PC bájtot címez a metódus területen belül. IJVM utasításkészlet: ábra.

30 Máté: Architektúrák5. előadás30 Java IJVM program 4.11., 15. ábra Bin. kód program 1ILOADj // i = j + k ILOADk i = j + k; 3IADD 60 if(i = = 3) 4ISTOREi k = 0; 5ILOADi else 6BIPUSH3 // if(i = = 3) j = j – 1; 7IF_ICMPEQ L1 9F 00 0D 8ILOADj // j = j – BIPUSH ISUB 64 11ISTOREj GOTOL2 A7 00 0F 13 L1:BIPUSH0 // k = ISTOREk L2:

31 Máté: Architektúrák5. előadás31 Mic-1 megvalósítása (4.5, 6. ábra) 36 bites bináris utasításokat kellene megadnunk. Pl.: Egy ciklusban növeljük SP-t 1-gyel és olvasást kezdeményezünk a memóriából, folytatás a 122-es utasításnál. Szimbolikusan ilyesmi: ReadRegister = SP, ALU = INC, Write SP, Read, NextAddress = 122; Nehézkes, helyette: SP = SP + 1; rd A folytatás címet csak akkor tüntetjük fel, ha az nem a következőként írt mikroutasítás (pl. goto Main1).

32 Máté: Architektúrák5. előadás32 MAL (Micro Assembly Language, ábra) SOURCE: a B sínre kötött regiszterek bármelyike (MDR, PC, MBR, MBRU, SP, LV, CPP, TOS, OPC). MBRU az előjel nélküli (Unsigned) MBR. DEST: a C sínre kapcsolt regiszterek bármelyike (MAR, MDR, PC, SP, LV, CPP, TOS, OPC, H). Több regiszter is kaphatja ugyanazt az értéket. wr: memóriába írás MDR-ből a MAR címre. rd: memóriából olvasás MDR-be a MAR címről. fetch: 8 bites utasításkód betöltése MBR-be a PC címről. Megengedett műveletek: ábra

33 Máté: Architektúrák5. előadás33 Nem megengedett pl. az alábbi utasítás pár: MAR = SP; rd MDR = H // A memóriából is most kapna értéket! Feltételes elágazás, pl.: Z = TOS// Z=1, ha TOS=0, különben Z=0. if (Z) goto L1; else goto L2 A címek különbsége 256 kell legyen (4.7. ábra)! TOS (Top Of Stack) A JMPC bit jelentése: goto (MBR OR value) Ilyenkor value általában 0 vagy 0x100.

34 Máté: Architektúrák5. előadás34 IJVM megvalósítása Mic-1-en (4.11., 17. ábra) A főciklus a Main1-nél kezdődik; PC a következő utasítás címét, MBR az utasítást tartalmazza. Előkészület a gép indításakor! Main1 a következő utasítást vagy adatbájtot olvassa. CímkeMűveletek // kommentár Main1PC = PC + 1; fetch; goto(MBR) nop1goto Main1 iadd1MAR = SP = SP – 1; rd iadd2H = TOS iadd3MDR = TOS = MDR + H; wr; goto Main1


Letölteni ppt "Máté: Architektúrák5. előadás1 Egyszerűsített lexikális elemző Feladata, hogy azonosító, szám, speciális jelek és a program vége jel előfordulásakor rendre."

Hasonló előadás


Google Hirdetések