Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje (ábra) Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire előny,

Slides:



Advertisements
Hasonló előadás
Egyszerűsített lexikális elemző
Advertisements

Egyszerű LL grammatika.  Definíciók  Példa. Ábrákkal  MASM program (szó felismerése LL(1) –ben )
 A Web, kezdeti időszakában csak a szöveges file-okat kezelte.  Ma teljes körű multimédia szolgáltatásokat nyújt  Filmet,  Zenét,  Képeket nézhet.
7. Fejezet A processzor és a memória
 Hiányzó tankerületek:  Gönci Tankerület  Cigándi Tankerület  Edelényi Tankerület  Encsi Tankerület.
Számítógépek felépítése 3. előadás CPU, utasítás ciklus, címzés
Készítette: Lakos Péter
Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje (ábra) Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire előny,
Máté: Architektúrák14. előadás1 nn5n5 D1D1 D2D2 D3D3 D4D4 D5D
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 /
Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje (4.17. ábra) Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire.
Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire előny, de.
RISC – CISC RISC: Reduced Instruction Set Computer csökkentett utasításkészletű számítógép CISC: Complex Instruction Set Computer összetett utasításkészletű.
EKG kapuzott (ECG gated) szív vizsgálat
Máté: Orvosi képfeldolgozás3. előadás1 Torzítás. Máté: Orvosi képfeldolgozás3. előadás2 A tárgy nagyítása A forrás nagyítása forrás tárgy kép A tárgy.
Máté: Architektúrák7. előadás1 RISC – CISC RISC: Reduced Instruction Set Computer csökkentett utasításkészletű számítógép CISC: Complex Instruction Set.
Példa az Early-algoritmus alkalmazására
Függvények, mutatók Csernoch Mária.
A verem működése fpga-n
Borland C/C++ mintapéldák mutatókra
Szervezet Szervezet: személyek és csoportok valamilyen célra történő egyesítése, ahol mindenkinek meghatározott feladata és felelőssége van, mellyel hozzájárul.
A memória.
Mikroszámítógépek I 8085 processzor.
Mikroszámítógépek I 8085 processzor.
16. Verem műveletei Kaszab Gábor.
Számítógépek felépítése 4. előadás ALU megvalósítása, vezérlő egység
DirectX a grafika laboron kívül. Mire lesz szükség Itt vannak a szükséges include és lib: iles/DXMinimalPack.zip.
Bekezdésformázás Nevem: Berkes András Speciális kategória
Egy harmadik generációs gép (az IBM 360) felépítése
Takács Béla Eset: Egyenrangú (peer-to-peer) hálózat Mi kell hozzá? A számítógépekben (PC-kben) legyen hálózati kártya (Network Interface Card)
Tömbök Csernoch Mária.
Vírus típusú csaj: Észre sem veszed, és beköltözött a lakásodba, mindent kisajátít. Internet típusú csaj: Fizetned kell, hogy hozzáférjél.
Egyszerűsített lexikális elemző
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 /
Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje (4.17. ábra) Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire.
Számítógép architektúra Címzésmódok. 2007Címzésmódok2-21 Operandusok egy operandus hossza lehet: –1 byte –2 byte (szó) –4 byte egy operandus lehet: –az.
Számítógép architektúrák
Bevezetés az UML-be az E/K modellen keresztül
Táblázatkezelés.
Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás. Adott egy N elemű közösen használt tároló, N  1. Adott a folyamatoknak.
Máté: Orvosi képfeldolgozás6. előadás1 tüdő lép máj Szívizom perfúzió (vérátfolyás) bal kamra jobb kamra A bal kamrai szívizom vérellátásának megítélését.
Egy második generációs gép (az IBM 7094) felépítése
Egy első generációs gép (az IAS) felépítése
A Mikroprocesszor Harmadik rész.
Funkciós blokkok A funkciós blokkok áttekintése Az alkalmazás előnyei.
Üreges mérőhely üreg kristály PMT Nincs kollimátor!
CPU Bus Unit terület 4-5. CPU Bus Unit terület A CPU Bus Unit terület 400 szót tartalmaz a CIO 1500 –tól CIO 1899 – ig terjedő területen. A CPU Bus Unit.
Hátrányból előnyt! - a gazdaságfejlesztés lehetséges útjai a kistelepüléseken Murakeresztúr IKSZT november 24.
1. feladat  Készíts olyan függvényt, mely paraméterül kapja két egész típusú változó címét, s hívása után a két változó értéke helyet cserél.
Algoritmusok és Adatszerkezetek Egy kifejezés lengyelformára hozása - bemutató.
Máté: Architektúrák5. előadás1 PCI (Peripheral Component Interconnect): 32 bites adat átvitel (33,3 MHz, sávszélesség: 133 MB/s) szabadon felhasználható.
A 2. géptermi beszámoló VBA anyagának összefoglalása
Használati utasítás a I-131 kapszulakiszedőhöz. Használati utasítás a I-131 kapszulakiszedőhöz / 1. lépés Csavarja le az ólomtok felső részét!
HEFOP 3.3.1–P /1.0A projekt az Európai Unió társfinanszírozásával, az Európa terv keretében valósul meg. 1 Számítógép architektúrák dr. Kovács.
7. Multiplikatív műveletek:  : szorzás / : osztás
Számítógépek felépítése 4. előadás ALU megvalósítása, vezérlő egység
Objektum orientált programozás 4. Mutatók, típusok és struktúrák Nagy Szilvia.
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
LZW tömörítés Akopjan Alex Algoritmusok és adatszerkezetek 2.
KN 3. Osztály Tankönyv 2. kiadás.
Információ és kommunikáció
A HTML alapjai Az internet és a web.
RISC – CISC RISC: Reduced Instruction Set Computer csökkentett utasításkészletű számítógép CISC: Complex Instruction Set Computer összetett utasításkészletű.
Építsünk Processzort Avagy mi is kell hozzá.
Átváltás a számrendszerek között
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Teljes visszalépéses elemzés
Számítógép architektúrák
Fejlett pipeline megoldások IMSC 2019
Előadás másolata:

Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje (ábra) Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire előny, de néha hátrány! Most hátrány! swap6 csak TOS frissítése miatt kell! swap1MAR = SP – 1; rd // A 2. szó címe, olvasás. swap2MAR = SP // MAR a verem tetejére mutat. swap3H = MDR; wr // 2. szó H-ba, verem tetejére. swap4MDR = TOS // verem teteje swap5MAR = SP – 1; wr // a 2. szóba. swap6TOS = H; goto Main1 // TOS frissítése.

