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 String kezelő utasítások Az s forrás területet (DS:SI), a d cél területet pedig (ES:DI) címzi. A mnemonik végződése (B /

Hasonló előadás


Az előadások a következő témára: "Máté: Architektúrák5. előadás1 String kezelő utasítások Az s forrás területet (DS:SI), a d cél területet pedig (ES:DI) címzi. A mnemonik végződése (B /"— Előadás másolata:

1 Máté: Architektúrák5. előadás1 String kezelő utasítások Az s forrás területet (DS:SI), a d cél területet pedig (ES:DI) címzi. A mnemonik végződése (B / W) vagy az operandus jelzi, hogy bájtos vagy szavas a művelet. A címzésben résztvevő indexregiszterek értéke 1-gyel módosul bájtos, 2-vel szavas művelet esetén. Ha a D (Direction) flag értéke 0, akkor az indexregiszterek értéke növekszik, 1, akkor csökken. CLD; D  0 STD; D  1

2 Máté: Architektúrák5. előadás2 Az alábbi utasítások – mint általában az adat mozgató utasítások – érintetlenül hagyják a flag-eket Átvitel az (ES:DI) által mutatott címre a (DS:SI) által mutatott címről: MOVSB; MOVe String Byte MOVSW; MOVe String Word MOVSd,s; MOVe String (byte vagy word) d és s csak azt mondja meg, hogy bájtos vagy szavas az átvitel!

3 Máté: Architektúrák5. előadás3 Betöltés AL-be illetve AX-be a (DS:SI) által mutatott címről (csak SI módosul): LODSB; LOaD String Byte LODSW; LOaD String Word LODSs; LOaD String (byte vagy word) Tárolás az (ES:DI) által mutatott címre AL-ből illetve AX-ből (csak DI módosul): STOSB; STOre String Byte STOSW; STOre String Word STOSd; STOre String (byte vagy word)

4 Máté: Architektúrák5. előadás4 Az alábbi utasítások beállítják a flag-eket Az (ES:DI) és a (DS:SI) által mutatott címen lévő byte illetve szó összehasonlítása, a flag-ek s – d (!!!) értékének megfelelően állnak be. CMPSB; CoMPare String Byte CMPSW; CoMPare String Word CMPSd,s; CoMPare String (byte vagy word) Az (ES:DI) által mutatott címen lévő byte (word) összehasonlítása AL-lel (AX-szel), a flag-ek AL – d illetve AX – d (!!!) értékének megfelelően állnak be. SCASB; SCAn String Byte SCASW; SCAn String Word SCASd; SCAn String (byte vagy word)

5 Máté: Architektúrák5. előadás5 Ismétlő prefixumok REP  REPZ  REPE és REPNZ  REPNE A Z, E, NZ és NE végződésnek hasonló szerepe van, mint a LOOP utasítás esetén. Ismétlő prefixum használata esetén a string kezelő utasítás CX-szer kerül(het) végrehajtásra: ha CX = 0, akkor egyszer sem (!!!), különben minden végrehajtást követően 1-gyel csökken a CX regiszter tartalma. Amennyiben CX csökkentett értéke 0, akkor nem történik további ismétlés. A flag beállító string kezelő utasítás ismétlésének további feltétele, hogy a flag állapota megegyezzen a prefixum végződésében előírttal.

6 Máté: Architektúrák5. előadás6 Ismétlő prefixumok REP  REPZ  REPE és REPNZ  REPNE A program jobb olvashatósága érdekében flag-et nem állító utasítások előtt mindig REP-et használjunk, flag-et beállító utasítás előtt pedig sohase REP-et, hanem helyette a vele egyenértékű REPE-t vagy REPZ-t!

7 Máté: Architektúrák5. előadás7 ; A 100 elemű array nevű tömbnek van-e ;3-tól különböző eleme? movcx, 100 movdi, -1; előbb lehessen inc, mint cmp moval, 3 NEXT: incdi cmparray[di], al ; array di-edik eleme = 3? LOOPENEXT; ugrás NEXT-re, ; ha CX  0 és a di-edik elem=3 JNENEM3; CX = 0 vagy array[di]  3...; array  3... NEM3:...; di az első 3-tól különböző...; elem indexe

8 Máté: Architektúrák5. előadás8 Ugyanennek a feladatnak a megoldása string kezelő utasítás segítségével: ; A 100 elemű array nevű tömbnek van-e ; 3-tól különböző eleme? movcx,100 movdi,offset array movAL,3 REPESCASarray; array 0., 1.,... eleme = 3? JNENEM3...; array  3,... NEM3:DECDI; DI az első  3 elemre mutat...

9 Máté: Architektúrák5. előadás9 A 100 elemű array nevű tömbnek van-e 3-tól különböző eleme? movcx, 100 movdi, -1 moval, 3 NEXT: incdi cmparray[di], al LOOPENEXT JNENEM3... NEM3:...... movcx,100 movdi,offset array movAL,3 REPESCASarray JNENEM3... NEM3:DECDI... Használja ES-t. Sokkal gyorsabb Nem minden eltérés lényeges!

10 Máté: Architektúrák5. előadás10 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 BetűA … Z a … z2 Számjegy0 … 94 Speciális jel,. tabulátor ; + - ( ) cr lf6 Vége jel$8 Hibás karaktera többi0

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

12 Máté: Architektúrák5. előadás12 ; 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:,  spec. jel szint dwvege; $:.  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:,  spec. jel szint dwvege; $:.  program vége

13 Máté: Architektúrák5. előadás13 leveldw?; az aktuális ugrótábla címe 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

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

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

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

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

18 Máté: Architektúrák5. előadás18 movsi,offset specjel; speciális jelek ; feldolgozása xorah,ah ; hogy ax=al legyen pr1:lodsspecjel; speciális jel ASCII kódja movdi,ax; ah=0 miatt ax = a jel kódja cmpal,vegjel; vegjel közvetlenül a ; speciális jelek után van! jepr2; ez már a vegjel moval,c_s; speciális karakter kódja mov[bx+di],al; elhelyezés a táblában jmppr1; ciklus vége

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

20 Máté: Architektúrák5. előadás20 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; hogy ax=al legyen ok:lodstext; a következő karakter xlat; al  0, 2, 4, 6 vagy 8 movdi, level; di  az akt. ugrót. címe adddi, ax; az ugrótáblán belüli cím jmp[di]; kapcsoló utasítás

21 Máté: Architektúrák5. előadás21 hiba:movdi,offset t_s; hibás karakter, ; spec. jel szint következik 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

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

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

24 Máté: Architektúrák5. előadás24 Mikroarchitektúra szint Feladata az ISA (Instruction Set Architecture – gépi utasítás szint) megvalósítása. Nincs rá általánosan elfogadott, egységes elv. A 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ó).

