Műveletek. Dr. Seebauer Márta. Budapesti Műszaki Főiskola Regionális Oktatási és Innovációs Központ Székesfehérvár

Hasonló dokumentumok
Operandus típusok Bevezetés: Az utasítás-feldolgozás menete

Digitális rendszerek. Utasításarchitektúra szintje

Bevezetés az informatikába

1. Az utasítás beolvasása a processzorba

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Számítógépek felépítése, alapfogalmak

Számítógépek felépítése

találhatók. A memória-szervezési modell mondja meg azt, hogy miként

Mikroprocesszor CPU. C Central Központi. P Processing Számító. U Unit Egység

Máté: Számítógép architektúrák

Balaton Marcell Balázs. Assembly jegyzet. Az Assembly egy alacsony szintű nyelv, mely a gépi kódú programozás egyszerűsítésére született.

Járműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás

A mikroprocesszor egy RISC felépítésű (LOAD/STORE), Neumann architektúrájú 32 bites soft processzor, amelyet FPGA val valósítunk meg.

SzA19. Az elágazások vizsgálata

Máté: Számítógép architektúrák

Assembly programozás levelező tagozat

Központi vezérlőegység

Számítógép architektúrák

A 32 bites x86-os architektúra regiszterei

Számítógépek felépítése, alapfogalmak

A Számítógépek felépítése, mőködési módjai

Összeadás BCD számokkal

Adatelérés és memóriakezelés

Egyszerű RISC CPU tervezése

Máté: Számítógép architektúrák

Máté: Assembly programozás

Adatok ábrázolása, adattípusok

Számítógép architektúra

Utasításszintű architektúra Adattér

Architektúra, megszakítási rendszerek

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1

Mutatók és mutató-aritmetika C-ben március 19.

Aritmetikai utasítások I.

A számítógép alapfelépítése

Számítógép Architektúrák I-II-III.

VI. SZOFTVERES PROGRAMOZÁSÚ VLSI ÁRAMKÖRÖK

Assembly. Iványi Péter

Paraméter átadás regisztereken keresztül

Informatika 1 2. el adás: Absztrakt számítógépek

Máté: Számítógép architektúrák

Máté: Számítógép architektúrák

Programozás alapjai. 10. előadás

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Máté: Számítógép architektúrák

Számítógép Architektúrák (MIKNB113A)

Máté: Számítógép architektúrák

Az integrált áramkörök kimenetének kialakítása

Bevezetés a számítástechnikába

7. Fejezet A processzor és a memória

Számítógép Architektúrák

VEZÉRLŐEGYSÉGEK. Tartalom

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

Máté: Számítógép architektúrák

A mikroprocesszor felépítése és működése

A MiniRISC processzor

Processzor (CPU - Central Processing Unit)

INTEL 8085 gépi utasításkészlete

1. ábra: Perifériára való írás idődiagramja

Számítógép architektúrák

Számítógépek, számítógép rendszerek

2017/12/16 21:33 1/7 Hardver alapok

Máté: Számítógép architektúrák

Utasításfajták Memóriacímzés Architektúrák Végrehajtás Esettanulmányok. 2. előadás. Kitlei Róbert november 28.

8. Fejezet Processzor (CPU) és memória: tervezés, implementáció, modern megoldások

Informatika érettségi vizsga

Assembly utasítások listája

Bevezetés a számítástechnikába

Az interrupt Benesóczky Zoltán 2004

2016/08/31 02:45 1/6 Hardver alapok

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása

Intel x86 utasításkészlet

Mi az assembly? Gyakorlatias assembly bevezető. Sokféle assembly van... Mit fogunk mi használni? A NASM fordítóprogramja. Assembly programok fordítása

A 6502 mikroprocesszor

Archi2 Gyak. (Processzorok Utasításszintű Kezelése) 2014 ősz

Bevezetés az informatikába

8. Fejezet Processzor (CPU) és memória: tervezés, implementáció, modern megoldások

Digitális technika VIMIAA02 9. hét

Máté: Számítógép architektúrák

Gábor Dénes Főiskola Győr. Mikroszámítógépek. Előadás vázlat. 2004/2005 tanév 4. szemeszter. Készítette: Markó Imre 2006