Máté: Architektúrák7. előadás2 A WIDE utasítás A WIDE utasítás valójában prefixum: önmagában nem csinál semmit, csak jelzi, hogy a következő utasításnak 16 bites indexe van. Pl.: ILOAD varnumlokális változó verembe varnum a lokális változó 8 bites indexe. WIDE ILOAD varnumlokális változó verembe varnum a lokális változó 16 bites indexe. w_iload1 címe = iload1 címe + 0x100

Máté: Architektúrák7. előadás3 *) MDR az előző utasítás végén kapott értéket! iload1H = LV iload2MAR = MBRU + H; rd // rd(H+varnum) iload3MAR = SP = SP + 1 iload4PC = PC + 1; fetch; wr // * iload5TOS = MDR; goto Main1 wide1PC = PC + 1; fetch; goto(MBR OR 0x100) w_iload1PC = PC + 1; fetch // index 2. bájtja w_iload2H = MBRU << 8 // 1. bájt léptetése w_iload3H = MBRU OR H // H = a 16 bites index w_iload4MAR = LV + H; rd; goto iload3

Máté: Architektúrák7. előadás4 Az GOTO offset utasítás. PC relatív: PC értékéhez hozzá kell adni offset értékét. offset két bájtos előjeles érték. Mic-1 program: goto1OPC=PC-1 // korábban volt: PC=PC+1 goto2PC=PC+1; fetch // offset 2. bájtja goto3H=MBR<<8 // 1. (előjeles) bájt léptetése goto4H=MBRU OR H // 16 bites offset goto5PC=OPC+H; fetch // PC új értéke goto6goto (Main1) // a folytatás 1. utasítása

Máté: Architektúrák7. előadás5 A IFLT offset utasítás (Mic-1) Kivesz egy szót a veremből és ugrik, ha negatív. iflt1MAR=SP=SP-1; rd // 2. szó a veremből iflt2OPC=TOS // TOS mentése iflt3TOS=MDR // TOS= a verem új teteje iflt4N=OPC; if(N) goto T; else goto F //elágazás TOPC=PC-1; fetch; goto goto2 // igaz ág FPC=PC+1 // hamis ág, nincs ugrás F2PC=PC+1; fetch // PC új értéke F3goto (Main1) // a folytatás 1. utasítása

