Máté: Architektúrák10. előadás1 Általában a mikroarchitektúra nem tartozik hozzá. ISA szint ISA szint végrehajtása microprogram vagy hardver által Hardver FORTRAN program C program Fordítás hardver szoftver Utasításrendszer-architektúra szintje (ISA) Amit a fordító program készítőjének tudnia kell: memóriamodell, regiszterek, adattípusok, utasítások. A hardver és szoftver között helyezkedik el, 5.1 ábra.
Máté: Architektúrák10. előadás2 Utasítások szintje (ISA) A jóság két kritériuma: hatékony hardver megvalósítási lehetőség, jó médium a fordítóknak. Továbbfejlesztéseknél ügyelni kell a kompatibilitásra! Nyilvános definíció: van: SPARC, JVM (tervezők); nincs: Pentium 4 (gyártók). kernelmód (user) felhasználói mód
Máté: Architektúrák10. előadás3 Memória modellek ASCII kód 7 bit + paritás → Byte (bájt) Szó: 4 vagy 8 byte. Igazítás (alignment), 5.2. ábra: hatékonyabb, de probléma a kompatibilitás (a Pentium 4-nek két ciklusra is szüksége lehet egy szó beolvasásához). cím8 bájt bájtos szó 8 határra igazítva cím8 bájt Nem igazított 8 bájtos szó a 12-es címtől Néha (pl. 8051) külön memória az adatoknak és az utasításoknak (nem ugyanaz, mint az osztott gyorsítótár!).
Máté: Architektúrák10. előadás4 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.
Máté: Architektúrák10. előadás5 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,...
Máté: Architektúrák10. előadás6 Utasításkészlet LOAD, STORE, MOVE, aritmetikai, logikai, feltétlen, feltételes elágazó utasítások, …
Máté: Architektúrák10. előadás7 Pentium 4 Nagyon sok előd (kompatibilitás!), a fontosabbak: 4004: 4 bites, 8086, 8088: 16 bites, 8 bites adat sín : 24 bites (nem lineáris) címtartomány (16 K darab 64 KB-os szegmens) : 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.
Máté: Architektúrák10. előadás8 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 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.
Máté: Architektúrák10. előadás9 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: Little endian tárolási mód: az alacsonyabb címen van az alacsonyabb helyértékű bájt.
Máté: Architektúrák10. előadás10 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 Accumulator Base index Count Data
Máté: Architektúrák10. előadás11 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).
Máté: Architektúrák10. előadás12 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).
Máté: Architektúrák10. előadás13 Á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.
Máté: Architektúrák10. előadás14 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
Máté: Architektúrák10. előadás15 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.
Máté: Architektúrák10. előadás ábra. A 8051 memória szervezése, fő regiszterei Külön címtartományú program és adat memória. CARSO PPSW EAE2ESE1X1E0X0IE E2ESE1X1E0X0IP O1R1O0R0E1X1E0X0TCON 1. időzítő2. időzítőTMOD ← 8 bit → 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).
Máté: Architektúrák10. előadás17 8 regiszter: R0, …, R7. A regiszterek a memóriában vannak. 4 regiszter készlet, de egyszerre csak egy használható. PSW RS mezeje mondja meg, hogy melyik az aktuális. Bit-címezhető memória ( bájt): címzésük: Bit utasítások: beállítás, törlés, ÉS, VAGY, tesztelés. PSW: Carry, Auxiliary carry, RegisterS, Overflow, Parity 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
Máté: Architektúrák10. előadás18 IE (Interrupt Enable): EA=1: megszakítás engedélyezve, 0: tiltva 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 X1-2=1: külső eszköz megszakítás engedélyezve, 0: tiltva Az engedélyezett számlálók egyszerre futhatnak, és ezek megszakítást válthatnak ki. CARSO PPSW EAE2ESE1X1E0X0IE E2ESE1X1E0X0IP O1R1O0R0E1X1E0X0TCON 1. időzítő2. időzítőTMOD ← 8 bit → IP (Interrupt Priority): 0 (alacsony), 1 (magas).
Máté: Architektúrák10. előadás19 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 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 →
Máté: Architektúrák10. előadás20 Az eddig említett és még néhány speciális regiszter (ACC, B/K portok, …) a címtartományban vannak. Pl. ACC a 240-en. A 8052 valódi memóriát tartalmaz a tartományban, a speciális regiszterek átfednek a memóriával. – Direkt címzéssel a speciális regisztereket, – Indirekt címzéssel a RAM-ot érhetjük el.
Máté: Architektúrák10. előadás21 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.
Máté: Architektúrák10. előadás22 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.
Máté: Architektúrák10. előadás23 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ó
Máté: Architektúrák10. előadás24 Minden változó és konstansok 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ó
Máté: Architektúrák10. előadás25 ▼ A*(B+C) A▼ *(B+C) A▼ (B+C) * A▼ B+C) ( * AB▼ +C) ( * A váltó előtti kocsi +-*/() ? + - * / (? A verem teteje
Máté: Architektúrák10. előadás26 A váltó előtti kocsi +-*/() ? + - * / (? A verem teteje AB▼ C) + ( * ABC ▼) + ( * ABC+ ▼) ( * ABC+ ▼ * ABC+* ▼
Máté: Architektúrák10. előadás27 Fordított lengyel jelölésű formulák kiértékelése Pl. (5.24. ábra): (8 + 2 * 5)/(1 + 3 * 2 – 4) // infix * * + 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!).
Máté: Architektúrák10. előadás28 LépésMaradék formulaUtasításVerem * * /BIPUSH * * /BIPUSH 28, 2 35 * * /BIPUSH 58, 2, 5 4* * /IMUL8, * /IADD * /BIPUSH 118, * /BIPUSH 318, 1, 3 82 * /BIPUSH 218, 1, 3, 2 9* /IMUL18, 1, /IADD18, /BIPUSH 418, 7, /ISUB18, 3 13/IDIV6 (8 + 2 * 5)/(1 + 3 * 2 – 4) // infix
Máté: Architektúrák11. előadás29 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ő. …
Máté: Architektúrák11. előadás30 Utasításformák, utasításhossz ( á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
Máté: Architektúrák10. előadás31 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) 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.
Máté: Architektúrák10. előadás32 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 xxxxyyyyzzzz 1101xxxxyyyyzzzz 1110xxxxyyyyzzzz 16 bit 8 bites műveleti kód yyyyzzzz 14 db 2 címes utasítás yyyyzzzz yyyyzzzz yyyyzzzz yyyyzzzz yyyyzzzz 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 és is menekülő kód.
Máté: Architektúrák10. előadás33 A műveleti kód kiterjesztése 16 bit 12 bites műveleti kód zzzz 31 db 1 címes utasítás zzzz zzzz zzzz zzzz zzzz zzzz zzzz zzzz 16 bit 16 bites műveleti kód db 0 címes utasítás is menekülő kód.
Máté: Architektúrák10. előadás34 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): Mű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.
Máté: Architektúrák10. előadás35 Két címes elképzelés (5.26. ábra) Műv.kódmódregeltolásmódregeltolás Feltételes 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.
Máté: Architektúrák10. előadás36 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) prefixműv.kódmódSIBeltolá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
Máté: Architektúrák10. előadás37 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/M M[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
Máté: Architektúrák10. előadás38 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
Máté: Architektúrák10. előadás39 UltraSPARC utasításformái (5.15. ábra) 32 bites egyszerű utasítások. Form a 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.
Máté: Architektúrák10. előadás40 32 bites közvetlen adat megadása: SETHI – megad 22 bitet, a következő utasítás a maradék 10 bitet. Form m.k.célm.k.közvetlen konstansSETHI Form (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áshoz 3 bitet elcsíptek. Az A bit az eltolás rést akadályozza meg bizonyos feltételek esetén. 3 Form m.k. PC relatív cím CALL Eljárás hívás: 30 bites PC -relatív (szó) cím
Máté: Architektúrák10. előadás41 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, bázis-index A többi utasítás általában 5 bites regiszter címzést használ
Máté: Architektúrák10. előadás42 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 hívás 5.Ugrás, szubrutin hívás 6.Pl. közvetlen operandus memóriába töltése, …
Máté: Architektúrák10. előadás43 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
Máté: Architektúrák10. előadás44 Összefoglaló: á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).
Máté: Architektúrák10. előadás45 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 ( ábra): - programozott I/O: tevékeny várakozás, ábra - megszakítás vezérelt I/O - DMA I/O (5.33. ábra): cikluslopás
Máté: Architektúrák10. előadás46 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
Máté: Architektúrák10. előadás47 Feltételes végrehajtás ( á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.
Máté: Architektúrák10. előadás48 Predikáció, IA – 64 ( á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
Máté: Architektúrák10. előadás49 A Pentium 4 utasításai Egész utasítások legnagyobb része: ábra. Egyéb utasítások (pl. lebegőpontosak). Az UltraSPARC III utasításai Összes egész utasítás: ábra. A utasításnévben CC : beállítja a feltételkódot. 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
Máté: Architektúrák10. előadás50 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.
Máté: Architektúrák10. előadás51 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.
Máté: Architektúrák10. előadás52 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.
Máté: Architektúrák10. előadás53 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
Máté: Architektúrák10. előadás54 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
Máté: Architektúrák10. előadás55 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
Máté: Architektúrák10. előadás56 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
Máté: Architektúrák10. előadás (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ó.
Máté: Architektúrák10. előadás58 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)
Máté: Architektúrák10. előadás59 –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 –... THIS típus : a program szöveg adott pontján adott típusú szimbólum létrehozása
Máté: Architektúrák10. előadás60 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!
Máté: Architektúrák10. előadás61 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
Máté: Architektúrák8. előadás62 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!
Máté: Architektúrák10. előadás63 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?
Máté: Architektúrák10. előadás64 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?
Máté: Architektúrák10. előadás65 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?
Máté: Architektúrák10. előadás66 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?
Máté: Architektúrák10. előadás67 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?
Máté: Architektúrák10. előadás68 Feladatok Teljesül-e az ortogonalitási elv az UltraSPARC III -on? Milyen utasítás formái vannak az UltraSPARC III -nak? 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? Teljesül-e az ortogonalitási elv a en? Milyen utasítás formái vannak a nek? Milyen formátumú ugró utasításai vannak a nek? Hogy érhető el 256-nál magasabb memória cím a en?
Máté: Architektúrák10. előadás69 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?
Máté: Architektúrák10. előadás70 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?
Máté: Architektúrák10. előadás71 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?
Máté: Architektúrák10. előadás72 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?