Digitális technika VIMIAA02 9. hét Fehér Béla BME MIT

Számítógép felépítése

Assembly. Iványi Péter

Processzorok Utasításszintű Kezelése tavasz

Máté: Számítógép architektúrák

Mikrokontrollerek. Tihanyi Attila május 8

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

OPERÁCIÓS RENDSZEREK. Elmélet

A Számítógépek hardver elemei

Mintavételes szabályozás mikrovezérlő segítségével

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

Assembly Utasítások, programok. Iványi Péter

Jelfeldolgozás a közlekedésben

Adatszerkezetek 1. Dr. Iványi Péter

2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés

Egyszerű számítógép működése

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

Számítógép Architektúrák (MIKNB113A)

Átírás:

Budapesti Műszaki Főiskola Regionális Oktatási és Innovációs Központ Székesfehérvár Műveletek Dr. Seebauer Márta főiskolai tanár seebauer.marta@roik.bmf.hu

Az adatmanipulációs fa A adatmanipulációs fa következő szintje minden művelet esetén megállapítja, hogy mely utasítás-típusok megengedettek mely operandus-típus választható. A számítógépet a program működteti. A processzor csak a gépi kódú programokat képes értelmezni. Utasítás - a számítógép által végrehajtható, alapvető feladatok ellátására szolgáló művelet leírása. módosító rész Data types (T) Adattípusok Operations (O) Mûveletek Operand-types (R) Utasítás-típusok Addressing modes(a) Címzési módok DMT FP4.. + - * /.. rrr rmr mmm.. ((R)+D) ((PC)+D) ((RI)+D) ((PC)+D).. Opkód Címrész Codes (C) Kódok IOOIIOO...... műveleti kód operandusok helye A változó, gyakran igen hosszú utasítások a CISC processzorokra jellemzőek. A RISC processzorok utasításai rögzített hosszúságúak és rövidek.

Megszakítások és kivételkezelés A programvégrehajtás időszakosan felfüggeszthető megszakítások (interrupt) esetén, a processzortól független külső esemény idézi elő DMA megszakításkérés BIOS rutin meghívása kivétel (exeption) esetén, processzoron belül fellépő esemény okozza paritáshiba osztási hiba túlcsordulás Megszakítás? nem igen Lehívási ciklus (fetch) Megszakítási műveletsorozat Végrehajtási ciklus (execution)

Programvégrehajtás folyamata utasítás fetch a következő 6 cím számítása dekódolás 1 2 3 5 művelet végrehajtás (execution) 4 az operandus effektív címének meghatározása operandus fetch MAR MDR IR PC DEC Memory Address Register Memory Data Register Instruction Register Program Register Decoder 1. A soron következő utasítás beolvasása a memóriából az utasításregiszterbe. A programszámláló beállítása a következő utasítás címére. 2. A beolvasott utasítás dekódolása, típusának meghatározása. 3. Ha az utasítás memóriabeli szót használ, a szó helyének a megállapítása. 4. Ha szükséges, a szó beolvasása egy regiszterbe. 5. Az utasítás végrehajtása. Az eredmény visszaírása a kijelölt helyre. 6. Vezérlésátadó utasítás esetén a következő cím kiszámítása RAM Operatív tár PC MAR IR MDR CPU Központi egység DEC Általános célú regiszterek AC. CU Vezérlő egység AC ALU Számolómű OUT IN

Utasítás-végrehajtás lépései Utasításlehívás (fetch) PC tartalmazza a soron következő utasítás címét PC MAR (MAR) MDR MDR IR PC+1 PC Feltétlen vezérlésátadás, JMP IR DEC DEC címrész PC Utasításfeldolgozás LOAD IR DEC DEC címrész MAR (MAR) MDR MDR AC Műveletvégzés, pl. ADD IR DEC DEC MAR (MAR) MDR AC+MDR AC STORE IR DEC DEC címrész MAR AC MDR MDR (MAR)

Utasítástípusok Utasítások Adatmozgató Műveleti Vezérlésátadó Speciális

Adatmozgató utasítások Adatmozgató Processzor-memória Processzor-veremtár Processzor-periféria I/O Töltő LOAD Betöltés a sztekbe PUSH Programozott átvitel Tároló STORE Kivétel a sztekből POP Megszakításos átvitel Mozgató MOVE Közvetlen memória-elérés DMA