Máté: Architektúrák7. előadás6 INVOKEVIRTUAL disp (~4.12. ábra), A CPP által mutatott területen a disp (2 bájt) indexű szó mutat a meghívandó metódus kezdő szavára. Ennek a szónak - az első két bájtja tartalmazza a metódus paramétereinek számát, - a második két bájtja a metódus lokális változóinak számát. A metódus végrehajtása a metódus 5. bájtján indul.

Máté: Architektúrák7. előadás7 INVOKEVIRTUAL disp // ~4.12. ábra A CPP által mutatott táblázat disp indexű eleme mutat a meghívandó metódusra. disp első bájtját Main1 már beolvasta MBR-be. invo1PC = PC + 1; fetch // disp 2. bájtját olvassa invo2H = MBRU << 8 // disp 1. bájtját lépteti invo3H = MBRU OR H // H = disp invo4MAR = CPP + H; rd // kezdő cím olvasása invo5OPC = PC + 1 // OldPC = visszatérési cím

Máté: Architektúrák7. előadás8 INVOKEVIRTUAL: paraméterek száma 2 bájt a metódus elején invo6PC = MDR; fetch // PC: új metódus eleje invo7PC = PC + 1; fetch // paraméterek száma invo8H = MBRU << 8 invo9H = MBRU OR H // paraméterek száma

Máté: Architektúrák7. előadás9 INVOKEVIRTUAL: lokálisok száma 2 bájt a paraméterek száma után Talán logikusabb lenne a 11, 12, 10, 13 sorrend. invo10PC = PC + 1; fetch // lokálisok száma 1. bájt invo11TOS = SP – H // OBJREF is paraméter! invo12TOS = MAR = TOS + 1 // OBJREF címe invo13PC = PC + 1; fetch // lokálisok száma 2. bájt invo14H = MBRU << 8 invo15H = MBRU OR H // lokálisok száma

Máté: Architektúrák7. előadás10 INVOKEVIRTUAL: verem kezelés OBJREF cseréje a hívó PC-jét mutató mutatóra invo16MDR = SP + H + 1; wr // OBJREF cseréje invo17MAR = SP = MDR // hívó PC-jének helye invo18MDR = OPC; wr // hívó PC vermelése invo19MAR = SP = SP + 1 // hívó LV-jének a helye invo20MDR = LV; wr // hívó LV vermelése invo21PC = PC + 1; fetch // utasítás olvasás invo22LV = TOS // LV új értéke invo23TOS = MDR; goto Main1 // TOS=hívó LV-je

Máté: Architektúrák7. előadás11 IRETURN // ~4.13. ábra *) rd lehetne egy utasítással korábban is! iret1MAR = SP = LV; rd // összekötő olvasása iret2H = H // vár, hogy az olvasás befejeződjön iret3LV = MAR = MDR; rd // hívó PC olvasása iret4MAR = LV + 1 // hívó LV címe iret5PC = MDR; rd; fetch // * iret6MAR = SP // visszatérési érték címe iret7LV = MDR // hívó LV iret8MDR = TOS; wr; goto Main1

Máté: Architektúrák7. előadás12 Az egyes IJVM utasításokat megvalósító mikroprogram az utasításkódnak megfelelő címnél kezdődik, a további utasítások nem feltétlenül ebben a sorrendben vannak a vezérlőtárban (minden mikroutasítás tartalmazza az utána következő mikroutasítás címét)! Házi feladat: A ábra többi része. Továbbfejlesztések: több sínes rendszerek.

Máté: Architektúrák7. előadás13 Pszeudo utasítások A pszeudo utasításokat a fordítóprogram hajtja végre. Ez a végrehajtás fordítás közbeni tevékenységet vagy a fordításhoz szükséges információ gyűjtést jelenthet.

Máté: Architektúrák7. előadás14 Adat definíciós utasítások Az adatokat általában külön szegmensben szokás és javasolt definiálni iniciálással vagy anélkül. Az adat definíciós utasítások elé általában azonosítót (változó név) írunk, hogy hivatkozhassunk az illető adatra. Egy-egy adat definíciós utasítással – vesszővel elválasztva – több azonos típusú adatot is definiálhatunk. A kezdőérték – megfelelő típusú – tetszőleges konstans (szám, szöveg, cím,...) és kifejezés lehet. Ha nem akarunk kezdőértéket adni, akkor ? -et kell írnunk. DUP operátor kifejezés DUP (adat)

