Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaBoglárka Szekeresné Megváltozta több, mint 10 éve
1
Máté: Architektúrák9. előadás1 Memória modellek Memória szemantika: STORE A -t közvetlenül követő LOAD A mit ad vissza? A memória műveletek végrehajtása: kötött sorrendben, definiálatlan sorrendben (ez a trend, mert hardver szinten egyszerűbb és gyorsabb). A hardver segítséget nyújthat: –SYNC utasítás: befejeztet minden megkezdett memória műveletet, –függőség esetén a hardver vár.
2
Máté: Architektúrák9. előadás2 Regiszterek ISA-szinten a mikroszint nem minden regisztere látszik (TOS, MAR), de van közös is (PC, SP). Speciális regiszterek: PC, SP, … Általános célú regiszterek: a gyakran használt adatok gyors elérésére. Jó, ha szimmetrikusak: fordítók, konvenciók. RISC gépen általában legalább 32 általános célú. Kernelmódban továbbiak: gyorsítótár vezérlés, memória védelem, … PSW (Program Status Word): az eredmény negatív, nulla,... mód, prioritásszint, megszakítás-állapot,...
3
Máté: Architektúrák9. előadás3 Utasításkészlet LOAD, STORE, MOVE, aritmetikai, logikai, feltétlen, feltételes elágazó utasítások, …
4
Máté: Architektúrák9. előadás4 Pentium 4 Nagyon sok előd (kompatibilitás!), a fontosabbak: 4004: 4 bites, 8086, 8088: 16 bites, 8 bites adat sín. 80286: 24 bites (nem lineáris) címtartomány (16 K darab 64 KB-os szegmens). 80386: IA-32 architektúra, az Intel első 32 bites gépe, lényegében az összes későbbi is ezt használja. Pentium II –től MMX utasítások.
5
Máté: Architektúrák9. előadás5 A Pentium 4 üzemmódjai real (valós): az összes 8088 utáni fejlesztést kikapcsolja (valódi 8088-ként viselkedik). Hibánál a gép egyszerűen összeomlik, lefagy. virtuális 8086: a 8088-as programok védett módban futnak (ha WINDOWS-ból indítjuk az MS-DOS-t, és ha abban hiba történik, akkor nem fagy le, hanem visszaadja a vezérlést a WINDOWS-nak). védett: valódi Pentium 4. 4 védelmi szint (PSW): 0: kernelmód (operációs r.), 1, 2: ritkán használt, 3: felhasználói mód.
6
Máté: Architektúrák9. előadás6 Memóriaszervezés: 16 K db szegmens lehetséges, de a WINDOWS-ok és UNIX is csak 1 szegmenst támogatnak, és ennek is egy részét az operációs rendszer foglalja el, minden szegmensen belül a címtartomány: 0 - 2 32 -1 Little endian tárolási mód: az alacsonyabb címen van az alacsonyabb helyértékű bájt.
7
Máté: Architektúrák9. előadás7 Regiszterek (5.3. ábra): (majdnem) általános regiszterek: Ezek 8 és 16 bites részei önálló regiszterként használhatók. EAX EBX ECX EDX ALAH AX BLBH BX CLCH CX DLDH DX 32 16 88 Accumulator Base index Count Data
8
Máté: Architektúrák9. előadás8 Regiszterek (5.3. ábra): ESI, EDI (mutatók tárolására, szöveg kezelésre), EBP (keretmutató, verem kezelésre), ESP (verem mutató), EIP (utasítás számláló), EFLAGS (PSW), CS, SS, DS, ES, FS, GS (16 bites regiszterek. A kompatibilitást biztosítják a régebbi gépekkel. Mivel a Windows, Unix csak egy címtartományt használ, ezekre csak a visszafelé kompatibilitás miatt van szükség).
9
Máté: Architektúrák9. előadás9 UltraSPARC III SPARC (1987) még 32, a Version 9 már 64 bites architektúra, az UltraSPARC ezen alapul. Memóriaszervezés: 64 bites (lineáris) címtartomány (jelenleg maximum 44 bit használható). Big endian, de little endian is beállítható. Regiszterek: 32 általános (5.4. ábra) 64 bites, a használatuk részben konvención, részben a hardveren alapul), 32 lebegőpontos (32 vagy 64 bites, de lehetséges két regiszterben egy 128 bites számot tárolni).
10
Máté: Architektúrák9. előadás10 Általános regiszterek R0-R7 (G0-G7) Globális változók: minden eljárás használhatja, G0 huzalozott 0, minden tárolás eredménytelen. R8-R15 (O0-O7,): Kimenő paraméterek, de R14 (O6) = SP: verem mutató O7 csak ideiglenes tárolásra használható. R16-R23 (L0-L7) Lokális regiszterek R24-R31 (I0-I7) Bejövő paraméterek, de R30 (I6) = FP az aktuális veremkeret mutatója, R31: visszatérési cím.
11
Máté: Architektúrák9. előadás11 CWP (Current Window Pointer, 5.5. ábra) mutatja az aktuális regiszter ablakot (több regiszter készlet létezik, de mindig csak egy látszik). Ha kifogy a regiszter készlet, memóriába mentés, … Bemenő Lokális KimenőBemenő Lokális Kimenő Korábbi Globális R30=FP R14=SP R30=FP SP Átlapolás CWP = 7 CWP = 6 R31=visszatérési cím O L I O L I
12
Máté: Architektúrák9. előadás12 Load/store architektúra: csak ezek az utasítások fordulhatnak a memóriához. A többi utasítás operandusa regiszterben vagy az utasításban van. Az eredmény is regiszterbe kerül.
13
Máté: Architektúrák9. előadás13 5.6. ábra. A 8051 memória szervezése Külön címtartományú program és adat memória. 4095 0 127 48 32 0 Program memória (ROM) Munkaterület Bit-címezhető memória 4 regiszterkészlet Vannak lapkán kívüli bővítési lehetőségek. Van nagyobb (8052) és programozható (8751 és 8752) „rokona” (ROM helyett EPROM). 8 regiszter: R0, …, R7. A regiszterek a memóriában vannak. 4 regiszter készlete van, de egyszerre csak egy használható.
14
Máté: Architektúrák9. előadás14 5.6. ábra. A 8051 memória szervezése, fő regiszterei PSW: Carry, Auxiliary carry, RegisterS, Overflow, Parity A PSW regiszter RS mezeje mondja meg, hogy melyik regiszterkészlet az aktuális. Bit-címezhető memória (32-47. bájt): címzésük: 0-127 Bit utasítások: beállítás, törlés, ÉS, VAGY, tesztelés. CARSO PPSW EAE2ESE1X1E0X0IE E2ESE1X1E0X0IP O1R1O0R0E1X1E0X0TCON 1. időzítő2. időzítőTMOD ← 8 bit → Munkaterület Bit-címezhető memória 4 regiszterkészlet 127 48 32 0
15
Máté: Architektúrák9. előadás15 IE (Interrupt Enable): EA= 1: nincs tiltva a megszakítás, 0: mind tiltva van, ES=1: megszakítás engedélyezve a soros vonalon, 0: tiltva E0-2=1: a 0-2 időzítő csatorna engedélyezve, 0: tiltva. Az engedélyezett számlálók egyszerre futhatnak, és ezek megszakítást válthatnak ki. X0-1=1: külső eszköz megszakítás engedélyezve, 0: tiltva CARSO PPSW EAE2ESE1X1E0X0IE E2ESE1X1E0X0IP O1R1O0R0E1X1E0X0TCON 1. időzítő2. időzítőTMOD ← 8 bit → IP (Interrupt Priority): 0 (alacsony), 1 (magas). Az alacsonyabb szintű megszakítást megszakíthatja egy magasabb szintű.
16
Máté: Architektúrák9. előadás16 TCON: a 0. és 1. időzítőt vezérli (ezek a fő időzítők). O0-1: beáll az időzítő túlcsordulásakor. R0-1: ezzel ki- és bekapcsolható az időzítő futása. A többi bit az időzítő él- vagy szintvezérlésével kapcsolatos. TMOD: a fő időzítők üzemmódját határozza meg 8, 13 vagy 16 bites, valódi időzítő vagy számláló, hardver jelek szintje. CARSO PPSW EAE2ESE1X1E0X0IE E2ESE1X1E0X0IP O1R1O0R0E1X1E0X0TCON 1. időzítő2. időzítőTMOD ← 8 bit →
17
Máté: Architektúrák9. előadás17 Az eddig említett és még néhány speciális regiszter (ACC, B/K portok, …) a 128-255 címtartományban vannak. Pl. ACC a 240-en. A 8052 valódi memóriát tartalmaz a 128-255 tartományban, a speciális regiszterek címe átfed a memóriával. – Direkt címzéssel a speciális regisztereket, – Indirekt címzéssel a RAM-ot érhetjük el.
18
Máté: Architektúrák9. előadás18 Címzési módszerek 3, 2, 1, 0 címes utasítások. Címzési módok: közvetlen operandus, direkt címzés, regiszter címzés regiszter-indirekt címzés, indexelt címzés, bázisindex címzés, verem címzés.
19
Máté: Architektúrák9. előadás19 Verem címzés Fordított Lengyel Jelölés (Postfix Polish Notation - Lukasiewicz) Postfix jelölés: a kifejezéseket olyan formában adjuk meg, hogy az első operandus után a másodikat, majd ezután adjuk meg a műveleti jelet: infix: x + y, postfix: x y +. Előnyei: nem kell zárójel, sem precedencia szabályok, jól alkalmazható veremcímzés esetén.
20
Máté: Architektúrák9. előadás20 Dijkstra algoritmusa Infix jelölés konvertálása postfix-re (5.21, 22. ábra): az infix elemek egy váltóhoz (switch) érkeznek - a változók és konstansok Kaliforniába mennek ( ), a többi esetben a verem tetejétől függően (5.22. ábra): –a kocsi Texas felé megy (1: ), –a verem teteje Kaliforniába megy (2: ), –a kocsi eltűnik a verem tetejével együtt (3: ), –vége az algoritmusnak (4: ), –hibás az infix formula (5: ?). A *( B+C) váltó
21
Máté: Architektúrák9. előadás21 Minden változó és konstans menjen Kaliforniába ( ), a többi esetben a döntési tábla szerint járjunk el (5.21. ábra): A *( B+C) A váltó előtti kocsi +-*/() ? + - * / (? változó Kaliforniába New Yorkból Texasba Texasból Kaliforniába Törlődjön a következő és az utolsó texasi kocsi „ Kaliforniában” kész a postfix forma ?Hibás az infix formula A verem teteje A döntési tábla tartalmazza a prioritási szabályokat. váltó
22
Máté: Architektúrák9. előadás22 ▼ A*(B+C) A▼ *(B+C) A▼ (B+C) * A▼ B+C) ( * AB▼ +C) ( * A váltó előtti kocsi +-*/() ? + - * / (? A verem teteje
23
Máté: Architektúrák9. előadás23 A váltó előtti kocsi +-*/() ? + - * / (? A verem teteje AB▼ C) + ( * ABC ▼) + ( * ABC+ ▼) ( * ABC+ ▼ * ABC+* ▼
24
Máté: Architektúrák9. előadás24 Fordított lengyel jelölésű formulák kiértékelése Pl. (5.24. ábra): (8 + 2 * 5)/(1 + 3 * 2 – 4) // infix 8 2 5 * + 1 3 2 * + 4 – /// postfix Olvassuk a formulát balról jobbra! Ha a következő jel operandus: rakjuk a verembe, műveleti jel: hajtsuk végre a műveletet (a verem tetején van a jobb, alatta a bal operandus!).
25
Máté: Architektúrák9. előadás25 LépésMaradék formulaUtasításVerem 18 2 5 * + 1 3 2 * + 4 - /BIPUSH 88 22 5 * + 1 3 2 * + 4 - /BIPUSH 28, 2 35 * + 1 3 2 * + 4 - /BIPUSH 58, 2, 5 4* + 1 3 2 * + 4 - /IMUL8, 10 5+ 1 3 2 * + 4 - /IADD18 61 3 2 * + 4 - /BIPUSH 118, 1 73 2 * + 4 - /BIPUSH 318, 1, 3 82 * + 4 - /BIPUSH 218, 1, 3, 2 9* + 4 - /IMUL18, 1, 6 10+ 4 - /IADD18, 7 114 - /BIPUSH 418, 7, 4 12- /ISUB18, 3 13/IDIV6 (8 + 2 * 5)/(1 + 3 * 2 – 4) // infix
26
Máté: Architektúrák9. előadás26 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. Rövidebb utasítások: kevesebb helyet foglalnak el, gyorsabban betölthetők. Hosszabb utasítások: több lehetséges műveleti kód, nagyobb memória címezhető. Bájt címzés: hatékonyabb szöveg feldolgozásnál, Szó címzés: nagyobb memória címezhető. …
27
Máté: Architektúrák9. előadás27 Utasításformák, utasításhossz (5.10-11. ábra). Műveleti kód cím Műv. kódcím1cím2 M.k.cím1cím2cím3 1 szó utasítás 1 szó utasítás 1 szó utasítás ut. utasítás
28
Máté: Architektúrák9. előadás28 A műveleti kód kiterjesztése k bites műveleti kód esetén 2 k különböző utasítás lehet, n bites címrésznél 2 n memória címezhető, fix utasítás hossz esetén egyik csak a másik rovására növelhető (5.12. ábra). 1514131211109876543210 műv. kód1. cím2. cím3. cím Lehetőségek: fix utasításhossz: rövidebb kód mellett hosszabb operandus rész, minimális átlagos utasításhossz: a gyakori kódok rövidek, a ritkán használtak hosszabbak.
29
Máté: Architektúrák9. előadás29 A műveleti kód kiterjesztése (5.13. ábra) 16 bit 4 bites műveleti kód 0000xxxxyyyyzzzz 15 db 3 címes utasítás 0001xxxxyyyyzzzz 0010xxxxyyyyzzzz... 1100xxxxyyyyzzzz 1101xxxxyyyyzzzz 1110xxxxyyyyzzzz 16 bit 8 bites műveleti kód 11110000yyyyzzzz 14 db 2 címes utasítás 11110001yyyyzzzz 11110010yyyyzzzz... 11111011yyyyzzzz 11111100yyyyzzzz 11111101yyyyzzzz Az 1111 kódot nem használtuk ki 3 címes utasításnak (menekülő kód), és ez lehetővé teszi, hogy további – igaz, nem 3 címes – utasításokat adjunk meg. 1111 1110 és 1111 1111 is menekülő kód.
30
Máté: Architektúrák9. előadás30 A műveleti kód kiterjesztése 16 bit 12 bites műveleti kód 111111100000zzzz 31 db 1 címes utasítás 111111100001zzzz 111111100010zzzz... 11111110 zzzz 111111101111zzzz 1111 0000zzzz 1111 0001zzzz... 1111 1101zzzz 1111 1110zzzz 16 bit 16 bites műveleti kód 1111 0000 16 db 0 címes utasítás 1111 0001 1111 0010... 1111 1101 1111 1110 1111 1111 1111 1111 is menekülő kód.
31
Máté: Architektúrák9. előadás31 Ortogonalitási elv: Jó architektúrában a műveleti kódok és a címzési módszerek (majdnem) szabadon párosíthatók. Három címes elképzelés (5.25. ábra): 815558 1Műv.kód0célforrás1forrás2Műv.kód 2 1célforrás1eltolás 3Műv.kódeltolás 1. típus: aritmetikai utasítások. 2. típus: közvetlen adat megadás, index módú LOAD és STORE utasítás. 3. típus: elágazó, eljárás hívó utasítások, LOAD és STORE, ezek R0 -t használnák.
32
Máté: Architektúrák9. előadás32 Két címes elképzelés (5.26. ábra). 8354354 Műv.kódmódregeltolásmódregeltolás Feltételesen: 32 bites direkt operandus vagy eltolás A mód 3 bitje lehetővé teszi a közvetlen operandus, direkt, regiszter, regiszter indirekt, index és verem címzési módokat Két további mód bevezetésére is lehetőség van.
33
Máté: Architektúrák9. előadás33 Pentium 4 utasításformái (5.14. ábra) Több generáción keresztül kialakult architektúra. Csak egy operandus lehet memória cím. Prefix, escape (bővítésre), MOD, SIB (Scale Index Base) 0-51-20-1 0-4 prefixműv.kódMODSIBeltolásközvetlen 233 módRECR/M 233 skálaindexbázis 611 utasítás Melyik operandus a forrás? bájt/szó bit bájt
34
Máté: Architektúrák9. előadás34 SIB (5.28. ábra): jó, de megéri? ← EBP Egyéb lokális változók a[0] ← EBP+8 a[1] ← EBP+12 a[2] ← EBP+16 Verem keret Legyen i az EAX regiszterben SIB módú hivatkozás: M[4*EAX+EBP+8] 233 skálaindexbázis bit
35
Máté: Architektúrák9. előadás35 Címzési módok (5.27. ábra): nagyon szabálytalan. Baj: nem minden utasításban használható minden mód, nem minden regiszter használható minden módban (nincs EBP indirekt, ESP relatív címzés). 32 bites címzési módok: MÓD R/M00011011 000M[EAX]M[EAX+offset8]M[EAX+offset32]EAX v. AL 001M[ECX]M[ECX+offset8]M[ECX+offset32]ECX v. CL 010M[EDX]M[EDX+offset8]M[EDX+offset32]EDX v. DL 011M[EBX]M[EBX+offset8]M[EBX+offset32]EBX v. BL 100SIBSIB offset8-calSIB offset32-velESP v. AH 101direktM[EBP+offset8]M[EBP+offset32]EBP v. CH 110M[ESI]M[ESI+offset8]M[ESI+offset32]ESI v. DH 111M[EDI]M[EDI+offset8]M[EDI+offset32]EDI v. BH
36
Máté: Architektúrák9. előadás36 UltraSPARC utasításformái (5.15. ábra) 32 bites egyszerű utasítások. Forma2565185 1a m.k.célm.k.forrás10FP-m.k.forrás23 címes 1b m.k.célm.k.forrás11közvetlen konst.2 címes Aritmetikai utasítások: 1 cél és 2 forrás regiszter vagy 1 cél, 1 forrás regiszter és 1 közvetlen konstans. LOAD, STORE (csak ezek használják a memóriát): a cím két regiszter összege vagy egy regiszter + 13 bites eltolás. Processzorokat szinkronizáló utasítás.
37
Máté: Architektúrák9. előadás37 32 bites közvetlen adat megadása: SETHI – megad 22 bitet, a következő utasítás a maradék 10 bitet. Forma25322 2 m.k.célm.k.közvetlen konstansSETHI Forma214322 (19) 3 m.k. A feltm.k.PC relatív címUGRÁS Az ugrások PC -relatívok, szót (4-gyel osztható bájt címet) címeznek. Jósló utasításokhoz 3 bitet elcsíptek. Az A bit az eltolás rést akadályozza meg bizonyos feltételek esetén. 3 Forma230 4 m.k. PC relatív cím CALL Eljárás hívás: 30 bites PC -relatív (szó) cím
38
Máté: Architektúrák9. előadás38 UltraSPARC címzési módjai Memóriára hivatkozó utasítások: betöltő, tároló, multiprocesszor szinkronizáló index + 13 bit eltolás (1b), bázis-index (1a). A többi utasítás általában 5 bites regiszter címzést használ
39
Máté: Architektúrák9. előadás39 A 8051 utasításformátumai 1Műv.kódPl. ACC növelő 2Műv.kódRR 3 bites regisztercím 3Műv.kódOperandus 4Műv.kód11 bites cím 5Műv.kód16 bites cím 6Műv.kódOperandus1Operandus2 1.Implicit regiszter általában ACC, … 2.Regiszter és ACC tartalmán végzett művelet, mozgatás, … 3.Operandus: közvetlen, eltolás, bitsorszám 4.Ugrás, szubrutin (eljárás) hívás 5.Ugrás, szubrutin (eljárás) hívás 6.Pl. közvetlen operandus memóriába töltése, …
40
Máté: Architektúrák9. előadás40 A 8051 címzési módjai Implicit: ACC Regiszter: akár forrás, akár cél operandus lehet Direkt: 8 bites memóriacím Regiszter-indirekt: 8 bites memóriacím, indirekt címzés a 16 bites DPTR-rel Közvetlen operandus: általában 8 bites, de 11 ill. 16 bites abszolút cím ugráshoz, eljárás híváshoz
41
Máté: Architektúrák9. előadás41 Összefoglaló: 5.29. ábra. Címzési módPentium 4UltraSPARC III8051 AkkumulátorX KözvetlenXXX DirektXX RegiszterXXX Regiszter indirektXX IndexXX Bázis-indexXX Verem A bonyolult címzési módok tömörebb programokat tesznek lehetővé, de nehezítik a párhuzamosítást. Ha a párosítás nem történhet szabadon, akkor jobb, ha csak egy választási lehetőség van (egyszerűbb hatékony fordítóprogramot írni).
42
Máté: Architektúrák9. előadás42 Utasítástípusok Adatmozgató (másoló) utasítások. Diadikus: +, -, *, /, AND, OR, NOT, XOR, … Monadikus: léptetés, forgatás, CLR, INC, NEG, … Összehasonlítás, feltételes elágazás: Z, O, C, … Eljáráshívás. Visszatérési cím: - rögzített helyre (rossz), - az eljárás első szavába (jobb), - verembe (rekurzív eljárásokhoz is jó). Ciklusszervezés (5.30. ábra): számláló Input/output (5.31-33. ábra): - programozott I/O: tevékeny várakozás, 5.32. ábra, - megszakítás vezérelt I/O, - DMA I/O (5.33. ábra): cikluslopás.
43
Máté: Architektúrák9. előadás43 Ciklusszervezés (5.30. ábra) i=1; L1:első utasítás. utolsó utasítás i = i + 1; if(i ≤ n) goto L1; Végfeltételes ismétlés i=1; L1: if(i > n) goto L2; első utasítás. utolsó utasítás i = i + 1; goto L1; L2:… Kezdő feltételes ismétlés
44
Máté: Architektúrák9. előadás44 Feltételes végrehajtás (5.51-52. ábra): if(R1 == 0) R2 = R3; CMP R1, 0 BNE L1 MOV R2, R3 L1: … CMOVZ R2, R3, R1 if(R1 == 0) { R2 = R3; R4 = R5; } else { R6 = R7; R8 = R9; } CMP R1, 0 BNE L1 MOV R2, R3 MOV R4, R5 BR L2 L1: MOV R6, R7 MOV R8, R9 L2: … CMOVZ R2, R3, R1 CMOVZ R4, R5, R1 CMOVN R6, R7, R1 CMOVN R8, R9, R1 CMOVZ R2, R3, R1 csak akkor hajtja végre R2 = R3 -t, ha R1= 0.
45
Máté: Architektúrák9. előadás45 Predikáció, IA – 64 (5. 53. ábra) 64 predikátum regiszter: 1 bites regiszterek, többnyire párban. Az IA – 64 minden utasítása predikátumos. CMPEQ R1, R2, P4 beállítja P4 -et és törli P5 -öt, ha R1 = R2, különben P5 -öt állítja be és P4 -et törli. if(R1 == R2) R3 = R4 + R5; else R6 = R4 – R5; CMP R1, R2 BNE L1 MOV R3, R4 ADD R3, R5 BR L2 L1: MOV R6, R4 SUB R6, R5 L2: … CMPEQ R1, R2, P4 ADD R3, R4, R5 SUB R6, R4, R5
46
Máté: Architektúrák9. előadás46 A Pentium 4 utasításai Egész utasítások legnagyobb része: 5.34. ábra. Egyéb utasítások (pl. lebegőpontosak). Az UltraSPARC III utasításai Összes egész utasítás: 5.35. ábra. A utasításnévben CC : beállítja a feltételkódot. ADD, ADDC, ADDCC, ADDCCC utasítások. Szimulált utasítások (5.36. ábra), pl.: MOV SRC,DST ≡ OR SRC,G0,DST A 8051 utasításai (5.37. ábra) Bit utasítások, pl. a 43. bit 1-re állítása: SETB 43
47
Máté: Architektúrák9. előadás47 Kifejezés A kifejezés szimbólumokból és konstansokból épül fel az alább ismertetendő műveletek segítségével. Kifejezés az operátorok, pszeudo operátorok operandus részére írható. Értékét a fordítóprogram határozza meg, és a kiszámított értéket alkalmazza operandusként. Szimbólumok értékén konstansok esetében természetesen a konstans értékét, címkék, változók esetében a hozzájuk tartozó címet – és nem a tartalmat – értjük.
48
Máté: Architektúrák9. előadás48 Kifejezés A kifejezés értéke nemcsak számérték lehet, hanem minden, ami az utasításokban megengedett címzési módok valamelyikének megfelel. Pl. [BX] is kifejezés és értéke a BX regiszterrel történő indirekt hivatkozás, és ehhez természetesen a fordító programnak nem kell ismernie BX értékét.
49
Máté: Architektúrák9. előadás49 Természetesen előfordulhat, hogy egy kifejezés egyik szintaktikus helyzetben megengedett, a másikban nem, pl.: movax,[BX]; [BX] megengedett mul[BX]; [BX] hibás, de mulWORD PTR [BX] ; megengedett Egy kifejezés akkor megengedett, ha az értéke fordítási időben meghatározható és az adott szintaktikus helyzetben alkalmazható, pl. az adott utasítás lehetséges címzési módja megengedi. A megengedett kifejezés értékeket az egyes utasítások ismertetése során megadtuk.
50
Máté: Architektúrák9. előadás50 A műveletek csökkenő precedencia szerinti sorrendben: 1. ( ) és [ ] (zárójelek) továbbá : míg a ( ) zárójel pár a kifejezés kiértékelésében csupán a műveletek sorrendjét befolyásolja, addig a [ ] az indirekció előírására is szolgál. Ha a [ ] -en belüli kifejezésre nem alkalmazható indirekció, akkor a ( ) -lel egyenértékű –LENGTH változó : a változó -hoz tartozó adat terület elemeinek száma –SIZE változó : a változó -hoz tartozó adat terület hossza byte-okban –WIDTH R/F : az R rekord vagy az F (rekord) mező szélessége bitekben –MASK F : az F (rekord) mező bitjein 1, másutt 0
51
Máté: Architektúrák9. előadás51 Pl.: vdw20 dup (?) recrecordx:3,y:4 tabledw10 dup (1,3 dup (?)) strdb”12345” esetén: movax,LENGTH v; ax 20 movax,LENGTH rec; ax 1 movax,LENGTH table; ax 10 ; a belső DUP ignorálva! movax,LENGTH str; ax 1 ; str egy elem
52
Máté: Architektúrák9. előadás52 vdw20 dup (?) recrecordx:3,y:4 tabledw10 dup (1,3 dup (?)) strdb”12345” esetén: movax,SIZE v; ax 40 movax,SIZE rec; ax 1 movax,SIZE table; ax 20 ; a belső DUP ignorálva movax,SIZE str; ax 1 ; str bájtos
53
Máté: Architektúrák9. előadás53 vdw20 dup (?) recrecordx:3,y:4 tabledw10 dup (1,3 dup (?)) strdb”12345” esetén: movax,WIDTH rec; ax 7 movax,WIDTH x; ax 3 movax,MASK x; ax 70H
54
Máté: Architektúrák9. előadás54 2.. (pont): struktúra mezőre hivatkozásnál használatos 3. : mező szélesség (rekord definícióban) és explicit szegmens megadás (segment override prefix). Az explicit szegmens megadás az automatikus szegmens regiszter helyett más szegmens regiszter használatát írja elő, pl.: movax, ES:[BX] ; ax (ES:BX) címen lévő szó Nem írható felül az automatikus szegmens regiszter az alábbi esetekben: –CS program memória címzésnél, –SS stack referens utasításokban ( PUSH, POP,... ), –ES string kezelő utasításban DI mellett, de az SI -hez tartozó DS átírható.
55
Máté: Architektúrák9. előadás55 4. –típus PTR cím : (típus átdefiniálás) ahol típus lehet BYTE, WORD, DWORD, QWORD, TBYTE, illetve NEAR, FAR (előre hivatkozás esetén fontos) és PROC. Pl.: MULBYTE PTR [BX]; a [BX] címet ; byte-osan kell kezelni –OFFSET kifejezés : a kifejezés OFFSET címe (a szegmens kezdetétől számított távolsága byte-okban) –SEG kifejezés : a kifejezés szegmens címe (abban az értelemben, ahogy a szegmens regiszterben szokásos tárolni, tehát valós üzemmódban a szegmens tényleges kezdőcímének 16 -oda)
56
Máté: Architektúrák9. előadás56 –TYPE változó : az elemek hossza byte-okban, ha változó, de TYPE string = 1, TYPE konstans = 0, TYPE NEAR címke = -1, TYPE FAR címke = -2 JMP(TYPE cím) PTR [BX] ; NEAR vagy FAR ugrás attól függően, hogy cím ; közeli vagy távoli címke –... THIS típus : a program szöveg adott pontján adott típusú szimbólum létrehozása
57
Máté: Architektúrák9. előadás57 Pl.: ADATBEQUTHIS BYTE ; BYTE típusú változó, helyfoglalás nélkül ADATWdw1234H ; ez az adat ADATB -vel byte-osan érhető el... moval,BYTE PTR ADATW; al 34H, helyes moval,ADATB; al 34H, helyes movah,ADATB+1; ah 12H, helyes Emlékeztetünk arra, hogy szavak tárolásakor az alacsonyabb helyértékű byte kerül az alacsonyabb címre!
58
Máté: Architektúrák9. előadás58 5. –LOW kifejezés : egy szó alsó (alacsonyabb helyértékű) byte-ja –HIGH kifejezés : egy szó felső (magasabb helyértékű) byte-ja Pl.: ADATWdw1234H moval,LOW ADATW; al 34H movah,HIGH ADATW; ah 12H 6. Előjelek: + : pozitív előjel – : negatív előjel
59
Máté: Architektúrák9. előadás59 7. Multiplikatív műveletek: – : szorzás –/ : osztás –MOD : (modulo) a legkisebb nem negatív maradék, pl.: moval,20 MOD 16; al 4 –kifejezés SHL lépés : kifejezés léptetése balra lépés bittel –kifejezés SHR lépés : kifejezés léptetése jobbra lépés bittel lépés is lehet kifejezés! A kifejezésben előforduló műveleti jelek ( SHL, SHR, és a később előforduló NOT, AND, OR, és XOR ) nem tévesztendők össze a velük azonos alakú műveleti kódokkal: az előbbiket a fordító program, az utóbbikat a futó program hajtja végre!
60
Máté: Architektúrák9. előadás60 8. Additív műveletek: –+ : összeadás –- : kivonás 9. Relációs operátorok (igaz=-1, hamis=0): általában feltételes fordítással kapcsolatban fordulnak elő –EQ : =// -1 EQ 0FFFFFFFFHigaz –NE : // -1 NE 0FFFFFFFFHhamis –LT : 33 bites argumentumok! –LE : 1 GT -1 igaz –GT : 1 GT 0FFFFFFFFHhamis –GE :
61
Máté: Architektúrák9. előadás61 10. NOT : bitenkénti negálás 11. AND : bitenkénti és művelet 12. Bitenkénti vagy és kizáró vagy művelet: –OR : bitenkénti vagy művelet –XOR : bitenkénti kizáró vagy művelet
62
Máté: Architektúrák9. előadás62 13. –SHORT : 8 bites IP relatív címzés kikényszerítése –.TYPE kifejezés : 0, ha kifejezés érvénytelen, különben: Bit sorszám Ha a bit = 0 Ha a bit = 1 0 Nem a programmal kapcsolatos A programmal kapcsolatos 1 Nem adattal kapcsolatosAdattal kapcsolatos 5 Nem definiáltDefiniált 7 Lokális v. PUBLICEXTERN
63
Máté: Architektúrák9. előadás63 Feltételes fordítás A fordító programok általában – így az assembler is – feltételes fordítási lehetőséget biztosít. Ez azt jelenti, hogy a program bizonyos részeit csak abban az esetben fordítja le, ha – a fordítóprogram számára ellenőrizhető – feltétel igaz illetve hamis. IFxxfeltétel...; lefordul, ha a feltétel igaz ELSE; el is maradhat...; lefordul, ha a feltétel hamis ENDIF
64
Máté: Architektúrák9. előadás64 IF kifejezés; igaz, ha ; kifejezés 0 IFEkifejezés; igaz, ha ; kifejezés=0 Pl.: IFdebug GT 20 calldebug1 ELSE calldebug2 ENDIF
65
Máté: Architektúrák9. előadás65 IF1; igaz a fordítás ; első menetében IF2; igaz a fordítás ; második menetében IFDEFSzimbólum; igaz, ha Szimbólum ; definiált IFNDEFSzimbólum; igaz, ha Szimbólum ; nem definiált Pl. Csak akkor definiáljuk buff -t, ha a hossza ismert: IFDEFbuff_len buffdbbuff_len dup (?) ENDIF
66
Máté: Architektúrák9. előadás66 IFB arg ; igaz, ha ; arg üres (blank) IFNB arg ; igaz, ha ; arg nem üres IFIDN arg1 , arg2 ; igaz, ha ; arg1 arg2 teljesül IFDIF arg1 , arg2 ; igaz, ha ; arg1 arg2 nem teljesül
67
Máté: Architektúrák9. előadás67 Feladatok Miért kitüntetett szint a gépi utasítások szintje (ISA)? Mikor jó egy gép ISA szintje? Mi a különbség a felhasználói (user) és a kernel mód között? Mit jelent az igazítás 4 bájtos szavak tárolásánál? Mi az igazítás előnye? Mit jelent a memória szemantika? Milyen hardver megoldásokat ismer a memória műveletek végrehajtási sorrendjére vonatkozóan? Mi a SYNC utasítás hatása? Miért van szükség a SYNC utasításra?
68
Máté: Architektúrák9. előadás68 Feladatok Mondjon olyan regisztert, amely a mikro utasítások szintjén és ISA szinten is látszik! Mondjon olyan regisztert, amely csak ISA szinten látszik! Mondjon olyan regisztert, amely csak kernel módban érhető el! Milyen utasítás típusokat ismer? Melyek a Pentium 4 processzor legfontosabb elődjei? Milyen üzemmódjai vannak a Pentium 4-nek? Milyen a Pentium 4 memória szervezése? Milyen regiszterei vannak a Pentium 4-nek? Mit jelent a Little endian tárolási mód?
69
Máté: Architektúrák9. előadás69 Feladatok Mit jelent a Load/store architektúra? Milyen az UltraSPARC III memória szervezése? Milyen regiszterei vannak az UltraSPARC III-nak? Mit tud az UltraSPARC III G0 regiszteréről? Mi a CWP (Current Window Pointer) szerepe? Hogy működik az UltraSPARC III regiszter ablak technikája? Hány regiszter készlete van a 8051-nek? Hol helyezkednek el a 8051 regiszterei? Mire jó a bit-címezhető memória? Írja le a 8051 RAM-jának a szerkezetét! Mire szolgál a 8051 IE, IP, TCON és TMOD regisztere?
70
Máté: Architektúrák9. előadás70 Feladatok Hány címes utasítások lehetségesek? Adjon mindegyikre példát! Milyen címzési módokat ismer? Részletezze ezeket! Mit jelent a fordított lengyel jelölés? Milyen előnyei vannak a postfix jelölésnek? Írja át postfix alakúra az alábbi formulákat! A+B, A+B+C, A+B*C, A*B+C. Írja át infix alakúra az alábbi postfix formulákat! AB+, AB–C/, AB*C+, AB*CD/E+–. Hogy működik Dijkstra algoritmusa? Hogy értékelhetők ki a postfix alakú formulák?
71
Máté: Architektúrák9. előadás71 Feladatok Mik az ISA szint fő tervezési szempontjai? Hogy viszonyulhat egymáshoz az utasítás és a memória cella hossza? Mit értünk műveleti kód kiterjesztésen? Mit nevezünk menekülő kódnak? Mi az ortogonalitási elv? Milyen utasítás formájú 3 címes gépet tervezne? Milyen utasítás formájú 2 címes gépet tervezne? Teljesül-e az ortogonalitási elv a Pentium 4-en? Milyen utasítás formái vannak a Pentium 4-nek? Mire szolgál a prefix bájt a Pentium 4-en? Mire szolgál a címzési mód bájt a Pentium 4-en? Mire szolgál a SIB bájt a Pentium 4-en?
72
Máté: Architektúrák9. előadás72 Feladatok Teljesül-e az ortogonalitási elv az UltraSPARC III -on? Milyen utasítás formái vannak az UltraSPARC III -nak? Mi a különbség az UltraSPARC III ADD, ADDC, ADDCC és ADDCCC utasításai között? Milyen formátumú LOAD utasításai vannak az UltraSPARC III -nak? Hogy adható meg 32 bites közvetlen adat az UltraSPARC III -on? Milyen formátumú CALL utasítása van az UltraSPARC III -nak?
73
Máté: Architektúrák9. előadás73 Feladatok Teljesül-e az ortogonalitási elv a 8051-en? Milyen utasítás formái vannak a 8051-nek? Milyen formátumú ugró utasításai vannak a 8051-nek? Hogy érhető el 256-nál magasabb memória cím a 8051-en?
74
Máté: Architektúrák9. előadás74 Feladatok Milyen utasítás típusokat ismer? Mondjon diadikus/monadikus utasításokat! Hogy néz ki a vég-/kezdőfeltételes ciklus? Mit értünk feltételes végrehajtáson? Mi a feltételes végrehajtás előnye? Mit értünk predikáción? Hogy küszöböli ki a feltételes végrehajtás és a predikáció a csővezeték elakadását? Jelent-e ez késleltetést a program futásában?
75
Máté: Architektúrák9. előadás75 Feladatok Mit értünk kifejezésen? Mit értünk kifejezés értékén? Mikor kerül meghatározásra a kifejezés értéke? Szerepelhet-e regiszter egy kifejezésben? Befolyásolhatja-e egy regiszter értéke egy kifejezés értékét? Mikor mondjuk, hogy egy kifejezés megengedett? Ha A és B szimbólum, akkor lehet-e helyes kifejezés A+B, A–B, A*B, A/B ? Milyen esetekben? Ha A és B változónév, akkor lehet-e helyes kifejezés A+B, A–B, A*B, A/B ? Lehet-e helyes kifejezés A+B–C, ha A+B nem helyes kifejezés?
76
Máté: Architektúrák9. előadás76 Feladatok adw5 dup (1,2) brecordx:3,y:4,z:5 cdw10 dup (1,2 dup (3)) ddb”szoveg” Alkalmazza a, b, c, d, x, y,és z -re a LENGTH, SIZE, WIDTH, MASK, TYPE és a NOT MASK, operátort (ha lehet)! Milyen eredményeket kap? Melyik címet jelenti az ES:5[BX+DI] hivatkozás? Miért hibás a MULES:[DI] utasítás? Hogy javítható ki?
77
Máté: Architektúrák9. előadás77 Feladatok adb12H bdb 23H cdw? esetén, mi lesz AX, BL és BH tartalma a movAX, word ptr a movc, AX movBL, low c movBH, byte ptr c utasítások után?
78
Máté: Architektúrák9. előadás78 Feladatok a= 7 b= 2 cequa shl b movcx, not c mod 8 or b esetén, mi lesz cx tartalma? Mit értünk feltételes fordításon? Milyen feltételes fordítási szerkezeteket ismer? Mikor értékelődik ki a feltételes fordítás feltétele? Mire szolgál a feltételes fordítás? Milyen feltételes fordítási utasításokat ismer? Mire szolgál az IF1 feltételes fordítási utasítás? Mire szolgál az IFB feltételes fordítási utasítás?
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.