I/O műveletek Ha a műveleti kód beviteli vagy kiviteli műveletet határoz meg, akkor az utasítás lehívását követő memória-hozzáférés elmarad. Az elemi műveletek: Beviteli utasítás IR DEC a művelet dekódolása DEC MAR a címrész átvitele IN AC a bemeneti regiszter tartalmának átvitele az akkumulátorba Visszatérés az utasítás-lehívó ciklushoz. Kiviteli utasítás IR DEC a művelet dekódolása DEC MAR a címrész átvitele AC OUT az akkumulátor tartalmának átvitele a kimeneti regiszterbe Visszatérés az utasítás-lehívó ciklushoz.

Műveletvégző utasítások Művelet Aritmetikai Logikai Léptető/forgató Bit Karakterlánc String Összeadás ADD AND Léptetés SHIFT Kivonás SUBTRACT OR Forgatás ROTATE Szorzás MULTIPLY NOT Osztás DIVIDE EXLUSIVE-OR Abszolút érték ABSOLUTE EQUIVALENCE Előjelváltás NEGATE 1-gyel növelni INCREMENT 1-gyel csökkenteni DECREMENT

Vezérlésátadó utasítások Vezérlő Szubrutin hívó Visszatérés Ciklus Ugrások CALL RETURN Feltételes Feltétel nélküli JUMP JUMP CONDITIONAL

Feltételes ugrás utasítás A feltételes ugrások csak akkor hajtódnak végre, ha a megadott feltétel igaz. Meg kell vizsgálni a megadott feltételt, pl. az A regiszter tartalmát, ha az nulla, akkor az utasítás címrésze átkerül a PC regiszterbe, tehát ugrást hajt végre. ha az A regiszter tartalma nem nulla, akkor a soron következõ utasításra tér át. Az ugrás lehet feltétel bit értékétől függő is. Ezen ugrások előtt be kell állítani a feltételbiteket. Ezt vagy aritmetikai, de szívesebben összehasonlító utasítással állítják be. Példa SUB op1,op2 helyett inkább: CMP op1,op2

Szubrutinok CPU PC CALL PC régi STACK (verem) Return hatására a veremből a PC régi bekerül a PC-be és a CALL utáni utasításra adja át a vezérlést RETURN 1 2 3 stack-pointer Az IBM PC-kben a stack-szegmens verem 64 Kbájt, efölött túlcsordulás következik be. 3 2 1

Speciális vezérlő utasítások Speciális Megszakítást engedélyező/tiltó Processzor működését leállító Flag-manipuláló Koprocesszor vezérlő SET CONTROL VARIABLES Program leállítása HALT Feltétel ellenőrzése és a flag-ek beállítása TEST Program végrehajtásának felfüggesztése egy feltétel teljesüléséig WAIT Operandusok összehasonlítása és a flag-ek beállítása COMPARE Üres utasítás NOP Flag-ek törlése CLEAR

Utasításszerkezet négycímes háromcímes kétcímes egycímes nulla címes Opkód műveleti kód módosító rész Címrész operandusok helye

Négycímes utasítás Opkód 1. operandus címe 2. operandus címe Eredmény címe Következő utasítás címe Ez már csak történeti kategória: az első gépek tervezése során a negyedik cím a következő utasítás címét adta meg. Így működött például az EDVAC. Ritka kivételtől eltekintve az utasításokat lineárisan is lehet tárolni a memóriában, tehát úgy, hogy a következő utasítás a következő címen szerepeljen. A vezérlést úgy lehet megtervezni, hogy az n-ik cím alatt található utasítás végrehajtása után az (n+1)-edik című utasításra térjen át, kivételt képez a vezérlésátadó utasítás, amelyik megadja a következő utasítás címét. A negyedik operandus helyett vezették be a PC-regisztert Neumann a Felsőfokú Tanulmányok Intézetének gépét, az IAS-t már egycímesre tervezte. Hátránya hosszú utasítások - memória-pazarló adatrögzítési hibák veszélye karbantartás, azaz új utasítások beszúrásának nehézkessége Opkód PC bevezetése Cim Köv. utasítás