25 Máté: Architektúrák5. előadás25 Mic-1 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: H (Holding – tartó), B sín. Egy cikluson belül lehetséges egy regiszterből olvasni és az eredményt akár ugyanoda visszaírni 4.3. ábra. Vezérlő jelek B sínre írja a regisztert C sínt a regiszterbe írja memóriába memóriából Léptető vezérlés 6 2 ALU vezérlés A B N 1, ha az eredmény < 0, különben 0, Z 1, ha az eredmény = 0, különben 0. C sín B sín Memória vezérlő regiszterek ALU MAR MDR PC MBR SP LV CPP TOS OPC H Léptető memória

26 Máté: Architektúrák5. előadás26 Pl. SP = SP + 1 SP  B sín ALU: B+1  C C  SP Vezérlő jelek B sínre írja a regisztert C sínt a regiszterbe írja memóriába memóriából Léptető vezérlés 6 2 ALU vezérlés A B N 1, ha az eredmény < 0, különben 0, Z 1, ha az eredmény = 0, különben 0. C sín B sín Memória vezérlő regiszterek ALU MAR MDR PC MBR SP LV CPP TOS OPC H Léptető memória

27 Máté: Architektúrák5. előadás27 2 6 ALU vezérlés Pl. SP = SP + 1 SP  B sín ALU: B+1  C C  SP Vezérlő jelek B sínre írja a regisztert C sínt a regiszterbe írja memóriába memóriából Léptető vezérlés A B N 1, ha az eredmény < 0, különben 0, Z 1, ha az eredmény = 0, különben 0. C sín B sín Memória vezérlő regiszterek ALU MAR MDR PC MBR SP LV CPP TOS OPC H Léptető memória