Máté: Architektúrák7. előadás15 Egyszerű adat definíciós utasítások Define Byte (DB): Adat1db25; 1 byte, kezdőértéke decimális 25 Adat2db25H; 1 byte, kezdőértéke hexadec. 25 Adat3db1,2; 2 byte (nem egy szó!) Adat4db5 dup (?); 5 inicializálatlan byte Kardb’a’,’b’,’c’ ; 3 ASCII kódú karakter Szovegdb”Ez egy szöveg”,13,0AH ; ACSII kódú szöveg és 2 szám Szov1db ’Ez is ”szöveg”’ Szov2db”és ez is ’szöveg’”

Máté: Architektúrák7. előadás16 Define Word (DW): Szodw0742H,452 Szo_címedwSzo; Szo offset címe Define Double (DD): Szo_fddSzo; Szo távoli ; (segment + offset) címe Define Quadword( DQ ) Define Ten bytes( DT )

Máté: Architektúrák7. előadás17 Összetett adat definíciós utasítások Struktúra és a rekord. Először a típust kell definiálni. A típus definíció nem jelent helyfoglalást. A struktúra illetve rekord konkrét példányai struktúra illetve rekord hívással definiálhatók. A struktúra illetve rekord elemi részeit mezőknek (field) nevezzük. A hardware nem ismeri ezeket az adat típusokat, a kezelésükről sofware-esen kell gondoskodni!

Máté: Architektúrák7. előadás18 Struktúra Struktúra definíció: a struktúra típusát definiálja a későbbi struktúra hívások számára, ezért a memóriában nem jár helyfoglalással. Str_típusSTRUC; struktúra (típus) definíció...; mező (field) definíciók:...; egyszerű adat definíciós...; utasítások Str_típusENDS; struktúra definíció vége A mező (field) definíció csak egyszerű adat definíciós utasítással történhet, ezért struktúra mező nem lehet másik struktúra vagy rekord.

Máté: Architektúrák7. előadás19 A mezők definiálásakor megadott értékek kezdőértékül szolgálnak a későbbiekben történő struktúra hívásokhoz. A definícióban megadott kezdőértékek közül azoknak a mezőknek a kezdőértéke híváskor felülbírálható, amelyek csak egyetlen adatot tartalmaznak (ilyen értelemben a szöveg konstans egyetlen adatnak minősül). Pl.: SSTRUC; struktúra (típus) definíció F1db1,2; nem lehet felülírni F2db10 dup (?); nem lehet felülírni F3db5; felülírható F4db’a’,’b’,’c’; nem lehet felülírni, de F5db’abc’; felülírható SENDS

Máté: Architektúrák7. előadás20 Struktúra hívás: A struktúra definíciójánál megadott Str_típus névnek a műveleti kód részen történő szerepeltetésével hozhatunk létre a definíciónak megfelelő típusú struktúra változókat. A kezdőértékek fölülbírása a kívánt értékek közötti felsorolásával történik S1 S; kezdőértékek a definícióból S2 S ; F3 kezdőértéke 7, ; F5 -é ’FG ’ S3 S ; F3 kezdőértéke ’A’, ; a többi a definícióból Struktúrából vektort is előállíthatunk, pl.: S_v S 8 dup ( ) ; 8 elemű struktúra vektor

Máté: Architektúrák7. előadás21 Struktúra mezőre hivatkozás: A struktúra változó nevéhez tartozó OFFSET cím a struktúra OFFSET címét, míg a mező neve a struktúrán belüli címet jelenti. A struktúra adott mezejére úgy hivatkozhatunk, hogy a struktúra és mező név közé. -ot írunk, pl.: MOVAL,S1.F3 A. bármely oldalán lehet másfajta cím is, pl. MOVBX, OFFSET S1 után az alábbi utasítások mind ekvivalensek az előzővel: MOVAL,[BX].F3 MOVAL,[BX]+F3 MOVAL,F3.[BX] MOVAL,F3[BX]

Máté: Architektúrák7. előadás22 A fentiekből az is következik, hogy a mező név – ellentétben a magasabb szintű programozási nyelvekkel – szükségképpen egyedi név, tehát sem másik struktúra definícióban, sem közönséges változóként nem szerepelhet. A struktúra vektorokat a hagyományos módon még akkor sem indexezhetjük, ha az index konstans. Ha pl. 5, akkor MOVAL,S_v[5].F3 ; szintaktikusan helyes de [5] nem a vektor ötödik elemére mutató címet fogja eredményezni, csupán 5 byte-tal magasabb címet, mint S_v.F3. Ha i változó, akkor MOVAL,S_v[i].F3 ; szintaktikusan is HIBÁS!