Háromcímes utasítás Opkód 1. operandus címe 2. operandus címe Eredmény címe Az AC bevezetése, vagy az eredmény a 2. operandus helyére kerül Ez egy explicit deklarálása annak, hova kerüljön az eredmény. A háromcímes utasítástípussal szembeni fő Neumann-i érv, hogy szinte soha nincs szükség arra, hogy két, a memóriában elhelyezkedő számot összeadjunk - vagy valamilyen más műveletet végezzünk közöttük, majd az eredményt visszaírjuk a memóriába. Általában az a helyzet, hogy a gép által kiszámított eredmény az aritmetikai egységben marad, mert további műveletet kell rajta végezni. Még ennek a műveletnek az eredménye is gyakran az aritmetikai egységben marad további műveletek végrehajtása céljából. További hátránya: hosszú az utasítás, sok memóriát igényel Előnye: párhuzamosítási lehetőség: RISC

Kétcímes utasítás Opkód 1. operandus címe 2. operandus és az eredmény címe AC bevezetése szükséges Az célrekesz előző tartalma elvész. Az eredmény helyének implicit deklarálása. Ilyen típusok: IBM 360/370 (rendelkeznek egy és háromcímű utasításokkal is) Előnye: rövidebb Hátránya: azt az operandust, ahova az eredmény kerül felülírja. Szükség esetén gondoskodni kell a kimentéséről

Egycímes utasítás Opkód Az operandus címe Veremtároló bevezetése A művelet mindig a megcímzett tároló hely és az akkumulátor között kerül végrehajtásra. Egy aritmetikai művelet (pl. összeadás) elvégzéséhez három utasításra van szükség. 1. egyik operandust át kell vinni az egyik címről az aritmetika egységbe (akkumulátorba); 2. el kell hozni a másik operandust egy másik címrõl és hozzáadni ahhoz, amelyik már az aritmetikai egységben (akkumulátorban) volt; 3. az eredményt egy harmadik címen el kellett tárolni. A korai gépek közül ilyen volt az EDSAC, Ferranti Mark 1, Whirlwind I, Univac I, IBM 701, IBM 704. Ilyen még a hatvanas évekből pl. IBM 1130, 1800, System/7, Siemens 300. Előnye: rövid, egyszerű utasítás - memória-takarékos, RISC gépek Hátránya: több utasítással valósítható csak meg egy olyan művelet, amely kétcímesnél eggyel is megoldható

Nulla címes utasítás Opkód A műveleti kód után nem áll operatív tár cím, ezért veremtároló használatára van szükség. Egy operandust implicit operandusnak nevezünk, ha az utasítás maga egyértelműen meghatározza. A programozónak az utasítással kapcsolatosan nem kell specifikálnia semmit. Előnye: rövid utasítások, hiszen nincsen címrész Hátránya: igen speciálisak, tehát felduzzaszthatják az utasítás-készletet Például NOP (no operation) CLEARD (a D flag törlése: az implicit operandus a D flag) PUSH, POP CALL, RET (a veremtároló tartalma ezen utasítások implicit operandusa)

Művelet LOAD A MULTIPLY B STORE T LOAD C MULTIPLY C ADD T STORE X Egycímes gép Comment A betöltése AC-be AC ACxB AC tartalmának eltárolása T címre C betöltése AC-be AC ACxC AC AC+T AC tartalmának eltárolása T címre Példa X=AxB+CxC Háromcímes gép Művelet Comment MULTIPLY T,A,B T AxB MULTIPLY X,C,C X CxC ADD X,X,T X X+T Nullacímes gép Kétcímes gép Művelet Comment MOVE T,A T A MULTIPLY T,B T TxB MOVE X,C X C MULTIPLY X, C X XxC ADD X,T X X+T Művelet PUSH A PUSH B MULTIPLY PUSH C PUSH C MULTIPLY ADD POP X Comment A betöltése a stack-be B betöltése a stack-be A és B kivétele a stack-ből és AxB betöltése a stack-be C betöltése a stack-be C ismételt betöltése a stack-be C és C kivétele a stack-ből és CxC betöltése a stack-be CxC és AxB kivétele a stackből és összegük betöltése a stack-be Stack tetejének eltárolása X címre