28 Máté: Architektúrák5. előadás28 Pl. SP = SP + 1 SP  B sín ALU: B+1  C C  SP Vezérlő jelek B sínre írja a regisztert C sínt a regiszterbe írja memóriába memóriából Léptető vezérlés 6 2 ALU vezérlés A B N 1, ha az eredmény < 0, különben 0, Z 1, ha az eredmény = 0, különben 0. C sín B sín Memória vezérlő regiszterek ALU MAR MDR PC MBR SP LV CPP TOS OPC H Léptető memória

29 Máté: Architektúrák5. előadás29 Pl. SP = SP + 1 SP  B sín ALU: B+1  C C  SP Vezérlő jelek B sínre írja a regisztert C sínt a regiszterbe írja memóriába memóriából Léptető vezérlés 6 2 ALU vezérlés A B N 1, ha az eredmény < 0, különben 0, Z 1, ha az eredmény = 0, különben 0. C sín B sín Memória vezérlő regiszterek ALU MAR MDR PC MBR SP LV CPP TOS OPC H Léptető memória

30 Máté: Architektúrák5. előadás30 Memóriaműveletek (4.1. ábra) Szócímzés: 32 bites adat írása, olvasása. szó cím = 4 * (bájt cím), a túlcsorduló bitek elvesznek MAR (Memory Address Register) MDR (Memory Data Register) Bájtcímzés: gépi szintű utasítás bájt olvasás. PC (Program Counter): bájt cím, MBR (Memory Byte Register): bájt. MBR kétfajta értelmezése (két vezérlőjel): MBR: MBR előjel kiterjesztéssel kerül a B sínre, MBRU: MBR előjel nélküli kiterjesztéssel kerül a B sínre. MAR MDR PC MBR memória

31 Máté: Architektúrák5. előadás31 Léptető vezérlés N Z 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, 9 jel: a C sínről regiszterekbe írás, 3 jel: a memória eléréshez 2 jel: szó íráshoz/olvasáshoz 1 jel: bájt olvasáshoz. Összesen 29 jel szükséges A B sínre csak egy regiszter írhat egyszerre, ezért 9 helyett elég 4 jel, összesen 24 vezérlő jelre van szükség. Az adatút vezérlése (4.1. ábra) 6 2 ALU vezérlés A B C sín B sín ALU MAR MDR PC MBR SP LV CPP TOS OPC H Léptető memória

32 Máté: Architektúrák5. előadás32 NEXT ADDRESS JMPC JAMN JAMZ SLL8 SRA1 F0F1 ENA ENB INVA INC H OPC TOS LV SP PC MDRMAR WRITE READ FETCH B sín 938934 Mikroutasítások 24 bit: az adatút vezérléséhez 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. 0 = MDR1 = PC2 = MBR3 = MBRU4 = SP 5 = LV6 = CPP7 = TOS8 = OPC9-15 semmi AddrJAMALUCMemB

33 Máté: Architektúrák5. előadás33 SP  B sín; ALU  C; C  SP

34 Máté: Architektúrák5. előadás34 Memória ciklus A memória ciklus az adatút végén kezdődik (a C sínről a regiszterek feltöltése után), ezért ha a memória címet módosította ez a mikroutasítás, akkor a memória cím a módosított MAR ill. PC regiszter értéke lesz. Az olvasás eredménye csak két ciklussal később használható az ALU-ban, mert MDR ill. MBR csak a következő adatút ciklus vége felé töltődik fel a memó- riából, addig MDR ill. MBR régi értéke érhető el. MAR MDR PC MBR memória

35 Máté: Architektúrák5. előadás35 Memória ciklus: MAR = LV; rd; TOS = MDR

36 Máté: Architektúrák5. előadás36 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. Az adatút ciklus (4.6. ábra) elején MIR feltöltődik a vezérlőtár MPC által mutatott szavával. AddrJALUCMB 9 512x36 bites vezérlőtár (ROM) a mikroprogram tárolására MIR MPC 4-ről 16-ra dekódoló A mikroprogram

37 Máté: Architektúrák5. előadás37 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 a C sínről. 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. Memória ciklus kezdete. N Z 6 2 A B C sín B sín ALU MAR MDR PC MBR SP LV CPP TOS OPC H Léptető memória

38 Máté: Architektúrák5. előadás38 Mic-1: 4.6. ábra. AddrJALUCMB 9 9 512x36 bites vezérlőtár (ROM) a mikroprogram tárolására MIR MPC N Z MBR 8 JAMN/JAMZ JMPC 1 bites flip-flopok (N&JAMN) + (Z&JAMZ) + MPC új tartalmának kialakítása 1 2 3

