Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
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 karakterek kód Hibás karakter Betű A … Z a … z 2 Számjegy 0 … 9 4 Speciális jel , . ; + - ( ) cr lf 6 Vége jel $ 8 44-47, fóliák: 28a-31 Máté: Architektúrák 5. előadás
2
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 44-47 Máté: Architektúrák 5. előadás
3
t_a dw hiba ; hibás kar.: spec. jel szint dw OK ; betű: nincs teendő
; 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 lev_s ; speciális jel: szám vége level dw ? ; az aktuális ugrótábla címe 44-47 Máté: Architektúrák 5. előadás
4
c_h db 0 ; hibás karakter kódja c_b db 2 ; betű kódja
c_n db 4 ; számjegy kódja c_s db 6 ; speciális jel kódja c_v db 8 ; végjel kódja specjel db ’ ,. ;+-()’, 13, 10 ; a speciális jelek vegjel db ’$’ ; vége jel, kihasználjuk, ; hogy itt van! table db 256 dup (?) ; átkódoló tábla (256 byte) text db ’a,tz.fea 21 a12 12a $’ ; elemzendő szöveg DATA ends 44-47 Máté: Architektúrák 5. előadás
5
code segment para public ’CODE’
assume cs:code, ds:data, es:data, ss:stack Lex proc far push ds xor ax,ax push ax ; visszatérési cím a veremben mov ax,data mov ds,ax mov es,ax ; assume miatt call prepare ; átkódoló tábla elkészítése mov si, offset text ; az elemzendő szöveg ; kezdőcíme call parsing ; elemzés ret ; vissza az Op. rendszerhez Lex endp 44-47 Máté: Architektúrák 5. előadás
6
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 44-47 Máté: Architektúrák 5. előadás
7
mov di,’A’ ; A ASCII kódja add di,bx ; A helyének offset címe
mov al,c_b ; betű kódja mov di,’A’ ; A ASCII kódja add di,bx ; A helyének offset címe mov cx,’Z’-’A’+1 ; a nagybetűk száma ; a betűk ASCII kódja folyamatos! rep stosb mov di,’a’ ; a ASCII kódja add di,bx ; a helyének offset címe mov cx,’z’-’a’+1 ; a kisbetűk száma 44-47 Máté: Architektúrák 5. előadás
8
mov al,c_n ; számjegy kódja
mov di,’0’ ; 0 ASCII kódja add di,bx ; 0 helyének offset címe mov cx,’9’-’0’+1 ; a számjegyek száma ; a számjegyek ASCII kódja folyamatos! rep stosb 44-47 Máté: Architektúrák 5. előadás
9
mov si,offset specjel ; speciális jelek ; feldolgozása
xor ah,ah ; ki fogjuk használni, hogy ax=al pr1: lods specjel ; speciális jelek olvasása mov di,ax ; ah=0 miatt ax = a spec. jel cmp al,vegjel ; vegjel közvetlenül a ; speciális jelek után! je pr2 ; ez már a vegjel mov al,c_s ; speciális karakter kódja mov [BX+DI],al ; elhelyezés a táblában loop pr1 ; ciklus vége 44-47 Máté: Architektúrák 5. előadás
10
pr2: mov al,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 prepare endp 44-47 Máté: Architektúrák 5. előadás
11
; az eljárás rontja AX, BX, CX, DI, SI tartalmát
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 lv1: 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 44-47 Máté: Architektúrák 5. előadás
12
hiba: mov di,offset t_s ; hibás karakter, ; spec. jel szint mov al,’?’
lv2: mov ah,14 ; BIOS hívás előkészítése int 10h ; BIOS hívás: ; karakter írás a képernyőre jmp lv1 lev_a: mov di,offset t_a ; azonosító kezdődik mov al,’A’ jmp lv2 44-47 Máté: Architektúrák 5. előadás
13
lev_n: mov di,offset t_n ; szám kezdődik mov al,’0’ jmp lv2
lev_s: mov di,offset t_s ; speciális jel mov al,’,’ vege: mov al,’.’ ; szöveg vége mov ah,14 ; BIOS hívás előkészítése int 10h ; BIOS hívás: ; karakter írás a képernyőre ret ; elemzés vége, vissza a hívóhoz parsing endp code ends 44-47 Máté: Architektúrák 5. előadás
14
stack segment para stack ’stack’
dw 100 dup (?) ; 100 word legyen a verem stack ends end Lex ; modul vége, start cím: Lex 44-47 Máté: Architektúrák 5. előadás
15
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
16
Az IJVM utasítások szerkezete:
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
17
ENA az A bemenet engedélyése (1)/ tiltása (0),
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. Máté: Architektúrák 5. előadás
18
Néhány példa (4.2. ábra átrendezve)
A könyvben nem logikus, hibás. F0 F1 ENA ENB INVA INC Tevékenység 1 A AND B A OR B A B #A #B Máté: Architektúrák 5. előadás
19
Néhány példa (4.2. ábra folytatás)
ENA ENB INVA INC Tevékenység 1 – 1 A + B A + B + 1 A + 1 B + 1 – A B – A B – 1 Máté: Architektúrák 5. előadás
20
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: ). 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
21
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
22
Összesen 29 jel szükséges (4.1., 5-6. ábra):
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. 232 Máté: Architektúrák 5. előadás
23
9 bit: a következő utasítás címének megadásához,
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. Máté: Architektúrák 5. előadás
24
(MIR feltöltődik a vezérlőtár MPC által mutatott szavával.)
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. 236 Máté: Architektúrák 5. előadás
25
A 9 bites következő cím (Addr) az MPC-be kerül.
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ím Addr JAM Adatútvezérlő bitek 0x75 0x92 001 … JAMZ =1 Máté: Architektúrák 5. előadás
26
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
27
regiszter B sín, Addr MPC ALU megtudja, mit kell csináljon,
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 (N, Z) mem. MDR és/vagy mem MBR JMPC (MBR) Máté: Architektúrák 5. előadás
28
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 Máté: Architektúrák 5. előadás
29
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. Máté: Architektúrák 5. előadás
30
Java IJVM program 4.11., 15. ábra Bin. kód
program ILOAD j // i = j + k 2 ILOAD k i = j + k; IADD if(i = = 3) ISTORE i k = 0; ILOAD i else BIPUSH 3 // if(i = = 3) j = j – 1; IF_ICMPEQ L F 00 0D 8 ILOAD j // j = j – 9 BIPUSH 10 ISUB 11 ISTORE j 12 GOTO L A7 00 0F 13 L1: BIPUSH // k = 14 ISTORE k 15 L2: , ábra Máté: Architektúrák 5. előadás
31
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). Máté: Architektúrák 5. előadás
32
MAL (Micro Assembly Language, 4.5-6. á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 Máté: Architektúrák 5. előadás
33
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. Máté: Architektúrák 5. előadás
34
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ímke Műveletek // kommentár Main1 PC = PC + 1; fetch; goto(MBR) nop1 goto Main1 iadd1 MAR = SP = SP – 1; rd iadd2 H = TOS iadd3 MDR = TOS = MDR + H; wr; goto Main1 Máté: Architektúrák 5. előadás
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.