Processzorok utasításszerkezete Jelenleg CISC processzorok többsége egy-, illetve a kétcímes utasítástípust használ. A RISC architektúrák - mivel regiszter-architektúrák - ezért előnyben részesítik a három címes formátumot, hogy kiküszöböljék a rendeltetési címre vonatkozó korlátozásokat. Ortogonális utasításkészlet egyértelmű utasításkészlet, az egyes részek feldolgozása mindig ugyanúgy történik. A címek kidolgozásának módja minden utasításnál azonos, nem függ a műveleti kódtól.

Operandus típusok Természetesen az ideális megoldás a felhasználó szempontjából az lenne, ha az operandusként tetszőleges adatteret megadhatna. Általános esetben a következő lehetőségek állnak rendelkezésre, mint lehetséges operandus helyek: akkumulátor, gyors, de csak egy van belőle, ami szűk keresztmetszetet okoz az operatív tár tág lehetőségek, hiszen hatalmas, de nagyon lassú az általános célú regiszterkészlet bármelyike, gyors, de korlátozott a száma, mert drága a verem-tároló, gyors, csak a tetejét látjuk, szűk keresztmetszet literálok vagy immediate, gyors, hiszen az utasításban helyezkedik el, merev, csak a programmódosítással változtatható A továbbiakban meg kell határoznunk az operandus típusát. Az operandusokat akkor tartjuk ugyanazon típusúnak, ha ugyanazon adattérből vettük őket, vagy ugyanabba az adattérbe tesszük. Tehát a lehetséges operandusok halmaza az akkumulátor operandus az operatív tár operandus regiszter operandus verem-tároló operandus immediate operandus.

Utasítástípusok a tervezési térben 3-address instruction type for dyadic operations specification specification specification of op d of op s1 of ops2 a m r s i a m r s i a m r s i A 3-címes diadikus műveletek lehetséges kombinációit kifejezhetjük a következőképpen is: { a, m, r, s} x { a, m, r, s, i} x { a, m, r, s, i} Tehát az absztrakt architektúrának kell specifikálnia - minden művelet vonatkozásában, hogy mely utasítás típusok lehetségesek és - minden operandus vonatkozásában, hogy mely operandus típusok lehetségesek. Felhasználói szemmel nézve az lenne az ideális, ha valamennyi lehetséges változat biztosított lenne. Viszont ez az általánosítás sem a helyfoglalás (túl nagy kódteret igényelne), sem pedig a hatékonyság szempontjából nem előnyös.

Architektúrák osztályozása az operandus típusok szerint Architektúra Szabályos Vegyes IBM 360/370, Intel Akkumulátor Memória Regiszter Stack Akku-regiszter Akku-memória 2 címes 3 címes 2 címes 3 címes ara aar ama aam m 1 m 1 m 2 m 2 m 1 m 2 m 3 m 1 m 2 r 1 r 1 r 2 r 2 r 1 r 2 r 3 r 1 r 2

Szabályos architektúrák Van néhány architekturális stílus, amely figyelmet érdemel, ezeket szabályos architektúráknak nevezzük. Bizonyos architektúrák ugyanazt az operandus típust biztosítják valamennyi adatmanipuláció esetén (rrr vagy sss), kivéve természetesen a LOAD és a STORE utasítást. A szabályos architektúrákat széles körben használják. A támogatott utasítás-típusnak megfelelően külön nevük van, mint például a Regiszter, vagy más néven LOAD/STORE, és a Stack architektúrák. architecture type accumulator-based architecture register-architecture (load-store-architecture) memory-architecture stack-architecture instruction type of the data-manipulation instructions aam, ama r r r mmm s s s 2-address format (RT/ PC) 3-address format (SPARC, 88000) 2-address format (TMS9900) 3-address format (B5000, HP 3000)