Máté: Architektúrák7. előadás23 Mindkét esetben programmal kell kiszámíttatni az elem offset-jét, pl. ha i word: MOVAX,TYPE S; S hossza byte-okban ; (l. később) MULi; Az indexet 0-tól számoljuk! MOVBX,AX; az adat nem „lóghat ki” a ; szegmensből ( DX=0 ) MOVAL,S_v.F3[BX] ; AL  az i -dik elem F3 mezeje.

Máté: Architektúrák7. előadás24 Rekord Rekord definíció: Csak a rekord típusát definiálja a későbbi rekord hívások számára. Rec_típusRECORDmező_specifikációk Az egyes mező specifikációkat, -vel választjuk el egymástól. Mező specifikáció: mező_név:szélesség=kezdőérték szélesség a mező bit-jeinek száma. Az =kezdőérték el is maradhat, ez a mező 0 -val való inicializálását írja elő.

Máté: Architektúrák7. előadás25 Pl.: RRECORDX:3,Y:4=15,Z:5 Az R rekord szavas (12 bit), a következőképpen helyezkedik el egy szóban: XXXYYYYZZZZZ

Máté: Architektúrák7. előadás26 Rekord hívás: A rekord definíciójánál megadott névnek a műveleti kód részen történő szerepeltetésével hozhatunk létre a definíciónak megfelelő típusú rekord változókat. A kezdőértékek fölülbírálása a kívánt értékek közötti felsorolásával történik. R1R ; 01E0H, kezdőértékek a ; definícióból R2R ; 01E7H, X, Y kezdőértéke a ; definícióból, Z -é 7 R3R ; 0240H, X kezdőértéke 1, Y -é 2, ; Z -é a definícióból Rekordból vektort is előállíthatunk, pl.: R_vR 5 dup ( ) ; 0243H, ; 5 elemű rekord vektor

Máté: Architektúrák7. előadás27 Rekord mezőre hivatkozás A mező név olyan konstansként használható, amely azt mondja meg, hány bittel kell jobbra léptetnünk a rekordot, hogy a kérdéses mező az 1-es helyértékre kerüljön. MASK és NOT MASK operátor ; AX  R3 Y mezeje a legalacsonyabb helyértéken MOVAX,R3; R3 szavas rekord! ANDAX,MASK Y; Y mezőhöz tartozó bitek ; maszkolása MOVCL,Y; léptetés előkészítése SHRAX,CL; kész vagyunk. SAR nem lenne korrekt: nem biztos, hogy az Y mező nem tartalmazza az előjel bitet.

Máté: Architektúrák7. előadás28 Kifejezés Egy művelet operandusa lehet konstans, szimbólum vagy kifejezés. Konstans A konstans lehet numerikus vagy szöveg konstans. A numerikus konstansok decimális, hexadecimális, oktális és bináris számrendszerben adhatók meg. A számrendszert a szám végére írt D, H, O illetve B betűvel választhatjuk ki..RADIXn; 2 < n < 16, n decimális A szöveg konstansokat a DB utasításban ” vagy ’ jelek között adhatjuk meg.

Máté: Architektúrák7. előadás29 Szimbólum A szimbólum lehet szimbolikus konstans, változó név vagy címke. Szimbolikus konstans: Az = vagy az EQU pszeudo utasítással definiálható. Szimbolikus szöveg konstans csak EQU -val definiálható. A szimbolikus konstans a program szövegnek a definíciót követő részében használható, értékét a használat helyét megelőző utolsó definíciója határozza meg.

Máté: Architektúrák7. előadás30 S=1; S értéke 1 NEQU14; N értéke 14 MOVCX,N; CX  14 ISM: S=S+1; S értéke ezután 2, függetlenül ; attól, hogy hányadszor fut a ciklus MOVAX,S; AX  2 LOOPISM N=5; hibás NEQU5; hibás S=5; helyes SEQU5; hibás

Máté: Architektúrák7. előadás31 Szimbolikus konstansként használhatjuk a $ jelet (helyszámláló), melynek az értéke mindenkor a program adott sorának megfelelő OFFSET cím. A helyszámláló értékének módosítására az ORG utasítás szolgál, pl.: ORG$+100H; 100H byte kihagyása ; a memóriában