39 Máté: Architektúrák5. előadás39 MPC új tartalma, JAMN/JAMZ A 9 bites következő cím (Addr) az MPC-be kerül. (JAMN ÉS N) VAGY (JAMZ ÉS Z) és MPC legmagasabb bitjének logikai vagy kapcsolata képződik MPC legmagasabb helyértékén. Pl.: esetén a mikroprogram a 0x092 címen folytatódik, ha Z = 0, 0x192 címen folytatódik, ha Z = 1. Feltételes ugrás – elágazás – a mikroprogramban. CímAddrJAMAdatút vezérlő bitek 0x750x092001...JAMZ =1

40 Máté: Architektúrák5. előadás40 JAMN: if(LV-H < 0) goto L1; else goto L2 L2+ 0x100= L1

41 Máté: Architektúrák5. előadás41 MPC új tartalma, JMPC 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: goto(MBR) vagy goto(MBR OR 0x100) Kezdődhet az újabb mikroutasítás végrehajtása.

42 Máté: Architektúrák5. előadás42 JMPC: TOS=H+SP+1; goto(MBR)

43 Máté: Architektúrák5. előadás43 Mic-1 működése (MPC)  MIR regiszter  B sín,Addr  MPC ALU, léptető megtudja, mit kell csináljon, eredmény  C, N, Z C  regiszterekbeJAMN, JAMZ és(N), (Z) mem.  MDR és/vagyalapján módosul MPC mem.  MBR Memória ciklus indításaJMPC és (MBR) (rd, wr, fetch)alapján módosul MPC.

44 Máté: Architektúrák5. előadás44 Mic-1 programozá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).

45 Máté: Architektúrák5. előadás45 MAL (Micro Assembly Language ) SOURCE: a B sínre kötött regiszterek bármelyike: MDR, PC, MBRU (előjel nélküli - MBR Unsigned), MBR, SP, LV, CPP, TOS, OPC. 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. N Z 6 2 A B C sín B sín ALU MAR MDR PC MBR SP LV CPP TOS OPC H Léptető memória

46 Máté: Architektúrák5. előadás46 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!

47 Máté: Architektúrák5. előadás47 Feltétlen ugrás: goto Main1 Az Addr mezőbe Main1 címét kell írni. Feltétlen ugrás MBR szerint (kapcsoló utasítás): Ilyenkor JMPC = 1 goto (MBR OR value) value általában 0 vagy 0x100.

48 Máté: Architektúrák5. előadás48 Feltételes elágazás, pl.: TOS (Top Of Stack) alapján Z = TOS ; if (Z) goto L1; else goto L2 // Z=1, ha TOS=0, különben Z=0. esetén a mikroprogram az L20x092 címen folytatódik, ha Z = 0, L10x192 címen folytatódik, ha Z = 1. Az L1 és L2 címek különbsége 256 (0x100) kell legyen (4.7. ábra)! CímAddrJAMAdatút vezérlő bitek 0x750x092001...JAMZ =1

49 Máté: Architektúrák5. előadás49 Eljárás: paraméterek, munka terület. 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). SP → d5 d4 d3 d2 LV → d1 a3 a2 a1 SP → a3 a2 LV → a1 SP → b4 b3 b2 LV → b1 a3 a2 a1 SP → c2 LV → c1 b4 b3 b2 b1 a3 a2 a1

50 Máté: Architektúrák5. előadás50 A verem operandusok és az eredmény ideiglenes tárolására is használható (operandus verem), pl. (4.9. ábra): a1 = a2 + a3 SP → a2 a3 a2 LV → a1 SP → a3 a2 a3 a2 LV → a1 SP → a2+a3 a3 a2 LV → a1 SP → a3 a2 LV → a2+a3

51 Máté: Architektúrák5. előadás51 IJVM (Integer Java Virtual Machine): a JVM egész értékű aritmetikát tartalmazó része. 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. Mikroprogram: betölti, értelmezi és végrehajtja az IJVM utasításokat: betöltés-végrehajtás (fetch-execute) ciklus.