Címzési módszerek Egy processzor az utasításkészlete állhat fix vagy változó hosszúságú utasításokból. Az utasítás bitjeinek nagyobb részét nem a műveleti kód, hanem az operandusok címe foglalja el. Pl. A műveleti kód számára 256 utasításból álló utasításkészlet esetén 8 bit elegendő, de ha a memóriacímek 32 bitesek, egy három címes utasításhoz elvileg 104 bitre lenne szükség. a többször használt adatot regiszterbe töltjük, így egyetlen LOAD utasítással a memóriából áttölthető. A regiszterek használata kettős előnnyel jár: rövidebben címezhetőek és lényegesen gyorsabbak az operandus specifikációjának csökkentése 2, 1 vagy 0 címes utasítások használata relatív címek alkalmazása. Előny: abszolút címzésnél a címet a fordításkor már ismerni kell. Opkód Opkód 1. cím Opkód Opkód 1. cím 2. cím 1. cím 2. cím 3. cím

Közvetlen címzés Az operandust közvetlenül az utasításban adjuk meg. Hátránya csak konstans érték adható meg korlátozott a felhasználható bitek száma Pl. MOV R1 4

Direkt címzés A memóriabeli operandus megadása a teljes címével. Az utasítás mindenkori végrehajtása ugyanazt a memóriamezőt érinti, tehát a változó értéke módosulhat, de a helye nem. Jellemzően olyan globális változók esetében használják, amelyeknek a címe fordításkor ismert.

Regisztercímzés Amíg a direkt címzés a memóriahelyet címez, addig a regisztercímzés a regiszter címére mutat. A fordítóprogramok elemzik a forráskódot, és a gyakran használt változókat regiszterekben helyezik el. Gyakran használt címzési mód. A LOAD/STORE architektúrák kizárólag ezt a címzési módot alkalmazzák.

Regiszter-indirekt címzés A specifikált operandus címét egy regiszter tartalmazza, amelynek a címét definiáljuk az utasításban. Ezt a címet mutatónak (pointernek) hívjuk. Előnye nem kell a memóriacímet az utasításban tárolni a cím értéke a program végrehajtása során változhat Példa A egydimenziós 1024 elemű tömb elemei összegének kiszámítása. Az elemek 4 bájtos egész számok #0 konstans 0 #A Az A tömb memóriacíme regisztercímzés LOOP: közvetlen címzés MOV R1, #0 MOV R2, #A MOV R3, #A+4096 ADD R1,(R2) ADD R2, #4 CMP R2, R3 BLT LOOP A ciklusmag utasításai nem tartalmaznak memóriacímet regiszter-indirekt címzés

Indexcímzés A hivatkozott memória címét egy regiszter tartalmának és egy konstans értéknek az összege határozza meg. Ezt eltolásnak (offset) nevezzük, amely az utasításban memóriacím hosszúságú mezőt foglal. MOV R4, A(R2) Példa Adott A és B 1024 elemű egydimenziós tömbök. Keressük, létezik-e legalább egy olyan A i /B i pár, amelynek egyike sem 0. Ehhez kiszámítjuk páronként A AND B logikai szorzatot, amelyeknek képezzük OR művelettel az akkumulált összegét. MOV R4 R2 12430 A(R2) LOOP: MOV R1, #0 MOV R2, #0 MOV R3, #4096 MOV R4, A(R2) AND R4, B(R2) OR R1, R4 ADD R2, #4 CMP R2, R3 BLT LOOP

Bázisindex címzési mód A hivatkozott memóriacím két regiszter tartalmának összegéből és egy esetleges eltolásból összegéből áll. Az egyik regiszter a bázis, a másik az index. Ezt a címzési módot alkalmazó gépek a gyakorlatban 8 és 16 bites eltolást biztosítanak. Példa LOOP: MOV R1, #0 MOV R2, #0 MOV R3, #4096 MOV R5, #A MOV R6, #B MOV R4, (R2+R5) AND R4, (R2+R6) OR R1, R4 ADD R2, #4 CMP R2, R3 BLT LOOP

Veremcímzési mód Fordított lengyel jelölés A változók sorrendje az infix és a prefix jelölésben megegyezik, a műveleti jelek sorrendje azonban nem azonos. A fordított lengyel jelölésben a műveletek sorrendje megegyezik a kifejezés kiértékelésekor azok végrehajtási sorrendjével.