Máté: Architektúrák7. előadás32 Címke: Leggyakoribb definíciója, hogy valamelyik utasítás előtt a sor első pozíciójától : -tal lezárt azonosítót írunk. Az így definiált címke NEAR típusú. Címke definícióra további lehetőséget nyújt a LABEL és a PROC pszeudo utasítás: ALFA:...; NEAR típusú BETALABELFAR; FAR típusú GAMMA:...; BETA is ezt az utasítást ; címkézi, de GAMMA NEAR típusú

Máté: Architektúrák7. előadás33 Az eljárás deklarációt a PROC pszeudo utasítással nyitjuk meg. A címke rovatba írt azonosító az eljárás neve és egyben a belépési pontjának címkéje. Az eljárás végén az eljárás végét jelző ENDP pszeudo utasítás előtt meg kell ismételnünk ezt az azonosítót, de az ismétlés nem minősül címkének. Az eljárás címkéje aszerint NEAR vagy FAR típusú, hogy maga az eljárás NEAR vagy FAR. Pl.: APROC; NEAR típusú... BPROCNEAR; NEAR típusú... CPROCFAR; FAR típusú...

Máté: Architektúrák7. előadás34 Címkére vezérlés átadó utasítással hivatkozhatunk, NEAR típusúra csak az adott szegmensből, FAR típusúra más szegmensekből is. Változó: Definíciója adat definíciós utasításokkal történik. Néha (adat) címkének is nevezik.

Máté: Architektúrák7. előadás35 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. Az érték 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ák7. előadás36 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ák7. előadás37 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ák7. előadás38 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 ; belső DUP ignorálva movax,LENGTH str; ax  1 ; str egy elem

Máté: Architektúrák7. előadás39 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 ; belső DUP ignorálva movax,SIZE str; ax  1 ; str bájtos

Máté: Architektúrák7. előadás40 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ák7. 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 utasításban DI mellett, de az SI -hez tartozó DS átírható.

Máté: Architektúrák7. előadás42 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ák7. előadás43 –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ák7. előadás44 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ák7. előadás45 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.: 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ák7. előadás46 Feladatok WIDE ILOAD programja átalakítható úgy, hogy eggyel kevesebb mikroutasításból álljon (ehhez ILOAD programját is módosítani kell). Hogyan? Gyorsabb lesz-e WIDE ILOAD programja az átalakítás után? Mire szolgál az INVOKEVIRTUAL utasítás? Hol található az INVOKEVIRTUAL disp utasítással hívott metódus? Milyen információ van a metódus elején? Hogy néz ki a veremnek egy metódus számára látható része?

Máté: Architektúrák7. előadás47 Feladatok Mely regiszterek tartalmát kell menteni metódus hívás esetén? Hogy találhatók meg a mentett regiszter tartalmak visszatéréskor? Miért nem lenne jó IRETURN megvalósításában iret3:MAR = MDR; rd iret4:MAR = MAR + 1? Hol található a metódus visszatérési értéke az IRETURN utasítás után? Elemezze a ábra programjait!

Máté: Architektúrák7. előadás48 Feladatok Milyen adat definíciós utasítást ismer? Hogy használható a DUP operátor? Milyen adatok definiálhatók a DB operátorral? Milyen adatok definiálhatók a DW operátorral? Milyen operátor segítségével adhatunk meg távoli cím konstanst? Milyen összetett adat definíciós utasítást ismer? Hogy definiálhatunk struktúrát? Hogy hozhatunk létre struktúra példányt? Hogy hozhatunk létre struktúra vektort?

Máté: Architektúrák7. előadás49 Feladatok Hogy inicializálhatjuk egy struktúra valamely mezejét? Mit kell tudni a struktúra és mező névről? Hogy hivatkozhatunk egy struktúra valamely mezejére? Hogy hivatkozhatunk egy struktúra vektor valamely mezejére? Mi a rekord? Hogy definiálhatunk rekordot? Hogy adhatunk kezdőértéket egy rekordnak?

Máté: Architektúrák7. előadás50 Feladatok Mit kell tudni a rekord és mező névről? Hogy hivatkozhatunk egy rekord valamely mezejére? Hogy hivatkozhatunk egy rekord vektor valamely mezejére? Mi a szimbólum? Hogy definiálhatunk szimbolikus konstanst? Mi a különbség az EQU-val és az = jellel történt konstans definíció között? Mi egy szimbolikus konstans értéke? Hogy definiálhatunk címkét?

Máté: Architektúrák7. előadás51 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 é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ák7. előadás52 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?