52 Máté: Architektúrák5. előadás52 Az IJVM memóriamodellje (4.10. ábra) A 4 GB memória, 1 G szóként is szervezhető. CPP → Konstans terület SP → Aktuális operandusok 3. LV → Aktuális lokális változók 3. lokális változók 2. lokális változók 1. PC → Metódus terület Konstansok, mutatók Tartalma a program betöltésekor alakul ki, ISA utasítások nem írhatják felül Program PC bájtot címez a metódus területen belül Verem lokális változók és operandus verem

53 Máté: Architektúrák5. előadás53 IJVM néhány utasítása: 4.11. ábra (részlet). hexMnemonicjelentés 10BIPUSH byte Beteszi a byte–ot a verembe A7GOTO offset Feltétel nélküli ugrás offset -re 60IADD Kivesz a veremből két szót, az összegüket a verembe teszi 99IFEQ offset Kivesz a veremből egy szót, ha 0, akkor offset -re ugrik 9FIF_ICMPEQ offset Kivesz a veremből két szót, ha egyenlők, akkor offset - re ugrik 15ILOAD varnum Beteszi varnum -ot a verembe 36ISTORE varnum Kivesz a veremből egy szót, és eltárolja varnum -ba 64ISUB Kivesz a veremből két szót, a különbségüket a verembe teszi 00NOP Nem csinál semmit 5FSWAP A verem két felső szavát megcseréli

54 Máté: Architektúrák5. előadás54 Java (C) IJVM program 4.14. ábra Bin. kód program 1ILOADj// i = j + k 15 02 2ILOADk 15 03 i = j + k; 3IADD 60 if(i = = 3) 4ISTOREi 36 01 k = 0; 5ILOADi// if(i = = 3) 15 01 else 6BIPUSH3 10 03 j = j – 1; 7IF_ICMPEQ L1 9F 00 0D 8ILOADj// j = j – 1 15 02 9BIPUSH1 10 01 10ISUB 64 11ISTOREj 36 02 12GOTOL2 A7 00 0F 13 L1:BIPUSH0// k = 0 10 00 14ISTOREk 36 03 15 L2:

55 Máté: Architektúrák5. előadás55 IJVM megvalósítása Mic-1-en (4.11., 17. ábra) Előkészület a gép indításakor: PC a végrehajtandó utasítás címét, MBR az utasítás kódját tartalmazza. A főciklus legelső mikroutasítása a Main1, ez: PC=PC+1; fetch; goto(MBR); PC most a végrehajtandó utasítás utáni bájtra mutat, ez lehet egy újabb utasítás kódja, vagy operandus. PC új értékének kialakulása után indul a fetch-csel kezdeményezett memória ciklus, ez a program következő bájtját olvassa MBR-be (a következő mikroutasítás végén lesz MBR-ben a bájt). goto (MBR) elugrik az utasítás feldolgozásához.

56 Máté: Architektúrák5. előadás56 Minden utasítás feldolgozását végző függvény első mikroutasítása az utasítás kódnak megfelelő címen van a mikroprogram tárban.

57 Máté: Architektúrák5. előadás57 A mikroutasítások elhelyezkedése a mikroprogram tárban (részlet) 0 8 1 9 2 A 3 B 4 C 5 D 6 E 7 F 0NOP1IAND3POP3SWAP2SWAP3SWAP4SWAP5SWAP6 8LDC_W3LDC_W4IINC3IINC4IINC5IINC6IFLT2IFLT3 10BIPUSH1BIPUSH2 LDC_W1LDC_W2ILOAD1ILOAD2ILOAD3 18ILOAD4ILOAD5IFLT4INVOKEV19INVOKEV20INVOKEV21INVOKEV22INVOKEV23 20FF2 28 30ISTORE1ISTORE2 38ISTORE3ISTORE4ISTORE5ISTORE6 40 48 50POP1 58POP2DUP1DUP2SWAP1 60IADD1IADD2IADD3ISUB1ISUB2ISUB3 68 70 78IAND1IAND2 80IOR1IOR2IOR3IINC1IINC2INVOKEV1INVOKEV2 88INVOKEV3INVOKEV4INVOKEV5INVOKEV6INVOKEV7INVOKEV8INVOKEV9INVOKEV10