Címzési módok elágazó utasításokban Címekre nemcsak az adatokon végzett műveleteknél van szükség. Az elágazó vagy eljáráshívó utasítások szintén igényelnek olyan címzési módot, amellyel az ugrási cím megadható. direkt címzés a célcímet teljes egészében közvetlenül az utasításban adjuk meg regiszter-indirekt címzés az ugrási címet kiszámítjuk, és egy regiszterben tároljuk, amely címére vonatkozva hajtjuk végre az ugrást. Hatékony módszer, de hiba esetén nehezen deríthető fel. indexmód a célcím egy regiszter tartalmához viszonyított eltolási érték PC-relatív címzés az eltolási érték hozzáadódik az utasításszámláló aktuális értékéhez. Ez egyszerű index címzés, ahol a PC egy regiszternek számít.

Műveleti kód és a címzési mód ortogonalitása Ideális eset, amely a fordítóprogram számára biztosítja a jó minőségű kód előállítását az utasítások és a címzési módok szabályos szerkezete minimális számú utasításformátum minden műveleti kód megenged minden értelmes címzési módot minden regiszter elérhető minden regiszter módban (beleértve ez FP veremkeret mutatót, SP veremmutatót, PC utasításszámlálót) Ideális három címes fix hosszúságú utasításkészlet 8 1 5 5 5 Opkód Cél Forrás1 0 Forrás2 8 aritmetikai-logikai utasítások Opkód Opkód 1 Cél Forrás1 Eltolás Eltolás közvetlen címzés LOAD/STORE utasítások index módba elágazás, eljáráshívás LOAD/STORE utasítások közvetlen címzéssel

Kétcímes gép változó utasítás hosszúsággal mindkét operandus lehet memóriaszó műveletek regiszter-memóriaszó memóriaszó-regiszter regiszter-regiszter memóriaszó-memóriaszó rendkívül költséges a memória hozzáférés miatt egyszerű és átlátható fordítás 8 3 5 4 3 5 4 Opkód Mód Reg Eltolás Mód Reg Eltolás Feltételes 32 bites direkt cím vagy eltolás Feltételes 32 bites direkt cím vagy eltolás Címzési módok (Mód=3 bit) - közvetlen - direkt - regiszter - regiszter-indirekt - index - veremcímzés - 2 további

Utasításkészlet Egy processzor utasításkészlete azoknak az elemi utasításoknak az összessége, amelynek végrehajtására a legalsó, hardver szinten a processzor alkalmas. A legalsó szint azt jelenti, hogy az utasítás végrehajtása vagy huzalozott módon, áramköri szinten valósul meg, vagy az elemi lépéseket vezérlő mikroprogram segítségével. Az utasításkészlet jellemzése a rendelkezésre álló elemi utasítások száma és tartalma az utasításokkal kezelhető feltételek száma az utasítások jellemzőinek következetes használati lehetősége, a kivételek minimális száma az utasításkészlet kialakítása mennyire nyújt hatékony támogatást a programíráshoz a programok fordításához az ellenőrizhetőséghez

Számítógépes műveletek végrehajtásának HW/SW aránya 100% Hardver Szoftver 10% 1957 1987 2017?

IBM/360-370 CPU belső architektúrája és utasításszerkezete RR utasítás 0 8 15 Opkód R1 R2 16db 32 bites általános regiszter 4db 64 bites lebegő pontos regiszter RX utasítás 0 8 12 Opkód R1 X2 RS utasítás 0 8 12 16 20 31 B2 D2 16 20 31 Opkód R1 R3 B2 D2 Fix pontos ALU Decimális ALU Lebegőpontos ALU SI utasítás 0 Opkód 8 I2 16 20 31 B1 D1 Belső busz SS utasítás 0 8 16 20 32 36 47 MAR IR PC MDR Opkód L B1 D1 B2 D2 Állapotszó Memória CU Operatív tár jelei R - általános célú regiszter X - index regiszter B - bázis regiszter D - cím eltolás L -operandus hossza I - immediate operandus

Intel processzorok utasításszerkezete i8086/88 i80286 0-3 1 0-1 0 0-2 0-2 i80386/486 Pentium 0-5 1-2 0-1 0-1 0-4 0-4 PREFIX - Módosító bájt 0xFF menekülő kód a második műveleti kód bájt jelzésére PREFIX OPCODE MODE SIB OFFSET DATA 6 1 1 OPCODE D W 2 3 3 MOD REG R/M MODE operandus helye D - adatforgalom iránya W operandus mérete (byte/szó) 2 3 SCALE INDEX 3 BASE SIB kiegészítő információ az operandus helyéről OFFSET az operandus memóriabeli címe DATA utasításban elhelyezett szám konstans

