Egyszerstett lexiklis elemz Feladata hogy azonost szm specilis
- Slides: 34
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ípusok Hibás karakter Betű Számjegy Speciális jel Vége jel Máté: Architektúrák karakterek A…Z 0… 9 , . $ 5. előadás a…z ; + - ( ) cr lf kód 0 2 4 6 8 1
data segment para public ’data’ ; ugró táblák a szintaktikus helyzetnek megfelelően: ; kezdetben, speciális és hibás karakter után t_s dw hiba ; hibás kar. : spec. jel szint dw lev_a ; betű: dw lev_n ; számjegy: dw lev_s ; spec. jel: dw vege ; szöveg vége: program vége Máté: Architektúrák 5. előadás 2
; azonosító szint t_a dw hiba ; hibás kar. : spec. jel szint dw OK ; betű: nincs teendő dw OK ; számjegy: nincs teendő dw lev_s ; speciális jel: azonosító vége dw vege ; szöveg vége: program vége ; szám szint t_n dw hiba ; hibás kar. : spec. jel szint dw hiba ; betű: hiba: spec. jel szint dw OK ; számjegy: nincs teendő dw lev_s ; speciális jel: szám vége dw vege ; szöveg vége: program vége level dw ? ; az aktuális ugrótábla címe Máté: Architektúrák 5. előadás 3
c_h c_b c_n c_s c_v specjel vegjel db db table text db db DATA ends Máté: Architektúrák 0 2 4 6 8 ’ , . ’$’ ; hibás karakter kódja ; betű kódja ; számjegy kódja ; speciális jel kódja ; végjel kódja ; +-()’, 13, 10 ; a speciális jelek ; vége jel, kihasználjuk, ; hogy itt van! 256 dup (? ) ; átkódoló tábla (256 byte) ’a, tz. fe�a 21 a 12 12 a $’ ; elemzendő szöveg 5. előadás 4
code Lex segment assume proc push xor push mov mov call ret endp Máté: Architektúrák para public ’CODE’ cs: code, ds: data, es: data, ss: stack far ds ax, ax ax ; visszatérési cím a veremben ax, data ds, ax es, ax ; assume miatt prepare ; átkódoló tábla elkészítése si, offset text ; az elemzendő szöveg ; kezdőcíme parsing ; elemzés ; vissza az Op. rendszerhez 5. előadás 5
prepare proc ; 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 mov bx, offset table mov di, bx mov al, c_h ; hibás karakter kódja mov cx, 256 ; a tábla hossza rep stos table; table minden karakter hibás Máté: Architektúrák 5. előadás 6
mov add mov rep stosb mov add mov stosb Máté: Architektúrák al, c_b ; betű kódja di, ’A’ ; A ASCII kódja di, bx; A helyének offset címe cx, ’Z’-’A’+1 ; a nagybetűk száma ; a betűk ASCII kódja folyamatos! di, ’a’ ; a ASCII kódja di, bx; a helyének offset címe cx, ’z’-’a’+1 ; a kisbetűk száma 5. előadás 7
mov add mov rep al, c_n ; számjegy kódja di, ’ 0’ ; 0 ASCII kódja di, bx; 0 helyének offset címe cx, ’ 9’-’ 0’+1 ; a számjegyek száma ; a számjegyek ASCII kódja folyamatos! stosb Máté: Architektúrák 5. előadás 8
mov pr 1: xor lods mov cmp je mov loop Máté: Architektúrák si, offset specjel; speciális jelek ; feldolgozása ah, ah ; ki fogjuk használni, hogy ax=al specjel ; speciális jelek olvasása di, ax; ah=0 miatt ax = a spec. jel al, vegjel ; vegjel közvetlenül a ; speciális jelek után! pr 2 ; ez már a vegjel al, c_s ; speciális karakter kódja [BX+DI], al ; elhelyezés a táblában pr 1 ; ciklus vége 5. előadás 9
pr 2: mov ret prepare endp Máté: Architektúrák al, c_v ; a végjel kódja [BX+DI], al ; elhelyezés a táblában ; vissza a hívó eljáráshoz 5. előadás 10
parsing proc ; elemzés ; az eljárás rontja AX, BX, CX, DI, SI tartalmát cld ; a string műveletek iránya pozitív mov bx, offset table mov di, offset t_s ; spec. jel szint lv 1: mov level, di ; szint beállítás xor ah, ah ; kihasználjuk, hogy ax=al OK: lods text ; a következő karakter XLAT ; AL 0, 2, 4, 6 vagy 8 MOV DI, LEVEL ; DI az akt. ugró ; tábla címe ADD DI, AX ; DI a megfelelő elem ; címe JMP [DI] ; kapcsoló utasítás Máté: Architektúrák 5. előadás 11
hiba: mov lv 2: mov int lev_a: jmp mov jmp Máté: Architektúrák di, offset t_s ; hibás karakter, ; spec. jel szint al, ’? ’ ah, 14 ; BIOS hívás előkészítése 10 h ; BIOS hívás: ; karakter írás a képernyőre lv 1 di, offset t_a ; azonosító kezdődik al, ’A’ lv 2 5. előadás 12
lev_n: lev_s: vege: parsing code mov mov jmp mov int ret endp ends Máté: Architektúrák di, offset t_n ; szám kezdődik al, ’ 0’ lv 2 di, offset t_s ; speciális jel al, ’, ’ lv 2 al, ’. ’ ; szöveg vége ah, 14 ; BIOS hívás előkészítése 10 h ; BIOS hívás: ; karakter írás a képernyőre ; elemzés vége, vissza a hívóhoz 5. előadás 13
stack segment para stack ’stack’ dw 100 dup (? ) ; 100 word legyen a verem ends end Lex ; modul vége, start cím: Lex Máté: Architektúrák 5. előadás 14
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. Máté: Architektúrák 5. előadás 15
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. Máté: Architektúrák 5. előadás 16
ALU (3. 19 -20. á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) Ø F 0, F 1 kiválasztja az AND, OR, B#, + művelet valamelyikét, Ø INC: +1. Máté: Architektúrák 5. előadás 17
Néhány példa (4. 2. ábra átrendezve) F 0 F 1 ENA ENB INVA INC Tevékenység 0 0 1 1 0 0 A AND B 0 1 1 1 0 0 A OR B 0 1 1 0 0 0 A 0 1 0 0 B 0 1 1 0 #A 1 0 0 #B 1 1 0 0 0 A könyvben nem logikus, hibás. Máté: Architektúrák 5. előadás 18
Néhány példa (4. 2. ábra folytatás) F 0 1 1 1 1 1 F 1 1 1 1 1 ENA 0 0 1 1 1 0 Máté: Architektúrák ENB 0 0 1 1 INVA 0 1 0 0 1 1 1 5. előadás INC 1 0 0 1 1 1 0 Tevékenység 1 – 1 A+B+1 A+1 B+1 –A B– 1 19
Adatút (Data Path, 4. 1. ábra) 32 bites regiszterek, sínek, ALU, léptető (SLL 8 8 bittel balra, SRA 1 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: ). N 1, ha az eredmény < 0, különben 0, Z 1, 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. Máté: Architektúrák 5. előadás 20
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. Máté: Architektúrák 5. előadás 21
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. Máté: Architektúrák 5. előadás 22
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. • 512 x 36 bites vezérlőtár, a mikroprogramnak, • MPC (Micro. Program Counter): mikroprogramutasításszámláló. • MIR (Micro. Instruction Register): mikroutasításregiszter. Máté: Architektúrák 5. előadás 23
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. Máté: Architektúrák 5. előadás 24
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. : Cím Addr 0 x 75 0 x 92 JAM Adatútvezérlő bitek 001 … JAMZ =1 esetén a következő utasítás Z –től függően a 0 x 92 vagy 0 x 192 címen található (feltételes ugrás – elágazás – a mikroprogramban). Máté: Architektúrák 5. előadás 25
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. Máté: Architektúrák 5. előadás 26
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 regiszterekbe JAMN, JAMZ • mem. MDR és/vagy mem MBR • JMPC Máté: Architektúrák 5. előadás (N, Z) (MBR) 27
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): a 1 = a 2 + a 3 Máté: Architektúrák 5. előadás 28
Az IJVM memóriamodellje A 4 GB memória, 1 G szóként is szervezhető. Funkcionális részei: 4. 10. á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: 4. 11. ábra. Máté: Architektúrák 5. előadás 29
Java program IJVM program 4. 11. , 15. ábra 1 ILOAD j // i = j + k 2 ILOAD k i = j + k; 3 IADD if(i = = 3) 4 ISTORE i k = 0; 5 ILOAD i else 6 BIPUSH 3 // if(i = = 3) j = j – 1; 7 IF_ICMPEQ L 1 8 ILOAD j // j = j – 1 9 BIPUSH 1 10 ISUB 11 ISTORE j 12 GOTO L 2 13 L 1: BIPUSH 0 // k = 0 14 ISTORE k 15 L 2: Máté: Architektúrák 5. előadás Bin. kód 15 02 15 03 60 36 01 15 01 10 03 9 F 00 0 D 15 02 10 01 64 36 02 A 7 00 0 F 10 00 36 03 30
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: Read. Register = SP, ALU = INC, Write SP, Read, Next. Address = 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 Main 1). Máté: Architektúrák 5. előadás 31
MAL (Micro Assembly Language, 4. 5 -6. ábra) SOURCE: a B sínre kötött regiszterek bármelyike (MDR, PC, 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: 4. 16. ábra Máté: Architektúrák 5. előadás 32
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 L 1; else goto L 2 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 0 x 100. Máté: Architektúrák 5. előadás 33
IJVM megvalósítása Mic-1 -en (4. 11. , 17. ábra) A főciklus a Main 1 -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! Main 1 a következő utasítást vagy adatbájtot olvassa. Címke Main 1 nop 1 iadd 2 iadd 3 Műveletek // kommentár PC = PC + 1; fetch; goto(MBR) goto Main 1 MAR = SP – 1; rd H = TOS MDR = TOS = MDR + H; wr; goto Main 1 Máté: Architektúrák 5. előadás 34
- Hitka szm
- Fonomimikai jelek
- Specilis
- Metal oxide semiconductor field effect transistor
- Intracutan tovafutó varrat
- Rokontenyésztés
- Zske
- Halld egy bárányt ismerek
- Kísérletemmel bebizonyítottam hogy az atomok oszthatók
- Almárium jelentése
- Tört kivonása törttel
- Az igére hogy kérdezünk rá
- Tört szorzása
- Mit jelent az hogy az ezüst sűrűsége 10 5 g/cm3
- örkény pecsét
- érezzétek és lássátok meg hogy jó az úr
- Andon rendszer
- Golgi készülék feladata
- Tápszivattyú feladata
- Tűzfal feladata
- Középagy feladata
- Rekeszizom feladata
- Tápszivattyú feladata
- Vesetestecske feladata
- Koja je funkcija pantova
- Gyermekjogi képviselő feladata
- Szállodai supervisor feladata
- Folyasztószer feladata
- Slidetodoc.com
- Bővített norton skála táblázat
- Radiológus feladata
- Gyermekjogi képviselő feladata
- Szállodai menedzsment szolgáltatások
- Fornix agy
- Addiktológiai konzultáns jelentése