58 Máté: Architektúrák5. előadás58 Látható, hogy nem helyezhetjük egymás után az egyes utasítások feldolgozását végző mikroutasítás sorozatot, ezért inkább azt a megoldást választottuk, hogy minden mikroutasítás tartalmazza a következő címét. Ha az első utasítás pl. NOP (No OPeration, nem csinál semmit), ennek a kódja 0x00, ezért a 0x00 címen kezdődik a NOP feldolgozását végző függvény. Ez egyetlen goto Main1 mikroutasítás.

59 Máté: Architektúrák5. előadás59 IJVM megvalósítása Mic-1-en (4.11., 17. ábra) A főciklus a Main1-nél kezdődik; PC a végrehajtandó utasítás címét, MBR az utasítás kódját tartalmazza. 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

60 Máté: Architektúrák5. előadás60

61 Máté: Architektúrák5. előadás61 Feladatok Milyen string kezelő utasításokat ismer? Melyik flag módosítja a string kezelő utasítások működését? Melyik szegmens regiszterek befolyásolják a string kezelő utasítások működését? Mi a szerepe a string kezelő utasításokban az operandusoknak? Mely string kezelő utasítások módosítják/nem módosítják a flag-eket? Mit csinál a MOVSW utasítás? Mit csinál a STOS utasítás?

62 Máté: Architektúrák5. előadás62 Feladatok Azonos-e a MOVSW hatása két egymás utáni MOVSB hatásával? Indokolja a válaszát! Hogy állítja be a flag-eket a CMP d,AL utasítás? Hogy állítja be a flag-eket a CMPSB utasítás? Hogy állítja be a flag-eket a SCAS d utasítás? Milyen ismétlő prefixumokat ismer? Mi az egyes ismétlő prefixumok hatása? Mely prefixumok használata ajánlott flag-eket beállító illetve flag-eket nem módosító string kezelő utasítások előtt?

63 Máté: Architektúrák4. előadás63 Feladatok Az alábbi feladatok megoldásában használjon ismétlési prefixumot! Állapítsa meg egy 0-ra végződő bájtokból/szavakból álló string hosszát! Keresse meg egy n bájtból álló string-ben az A betű első/utolsó előfordulását (ha van)! Keresse meg egy 0-ra végződő string-ben az A betű első/utolsó előfordulását (ha van)! Helyes-e a SCASW utasítás használata az AB betű kombináció keresésében 2n bájt hosszú stringben? Indokolja a válaszát!

64 Máté: Architektúrák4. előadás64 Feladatok Írjon eljárást, amely megállapítja, hogy egy 0-ra végződő string-ben előfordul-e az ABC jelsorozat! Írjon eljárást, amely megállapítja, hogy egy string-ben előfordul-e egy másik string! Töltse fel az n hosszúságú bájt vektort az ABC mintával! Írjon eljárást egy n bájt hosszúságú forrás terület cél területre másolására (a két terület átfedhet)! 2n bájt hosszúságú forrás terület cél területre másolása mindig megoldható MOVSW utasításokkal? (A két terület átfedhet!)

65 Máté: Architektúrák5. előadás65 Feladatok Mi az egyszerűsített lexikális elemző feladata? Miért szerepel az assume utasításban es: data? Mire szolgál a CLD utasítás? Milyen ugrótáblákat tartalmaz a program? Milyen adatokat tartalmaz egy ugró tábla? Hogy értük el, hogy ugró táblát alkalmazhatunk a programban? Hogy működik az XLAT utasítás? Miért alkalmaztunk más módszert az átkódoló tábla kialakításakor a nagy betűk kódjának beírásához, mint a speciális jelek kódjának beírásához?

66 Máté: Architektúrák5. előadás66 Feladatok Milyen eljárásokkal valósítottuk meg az egyszerűsített lexikális elemzőt? Melyiknek mi a feladata? Milyen karakter eredményez hibát szám beolvasása közben? Milyen szintaktikus helyzetbe kerül a program hiba észlelése után? Hogyan kezeli a program a különböző szintaktikus helyzeteket? Magyarázza el a JMP [ax] utasítás működését! Mit kellene módosítani a programban, hogy a vége jel csak speciális jel után következhessen?

67 Máté: Architektúrák5. előadás67 Feladatok Mi a mikroarchitektúra szint feladata? Hogy valósítja meg a feladatát? Mi az adatút? Milyen sínjei vannak a Mic-1 -nek? Mely regiszterek csatlakoznak az A sínhez? Mely regiszterek csatlakoznak a B sínhez? Mely regiszterek csatlakoznak a C sínhez? Milyen jelek szükségesek az adatút vezérléséhez? Mire szolgál az SP regiszter két vezérlő bemenete? Mire szolgál az MBR regiszter két vezérlő bemenete?