A Pentium II címzési módszerei A Pentium II címzési módjai igen szabálytalanok, és attól is függenek, hogy 16 vagy 32 bites az utasítás. 32 bites utasításnál a támogatott címzési módok: - közvetlen - direkt - regiszter - regiszter-indirekt - index - egy speciális mód a tömbelemek címzésére Nem minden címzési mód alkalmazható minden utasításban, és nem minden regiszter használható minden címzési módban. Ez megnehezíti a fordító programok írását és bizonytalan kódot eredményez. A MODE bájt tartalma határozza meg a címzési módot. Az egyik operandust a MOD és az R/M mezők határozza meg, a másik operandus mindig regiszter, és a REG mező tartalmazza. Néhány módban egy SIB bájt követi a MODE bájtot. Ekkor szorozni kell az indexregisztert a SCALE-tól függően (1,2,4,8), hozzá kell adni a bázisregiszterhez és a MOD-tól függően hozzá kell adni 8 vagy 32 bites eltolási értéket

Állapottér Amikor az adattéren utasítást (manipulációt) hajtunk végre, változhat az állapottér (flag-ek) állapota, pl.előjel, túlcsordulás, stb. Állapottér Felhasználó számára látható Felhasználó számára transzparens Programszámláló PC állapotjelzők egyéb pl. nyomkövetés veremkezelés megszakításkezelés virtuális memóriakezelés Feltételkód CC egyetlen állapotindikátor adattípusonként változó állapotindikátorok

Állapotjelzők A korai rendszerek tipikusan feltételkódokat használtak valamennyi kivételes esemény jelzésére (az adatmanipulációk, I/O stb. okozta kivételek). Erre a legismertebb példa az IBM System/360, ahol egy 2 bit hosszúságú feltételkódot (CC) deklaráltak. Egy fejlettebb megoldást képvisel a dedikált indikátorok, közös néven flag-ek használata. Például az i8086 esetében az adatmanipulációk vonatkozásában a következő flag-eket deklarálták: A jelenleg bevezetett architektúrák esetében egyébként a különböző adattípusok esetében önálló flag- készletet deklarálnak. Pl. a SPARC CY7C601 integer egysége a következő flag-ekkel rendelkezik: OF S Z AC C N Z V C where: N: negative Z: zero V: overflow C: carry where: OF: S: Z: AC: C: overflow sign zero auxiliary carry carry A lebegőpontos adatok számára ennél a processzornál különálló 32-bites állapotregisztert deklaráltak, melyből csak egy kis rész látható a programozó számára. A különálló flag-ekre egy másik példa az i486-os processzorcsalád. Ennél ismét önálló flag-ek vannak a fixpontos (és logikai) valamint a lebegőpontos operandusok számára:

Az i486 állapotszava Önálló flag-ek vannak a fixpontos (és logikai) valamint a lebegőpontos operandusok számára busy top of stack pointer condition code b c 3 top c 2 c 1 c 0 e s s f p e u e o e z e d e i e error summary status stack flag exception flags: precision underflow overflow zero divide denormalized operand invalid operation

Állapotműveletek Az állapotinformációt gyakran tágabb értelemben használjuk, amit Program Status Word (PSW) vagy kontextusnak hívunk. Ennek a célja egy hatékony mechanizmus biztosítása az állapot információ mentésére és visszatöltésére eljárás-híváskor vagy multitaszk üzemmód stb. esetén. A PSW általában tartalmazza a felhasználó által látott status információt és a rendszer által látott információ egy bizonyos részét. A PSW gyakran korrelál a vezérlőegység státuszával. A felhasználó által látható állapot helyzet legtöbb komponensét speciális utasítással lehet manipulálni: beállítani, tesztelni kiinduló állapotba hozni (reset) betölteni menteni. A programszámláló (PC) egyébként egy különleges szerepet játszik az állapotműveletek vonatkozásában. Létezik egy egész vezérlés-átadásra szolgáló utasítás készlet.