68 Máté: Architektúrák5. előadás68 Feladatok Hogy történik a memóriából olvasás? Hogy történik a memóriába írás? Mire szolgál a MAR/MDR regiszter? Ha egy mikroutasítás módosítja MAR tartalmát, és olvas a memóriából, akkor mely címről fog olvasni? Memóriából olvasás után mikor használható MDR új értéke az adatúton illetve MPC meghatározásához? Mire szolgál a PC és az MBR regiszter? Mire szolgál az N és a Z regiszter? Mire szolgál a H regiszter?

69 Máté: Architektúrák5. előadás69 Feladatok Milyen memória műveletei vannak a Mic-1 -nek? Milyen jelek szükségesek a Mic-1 adatútjának vezérléséhez? Hány jel szolgál az A sín vezérlésére? Hány jel szolgál a B sín vezérlésére? Hány jel szolgál az ALU és a léptető vezérlésére? Hány jel szolgál a C sín vezérlésére? Hány jel szolgál a memória elérésére? Milyen részei vannak a Mic-1 mikroutasításainak? Milyen részei vannak az adatút ciklusnak?

70 Máté: Architektúrák5. előadás70 Feladatok Milyen részei vannak a Mic-1 mikroutasításainak? Milyen típusú memória a mikroprogram tároló? Mire szolgál az MPC regiszter? Mire szolgál az MIR regiszter? Miért van szükség az Addr mezőre? Milyen részei vannak az adatút ciklusnak? Hány bit kell a B/C sín vezérléséhez? Mire szolgál a JMPN/JMPZ bit? Mire szolgál a JMPC bit? Hogy alakul ki MPC új tartalma?

71 Máté: Architektúrák5. előadás71 Feladatok Miért nem megengedett az MAR = SP; rd MDR = H utasítás pár? Hogy valósítható meg feltétlen ugrás a mikroprogramban? Hogy valósítható meg feltételes ugrás a mikroprogramban? Hogy valósítható meg kapcsoló utasítás a mikroprogramban?

72 Máté: Architektúrák5. előadás72 Feladatok Milyen részei vannak az egy bites ALU-nak? Milyen vezérlő bemenetei vannak az ALU-nak? Milyen vezérlő bemenetek esetén lesz 1 az eredmény? Milyen eredményt szolgáltat az F 0 =0, F 1 =1, ENA=0, ENB=0, INVA=1, INC=1 vezérlő bemenet? A Mic-1 mely regisztere lehet az ALU bal/jobb operandusa? Hova tárolhatja a Mic-1 az eredményt? Érvényes utasítás-e Mic-1-en a H=OPC-H? Miért? Érvényes utasítás-e Mic-1-en a H=H-OPC? Miért?

73 Máté: Architektúrák5. előadás73 Feladatok Milyen utasításai vannak a Mic-1 gépnek? Milyen ugró utasításai vannak a Mic-1 gépnek? Milyen értékeket vehet föl a SOURCE operandus? Milyen értékeket vehet föl a DEST operandus? Mit jelent a wr? Mely utasítások tudnak olvasni a memóriából, és hogy működnek? Hogy lehet védekezni az ellen, hogy MDR egyszerre kapjon értéket a memóriából és a C sínről? Mi az operandus verem?

74 Máté: Architektúrák5. előadás74 Feladatok Minek a rövidítése az IJVM? Ismertesse az IJVM memóriamodelljét! Milyen utasításai vannak az IJVM-nek? Mi a BIPUSH/DUP/IADD/SWAP utasítás feladata? Mi a GOTO utasítás feladata? Mi a IFEQ/IF_ICMPEQ utasítás feladata? Hogy működik a Mic-1 főciklusa? Mit tartalmaz PC és MBR a főciklus indulásakor? Hogy valósítható meg Mic-1-en a NOP utasítás? Hogy valósítható meg Mic-1-en az IADD utasítás?


Letölteni ppt "Máté: Architektúrák5. előadás1 String kezelő utasítások Az s forrás területet (DS:SI), a d cél területet pedig (ES:DI) címzi. A mnemonik végződése (B /"

Hasonló előadás


Google Hirdetések