Oper - PowerPoint PPT Presentation

About This Presentation
Title:

Oper

Description:

Oper ci s rendszer szintje Operating System Machine (OSM) Ezen a szinten programoz knak rendelkez sre llnak a felhaszn l i m dban haszn lhat ISA szint ... – PowerPoint PPT presentation

Number of Views:65
Avg rating:3.0/5.0
Slides: 77
Provided by: usz73
Category:
Tags: oper | syntax

less

Transcript and Presenter's Notes

Title: Oper


1
  • Operációs rendszer szintje
  • Operating System Machine (OSM)
  • Ezen a szinten programozóknak rendelkezésre
    állnak a felhasználói módban használható ISA
    szintu utasítások és az operációs rendszer által
    hozzáadott utasítások rendszerhívások (system
    calls). Ezeket az operációs rendszer eljárásai
    valósítják meg (értelmezés).

2
  • Virtuális memória
  • Régen nagyon kicsi volt a memória. Sokszor nem
    fért el az egész program a memóriában.
  • Overlay (átfedés) A program több része fut
    ugyanazon a memória területen, mindig az
    aktuálisan futó rész van a memóriában, a többi
    rész mágneslemezen van. A programozó dolga a
    feladat átfedo részekre bontása, és a részek
    mozgatása a memória és a háttér tároló között.
  • Ma már sokkal nagyobb ugyan a memória, de még
    sokkal nagyobb lehet a címtartomány (address
    space).

3
  • Virtuális címtartomány azok a címek, amelyekre a
    program hivatkozni tud.
  • Fizikai címtartomány azok a címek, amelyek
    tényleges memória cellát címeznek.
  • A virtuális és fizikai címtartomány ugyanolyan
    méretu lapokra van osztva (6.3. ábra). A fizikai
    lapokat lapkeretnek (page frame) nevezzük.
  • Lap méret 512 B 64 KB ( 4 MB), mindig 2
    hatványa.

4
Lap Virtuális címek Virtuális címek Virtuális címek
N -
-
4 16384 - 20479
3 12288 - 16383
2 8192 - 12287
1 4096 - 8191
0 0 - 4095
Lapkeret Fizikai címek Fizikai címek Fizikai címek
n -
-
4 16384 - 20479
3 12288 - 16383
2 8192 - 12287
1 4096 - 8191
0 0 - 4095
  • A virtuális címtartomány sokkal nagyobb, mint a
    fizikai!
  • Mit kell tenni, ha olyan címre történik
    hivatkozás, amely nincs a memóriában?

5
  1. Egy lapkeret (pl. a 0-4095) tartalmának lemezre
    mentése.
  2. A kérdéses lap megkeresése a lemezen.
  3. A kérdéses lap betöltése a lapkeretbe.
  4. A memória térkép megváltoztatása pl. a 4096 és
    8191 közötti címek leképezése a betöltött
    lapkeret címtartományába.
  5. A végrehajtás folytatása.

Virtuális címtartomány




Fizikai címtartomány





8196
4096
0

8196
4096
0
leképezés
6
  • A virtuális címek fizikai címekre történo
    leképezését az MMU (Memory Management Unit
    memória kezelo egység végzi.
  • Memória térkép (memory map) vagy laptábla (page
    map) kapcsolja össze a virtuális címeket a
    fizikai címekkel. Pl. 4 KB-os lapméret 32 bites
    virtuális cím esetén 1 millió virtuális lap van,
    ezért 1 millió bejegyzésu laptáblára van
    szükség. 32 KB fizikai memória esetén csak 8
    lapkeret van, ezért a leképezés megoldható 8
    cellás asszociatív memóriával is (a gyakorlatban
    több ezer lapkeret van, és az asszociatív memória
    igen drága).

7
  • Asszociatív memória

8
  • Jelenlét/hiány
  • (present/absent)

15 bites fizikai cím
Laptábla
1 1 0 0 0 0 0 0 0 0 1 0 1 1 0

4
3 1 110
2
1
0
0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0
20 bites virtuális lapszám 20 bites virtuális lapszám 20 bites virtuális lapszám 20 bites virtuális lapszám 20 bites virtuális lapszám 20 bites virtuális lapszám 12 bites offset 12 bites offset 12 bites offset 12 bites offset 12 bites offset 12 bites offset 12 bites offset 12 bites offset 12 bites offset 12 bites offset 12 bites offset 12 bites offset
32 bites virtuális cím 32 bites virtuális cím 32 bites virtuális cím 32 bites virtuális cím 32 bites virtuális cím 32 bites virtuális cím 32 bites virtuális cím 32 bites virtuális cím 32 bites virtuális cím 32 bites virtuális cím 32 bites virtuális cím 32 bites virtuális cím 32 bites virtuális cím 32 bites virtuális cím 32 bites virtuális cím 32 bites virtuális cím 32 bites virtuális cím 32 bites virtuális cím
6.4. ábra
9
virtuális lap
6.5. ábra
Laptábla
lap keret

15 0 0
14 1 4
13 0 0
12 0 0
11 1 5
10 0 0
9 0 0
8 1 3
7 0 0
6 1 7
5 1 6
4 0 0
3 1 2
2 0 0
1 1 0
0 1 1
lap keret
fizikai memória

6. virtuális lap 7
5. virtuális lap 6
11. virtuális lap 5
14. virtuális lap 4
8. virtuális lap 3
3. virtuális lap 2
0. virtuális lap 1
1. virtuális lap 0
10
  • Laphiány (page fault) a lap nincs a memóriában.
  • Kérésre lapozás (demand paging) lapozás csak
    laphiány esetén. A program egyetlen bájtja sem
    kell bent legyen a memóriában, csak a másodlagos
    tárolón.
  • Idoosztásos rendszereknél nem kielégíto!
  • Munka halmaz (working set) a legutóbbi k memória
    hivatkozásban szereplo lapok halmaza (az
    operációs rendszer feladata megállapítani).
    Idoosztásos rendszerekben ezek a lapok elore
    visszatölthetok.
  • Ha a munkahalmaz nagyobb, mint a lapkeretek
    száma, akkor gyakori lesz a laphiány. A nagyon
    gyakori laphiányt vergodésnek (thrashing)
    nevezzük.

11
  • Lapkezelési eljárások melyik lap helyett töltsük
    be a kért lapot?
  • LRU (Least Recently Used, legrégebben használt)
    általában jó, de nem jó pl. 9 lapon átnyúló
    ciklus esetén, ha csak 8 memória lap van (6.6.
    ábra).

7. Virtuális lap
6. Virtuális lap
5. Virtuális lap
4. Virtuális lap
3. Virtuális lap
2. Virtuális lap
0. Virtuális lap
8. Virtuális lap
7. Virtuális lap
6. Virtuális lap
5. Virtuális lap
4. Virtuális lap
3. Virtuális lap
2. Virtuális lap
1. Virtuális lap
0. Virtuális lap
7. Virtuális lap
6. Virtuális lap
5. Virtuális lap
4. Virtuális lap
3. Virtuális lap
2. Virtuális lap
1. Virtuális lap
8. Virtuális lap
12
  • FIFO (First-in First-Out, eloször be, eloször
    ki) egyszerubb (de most ez se jobb, mint LRU).
  • Csak a módosult (dirty, szennyezett) lapokat kell
    visszaírni, a tisztát (clean) nem (szennyezés
    bit). Most is elonyös, ha az utasítások és az
    adatok elkülönülten helyezkednek el a memóriában
    az utasításokat nem kell visszaírni.

13
  • Lapméret és elaprózódás
  • Ha egy program k lapon fér el, akkor általában a
    k-dik lap nincs tele.
  • Ha a lap mérete n, akkor programonként átlagosan
    n/2 bájt kihasználatlan belso elaprózódás
    (internal fragmentation).
  • A belso elaprózódás ellen a lap méretének
    csökkentésével lehet védekezni, de ez a laptábla
    méretének növekedéséhez vezet.
  • A kis lap elonytelen a lemez sávszélességének
    kihasználása szempontjából is, viszont kisebb a
    vergodés kialakulásának valószínusége.

14
  • Szegmentálás
  • Egy fordítóprogramnak a következo célokra kellhet
    memória (6.7. ábra)
  • szimbólum tábla,
  • forrás kód,
  • konstansok,
  • elemzési fa,
  • verem.
  • Rögzített memória felosztás esetén ezek egyike
    kicsinek bizonyulhat, miközben a többi nem
    használja ki a rendelkezésére álló tartományt.

Virtuális címtartomány
Szabad Jelenleg használt
Verem terület
Elemzési fa
Konstans tábla
Forrás szöveg
Szimbólum tábla
15
  • Szegmentálás (6.8. ábra)

Szegmentált memóriában minden tábla a többitol
függetlenül nohet vagy zsugorodhat.
Szim-bólum tábla
20 K
16 K
12 K
8 K
4 K
0
Hívási verem
Forrás szöveg
Elemzési fa
Konstans tábla
0. szegmens 1. szegmens 2. szegmens 3. szegmens 4. szegmens
16
  • Szegmens (6.8. ábra)
  • A programozó számára látható logikai egység.
    Minden szegmens címtartománya 0-tól valamilyen
    maximumig terjed. A szegmens tényleges mérete
    ennél kisebb lehet. A program számára a
    címtartomány két dimenziós (szegmens, offset).
  • Általában egy szegmensben csak egyféle dolgok
    vannak vagy kód vagy konstans vagy Különbözo
    tárvédelmi lehetoségek
  • kód csak végrehajtható, nem írható, nem
    olvasható,
  • konstans csak olvasható

17
  • A szegmentálás és a virtuális memória
    összehasonlítása (6.8. ábra)

Szempontok Lapozás Szegmentálás
Tudnia kell róla a programozónak? Nem Igen
Hány lineáris címtartomány létezik? 1 Több
Meghaladhatja-e a virtuális címtartomány nagysága a fizikai memória méretét? Igen Igen
Könnyen kezelhetok a változó méretu táblák? Nem Igen
Mi ennek a technikának a lényege? Nagy memória szimulálása Több címtartomány biztosítása
18
  • A szegmentálás megvalósítása
  • Lapozással Minden szegmensnek saját laptáblája
    van. A szegmens néhány lapja a memóriában van.
  • Cseréléssel Teljes szegmensek mozognak a memória
    és a lemez között. Ha olyan szegmensre
    hivatkozunk, amely nincs a memóriában, akkor
    betöltodik. Külso elaprózódáshoz (external
    fragmentation) vezethet (6.10. ábra).
    Lyukacsosodásnak (checkerboarding) is nevezik.

19
6 K
  • Összepréselés ido igényes, de idonként kell.
  • Legjobb illesztés (best fit) és elso illesztés
    (first fit) algoritmus. Az utóbbi gyorsabb és
    jobb is az általános hatékonyság szempontjából.

20
  • Pentium 4 (6.12-14. ábra)
  • A szegmens regiszter tartalmazza a szelektort.

13 1 2
Index
Szelektor
0 GDT 1 LDT
Védelmi szint 0-3
A szelektor (6.12. ábra) indexe választja ki a
leírót (descriptor) a lokális (LDT, Local
Descriptor Table) vagy globális leíró táblából
(GDT, Global Descriptor Table). (6.13. ábra). A
0. leíró használata csapdát eredményez (hiba).
21
Pentium 4 kódszegmensének leírója (6.13. ábra)
BASE 0-15 BASE 0-15 BASE 0-15 BASE 0-15 LIMIT 0-15 LIMIT 0-15 LIMIT 0-15 LIMIT 0-15
B 24-31 G D 0 L 16-19 P DPL TYPE B 16-23
  • Ha P0, csapda nem létezo szegmens, vagy be
    kell tölteni a szegmenst.

22
Szelektor
Offset
Leíró
Bázis cím

Limit
Más mezok
  • 6.14. ábra

32 bites lineáris cím
Ha offset (a szegmens elejéhez viszonyított
relatív cím) a szegmens határán túl van, csapda
(hiba). Lapozást tiltó flag (a globális
vezérloregiszter bitje) Ha engedélyezett
lineáris cím virtuális cím Ha
tiltott lineáris cím fizikai cím
23
  • Lapkönyvtár (page directory 6.15. ábra)
  • A 32 bites lineáris címek és a 4 KB-os lapok
    miatt egy szegmenshez egymillió lap is tartozhat.
    Túl sok!
  • Minden futó programhoz egy lapkönyvtár tartozik.
  • Minden bejegyzés egy laptáblára mutat, vagy
    sehova.

Lineáris cím Lineáris cím Lineáris cím
10 10 12
DIR PAGE OFF
Lapkönyvtár Lapkönyvtár
1023

2
1
0
32 bit
Laptábla Laptábla
1023

2
1
0
32 bit
Lapkeret Lapkeret





32 bit

24
  • A lapkönyvtárnak azokhoz a mutatóihoz, amelyek
    nem mutatnak sehova, nem kell helyet foglalni a
    laptábla számára (rövid szegmenshez csak két db.
    ezer, és nem egy milliós bejegyzésu tábla kell).
  • A táblákban minden bejegyzéshez 32 bit áll
    rendelkezésre. A mutatókhoz nem használt biteket
    a hardver az operációs rendszer számára hasznos
    jelzésekkel tölti ki (védelem, szennyezettség,
    hozzáférés, ).
  • Speciális hardver támogatja a legutóbb használt
    lapok gyorsabb elérését.

25
  • A Pentium 4 védelmi rendszere (6.16. ábra)
  • A futó program pillanatnyi szintjét a PSW
    tartalmazza.
  • A program a saját szintjén lévo szegmenseket
    szabadon használhatja.
  • Magasabb szinten lévo adatokhoz hozzáfér, de az
    alacsonyabb szinten lévok kezelése csapdát okoz.
  • Más szinten lévo eljárás hívásánál CALL helyett
    szelektort kell alkalmazni, ez egy hívás kaput
    (call gate) jelöl ki (más védelmi szintre csak
    szabványos tehát ellenorzött belépési ponton
    lehet áttérni).

26
  • Az UltraSPARC III virtuális memóriája
  • Virtuális cím 64 bites, egyelore 44 bitre
    korlátozva.

Virtuális címtartománymegengedett zónák
264-1
264-243
243-1
0
44 bitre korlátozva ez a címtartomány
folytonos. Fizikai címtartomány maximum 41 bites.
A kód és adat lapokat külön kezeli.
27
  • Lapméret 8, 64, 512 KB és 4 MB (6.17. ábra).

Lap mérete Virtuális lap címe (bit) OFFSET (bit) Fizikai lap címe (bit) OFFSET (bit)
8 KB 51 (31) 13 ? 28 13
64 KB 48 (28) 16 ? 25 16
512 KB 45 (25) 19 ? 22 19
4 MB 42 (22) 22 ? 19 22
44 bitre korlátozva
maximum 41 bit
28
  • A memória kezelo egység (MMU) három szinten
    dolgozik
  • A legutóbb használt lapokat gyorsan megtalálja
    (hardver). A kód és az adat lapokat teljesen
    külön kezeli.
  • A nem nagyon régen használtakat már lassabban
    (hardver segítséggel).
  • A nagyon régen használtakat csak hosszas keresés
    után (szoftveres úton).

29
  • TLB (Translation Lookaside Buffer) a legutóbb
    használt 64 lap bejegyzését tartalmazza (6.18.
    ábra).











Kulcs
Környezet (context) processzus szám. Asszociatív
memória Kulcs a keresett virtuális lap és a
környezet. TLB hiány (TLB miss) esetén csapda.
30
  • TLB hiány esetén TSB folytatja a keresést
    (szoftver).
  • TSB (Translation Storage Buffer) olyan
    felépítésu, mint egy direkt leképezésu gyorsító
    tár (operációs rendszer építi fel, és kezeli a
    központi memóriában).

Virtuális lap tag
Virtuális lap címe
Fizikai lapkeret
Flag-ek
Környezet
Érvényes
tag line











TSB találat esetén egy TLB sor helyébe beíródik a
kért lapnak megfelelo bejegyzés.
31
  • TSB hiány esetén a fordítótábla (translation
    table) alapján keres. Ennek a táblának a
    szerkezetét az operációs rendszer határozza meg.
  • Egy lehetséges megoldás a tördeléses eljárás.
    Ebben az esetben a memóriába töltött virtuális
    lapok és a nekik megfelelo fizikai lapkeretek
    sorszáma listákba van helyezve. Ha a virtuális
    lap sorszáma p-vel osztva q-t ad maradékul, akkor
    csak a q-adik listát kell végignézni.
  • Ha ez se találja a keresett lapot, akkor nincs a
    memóriában.

32
  • Virtuális memória és gyorsító tár
  • Két szintu hierarchia
  • Virtuális memória használatakor az egész
    programot lemezen tartjuk, fix méretu lapokra
    osztjuk. Lap hiány esetén a lapot a központi
    memóriába töltjük (operációs rendszer).
  • Gyorsító tár esetén a központi memóriát gyorsító
    sorokra osztjuk. Gyorsító tár hiány esetén a
    gyorsító sort a gyorsító tárba töltjük (hardver).

33
  • 8. Additív muveletek
  • összeadás?
  • - kivonás?
  • 9. Relációs operátorok (igaz-1, hamis0)
    általában feltételes fordítással kapcsolatban
    fordulnak elo
  • EQ // -1 EQ 0FFFFFFFFH igaz
  • NE ? // -1 NE 0FFFFFFFFH hamis
  • LT ? 33 bites argumentumok!
  • LE ? 1 GT -1 igaz
  • GT ? 1 GT 0FFFFFFFFH hamis
  • GE ?

34
  • 10. NOT bitenkénti negálás?
  • 11. AND bitenkénti és muvelet?
  • 12. Bitenkénti vagy és kizáró vagy muvelet
  • OR bitenkénti vagy muvelet?
  • XOR bitenkénti kizáró vagy muvelet?

35
  • 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 kapcsolatos Adattal kapcsolatos
5 Nem definiált Definiált
7 Lokális v. PUBLIC EXTERN
36
  • Feltételes fordítás
  • A fordító programok általában így az assembler
    is feltételes fordítási lehetosé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 ellenorizheto feltétel
    igaz illetve hamis.
  • IFxx feltétel
  • ... lefordul, ha a feltétel igaz
  • ELSE el is maradhat
  • ... lefordul, ha a feltétel hamis
  • ENDIF

37
  • IF kifejezés igaz, ha kifejezés?0
  • IFE kifejezés igaz, ha kifejezés0
  • Pl.
  • IF debug GT 20
  • call debug1
  • ELSE
  • call debug2
  • ENDIF

38
  • IF1 igaz a fordítás
  • elso menetében
  • IF2 igaz a fordítás
  • második menetében
  • IFDEF Szimbólum igaz, ha Szimbólum
  • definiált
  • IFNDEF Szimbólum igaz, ha Szimbólum
  • nem definiált
  • Pl. Csak akkor definiáljuk buff-t, ha a hossza
    ismert
  • IFDEF buff_len
  • buff db buff_len dup (?)
  • ENDIF

39
  • 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

40
  • Makró és blokk ismétlés
  • Makró definíció
  • M_név MACRO fpar1,fpar2...
  • makró fej (kezdet)
  • ... makró törzs
  • ENDM makró vége
  • fpar1,fpar2... formális paraméterek vagy
    egyszeruen paraméterek.
  • A makró definíció nem lesz része a lefordított
    programnak, csupán azt határozza meg, hogy késobb
    mit kell a makró hívás helyére beírni (makró
    kifejtés, helyettesítés).
  • A makró törzsön belül elofordulhat makró hívás és
    másik makró definíció is.

41
  • Makró hívás
  • M_név apar1,apar2...
  • apar1,apar2... aktuális paraméterek/argumentumok.
  • A muveleti kód helyére írt M_név hatására a
    korábban megadott definíció szerint megtörténik a
    makró helyettesítés, más néven makró kifejtés. Ez
    a makró törzs bemásolását jelenti, miközben az
    összes paraméter összes elofordulása a megfelelo
    argumentummal helyettesítodik. A helyettesítés
    szövegesen történik, azaz minden paraméter mint
    szöveg helyére a megfelelo argumentum mint
    szöveg kerül.
  • A helyettesítés nem rekurzív. Makró hívás
    argumentuma sem lehet makró hívás.
  • Az argumentumnak megfelelo formális paraméternek
    lehet olyan elofordulása, amely a késobbiek során
    makró hívást eredményez.

42
  • Dupla szavas összeadás (DXAX)?(DXAX)(CXBX)

Eljárás deklaráció EDADD PROC NEAR ADD AX,BX ADC DX,CX RET EDADD ENDP Makró definíció MDADD MACRO ADD AX,BX ADC DX,CX ENDM
43
  • Ha a programban valahol dupla szavas összeadást
    kell
  • végezzünk, akkor hívnunk kell az eljárást
    illetve a makrót

Eljárás hívás CALL EDADD Makró hívás MDADD
Futás közben felhívásra kerül az EDADD eljárás Fordítás közben megtörténik a makró helyettesítés ADD AX,BX ADC DX,CX Futás közben ez a két utasítás kerül csak végrehajtásra.
44
  • Látható, hogy eljárás esetén kettovel több
    utasítást kell végrehajtanunk, mint makró
    esetében (CALL EDADD és RET).
  • Még nagyobb különbséget tapasztalunk, ha (CXBX)
    helyett paraméterként kívánjuk megadni az egyik
    összeadandót

45
Eljárás deklaráció EDADD2 PROC NEAR PUSH BP MOV BP,SP ADD AX,4BP ADC DX,6BP POP BP RET 4 EDADD ENDP Eljárás hívás Ha SI az összeadandónk címét tartalmazza, akkor a felhívás PUSH 2SI PUSH SI CALL EDADD2
Futás közben végrehajtásra kerül a paraméter
átadás, az eljárás hívás, az eljárás összesen 9
utasítás
46
Makró definíció MDADD2 MACRO P IFB ?P? ADD AX,BX ADC DX,CX ELSE ADD AX,P ADC DX,P2 ENDIF ENDM Makró hívás MDADD2 SI Fordítás közben a hívás az ADD AX,SI ADC DX,SI2 utasításokra cserélodik, futás közben csak ez a két utasítás kerül végrehajtásra. MDADD2 hatása ADD AX,BX ADC DX,CX
  • Most sem része a makró definíció a lefordított
    programnak.

47
A fenti példában rövid volt az eljárás törzs, és
ehhez képest viszonylag hosszú volt a paraméter
átadás és átvétel. Ilyenkor célszeru a makró
alkalmazása. De ha a program sok helyérol kell
meghívnunk egy hosszabb végrehajtandó
programrészt, akkor általában célszerubb eljárást
alkalmazni.
48
  • Paraméter másutt is elofordulhat a makró
    törzsben, nemcsak az operandus részen, pl.
  • PL macro p1,P2
  • mov ax,p1
  • P2 p1
  • endm
  • PL Adat, INC
  • hatása
  • mov ax,Adat
  • INC Adat

49
  • A , , ! karakterek továbbá a ltgt és speciális
    szerepet töltenek be makró kifejtéskor.
  • (helyettesítés operátor)
  • ha a paraméter helyettesített értéke része
    egy szónak
  • idézeten belüli helyettesítés
  • errgen macro y, x
  • erry db Error y x
  • endm
  • errgen 5, ltUnreadable diskgt
  • hatása
  • err5 db Error 5 Unreadable disk

50
  • ltgt (literál szöveg operátor) Ha aktuális
    paraméter szóközt vagy ,-t is tartalmaz. Az elozo
    példa ltgt nélkül
  • errgen 5, Unreadable disk
  • kifejtve
  • err5 db Error 5 Unreadable
  • adat macro p
  • db p
  • endm
  • adat ltabc,13,10,0gt
  • adat abc,13,10,0
  • kifejtve
  • db abc,13,10,0
  • db abc

51
  • ! (literál karakter operátor) Az utána következo
    karaktert makró kifejtéskor közönséges
    karakterként kell kezelni. Pl. a korábbi errgen
    makró
  • errgen 103, ltExpression !gt 255gt
  • hívásának hatása
  • err103 db Error 103 Expression gt 255
  • de
  • errgen 103, ltExpression gt 255gt
  • hívásának hatása
  • err103 db Error 103 Expression

52
  • (kifejezés operátor) Az utána lévo argumentum
    (kifejezés is lehet) értéke és nem a szövege
    lesz az aktuális paraméter. Pl.
  • sym1 equ 100
  • sym2 equ 200
  • txt equ Ez egy szöveg
  • kif macro exp, val
  • db exp val
  • endm
  • kif ltsym1sym2gt, (sym1sym2)
  • kif txt, txt
  • db sym1sym2 300
  • db txt Ez egy szöveg

53
  • Az alábbi példa a használatán kívül a makró
    törzsön belüli makró hívást is bemutatja
  • s 0
  • ErrMsg MACRO text
  • s s1
  • Msg s,text
  • ENDM
  • Msg MACRO sz,str
  • msgsz db str
  • ENDM

54
s 0 ErrMsg MACRO text s s1 Msg s,text ENDM Msg MACRO sz,str msgsz db str ENDM
  • ErrMsg syntax error
  • makró hívás hatására bemásolásra kerül (.LALL
    hatására látszik a listán) az
  • s s1
  • Msg s,syntax error
  • szöveg. s értéke itt 1-re változik. Újabb makró
    hívás (Msg). A s paraméter az s értékére (1)
    cserélodik, majd kifejtésre kerül ez a makró is,
    ebbol kialakul
  • msg1 db syntax error

55
s 0 ErrMsg MACRO text s s1 Msg s,text ENDM Msg MACRO sz,str msgsz db str ENDM
  • Egy újabb hívás és hatása
  • ErrMsg invalid operand
  • msg2 db invalid operand

56
  • (makró kommentár) A makró definíció
    megjegyzéseinek kezdetét jelzi. A utáni
    megjegyzés a makró kifejtés listájában nem
    jelenik meg.

57
  • LOCAL c1,c2...
  • c1, c2, ... minden makró híváskor más, ??xxxx
    alakú szimbólumra cserélodik, ahol xxxx a makró
    generátor által meghatározott hexadecimális szám.
    A LOCAL operátort közvetlenül a makró fej utáni
    sorba kell írni.
  • KOPOG macro n
  • LOCAL ujra
  • mov cx,n
  • ujra KOPP
  • loop ujra
  • endm
  • Ha a programban többször hívnánk a KOPOG makrót,
    akkor a LOCAL operátor nélkül az ujra címke
    többször lenne definiálva.

58
  • Makró definíció belsejében lehet másik makró
    definíció is. A belso makró definíció csak a
    külso makró meghívása után jut érvényre, válik
    láthatóvá. Pl.
  • shifts macro OPNAME makrót
    definiáló makró
  • OPNAMES MACRO OPERANDUS,N
  • mov cl, N
  • OPNAME OPERANDUS,cl
  • ENDM
  • endm

59
  • shifts macro OPNAME makrót
    definiáló makró
  • OPNAMES MACRO OPERANDUS,N
  • mov cl, N
  • OPNAME OPERANDUS,cl
  • ENDM
  • endm
  • Ha ezt a makrót felhívjuk pl.
  • shifts ROR
  • akkor a
  • RORS MACRO OPERANDUS,N
  • mov cl, N
  • ROR OPERANDUS,cl
  • ENDM
  • makró definíció generálódik.

60
  • RORS MACRO OPERANDUS,N
  • mov cl, N
  • ROR OPERANDUS,cl
  • ENDM
  • Mostantól meghívható a RORS makró is, pl.
  • RORS AX, 5
  • aminek a hatása
  • mov cl, 5
  • ROR AX,cl

61
  • Makró definíció belsejében meghívható az éppen
    definiálás alatt lévo makró is (a makró hívás
    ezáltal rekurzívvá válik).
  • PUSHALL macro reg1,reg2,reg3,reg4,reg5
  • IFNB ltreg1gt ha a paraméter nem üres
  • push reg1 az elso regiszter mentése
  • PUSHALL reg2,reg3,reg4,reg5 rekurzió
  • ENDIF
  • ENDM
  • Most pl. a
  • PUSHALL ax, bx, cx
  • makró hívás hatása
  • push ax
  • push bx
  • push cx

62
  • PUSHALL macro reg1,reg2,reg3,reg4,reg5
  • IFNB ltreg1gt ha a paraméter nem üres
  • push reg1 az elso regiszter mentése
  • PUSHALL reg2,reg3,reg4,reg5 rekurzió
  • ENDIF
  • ENDM
  • PUSHALL ax, bx, cx
  • makró hívás hatása
  • push ax
  • PUSHALL bx, cx
  • az újabb hívás hatása
  • push bx
  • PUSHALL cx
  • az újabb hívás hatása
  • push cx
  • PUSHALL
  • ennek hatására nem generálódik semmi.

63
  • FL_CALLELJ 0
  • CALLELJ macro Eljárást beépíto és felhívó
    makró
  • LOCAL FIRST nem lenne fontos
  • IF FL_CALLELJ a 2. hívástól igaz
  • call Elj elég felhívni az eljárást
  • EXITM makró helyettesítés vége
  • ENDIF
  • FL_CALLELJ 1 csak az elso híváskor
  • JMP FIRST jut érvényre
  • Elj proc eljárás deklaráció
  • ...
  • ret
  • Elj endp
  • FIRST call Elj az eljárás felhívása
  • endm

64
  • Az elso CALLELJ hívás hatására az
  • FL_CALLELJ 1
  • JMP ??0000
  • Elj proc
  • ...
  • ret
  • Elj endp
  • ??0000 call Elj
  • utasítások generálódnak (??0000 a FIRST-bol
    keletkezett).

65
  • A további CALLELJ hívások esetén csak egyetlen
    utasítás, a
  • call Elj
  • utasítás generálódik.
  • A megoldás elonye, hogy az eljárás csak akkor
    része a programnak, ha a program tartalmazza az
    eljárás felhívását is, és mégsem kell törodjünk
    azzal, hogy hozzá kell-e szerkesztenünk a
    programhoz vagy se.

66
  • Megváltoztathatunk egy makró definíciót azáltal,
    hogy újra definiáljuk.
  • Makró definíción belül elofordulhat másik makró
    definíció.
  • E két lehetoség kombinációjából adódik, hogy a
    makró definíción belül megadhatunk ugyanarra a
    makró névre egy másik definíciót, ezáltal
    készítheto olyan makró, amely átdefiniálja
    önmagát.
  • Az önmagát átdefiniáló makrók esetében a belso és
    külso definíciót lezáró ENDM utasítások között
    egyetlen utasítás sem szerepelhet még kommentár
    sem!

67
  • Önmagát átdefiniáló makró (az elozo feladat
    másik megoldása)
  • CALLELJ2 macro külso makró definíció
  • jmp FIRST
  • Elj2 proc eljárás deklaráció
  • ...
  • ret
  • Elj2 endp
  • FIRST call Elj2 eljárás hívás
  • CALLELJ2 MACRO belso makró definíció
  • call Elj2 eljárás hívás
  • ENDM belso makró definíció vége
  • endm külso makró definíció vége

68
  • CALLELJ2 elso hívásakor a kifejtés eredménye
  • jmp FIRST
  • Elj2 proc eljárás deklaráció
  • ...
  • ret
  • Elj2 endp
  • FIRST call Elj2 eljárás hívás
  • CALLELJ2 MACRO belso makró definíció
  • call Elj2 eljárás hívás
  • ENDM belso makró definíció vége

69
  • A kifejtés CALLELJ2 újabb definícióját
    tartalmazza, ez felülírja az eredeti definíciót,
    és a továbbiak során ez a definíció érvényes. Ez
    alapján a késobbi CALLELJ2 hívások esetén
  • call Elj2
  • a kifejtés eredménye.
  • Megjegyezzük, hogy most is szerencsésebb lett
    volna a FIRST címkét lokálissá tenni. Igaz, hogy
    csak egyszer generálódik, de így a CALLELJ2 makró
    használójának tudnia kell, hogy a FIRST címke már
    foglalt!

70
  • Ha egy M_név makró definíciójára nincs szükség a
    továbbiak során, akkor a
  • PURGE M_név
  • pszeudo utasítással kitörölhetjük.

71
  • Feladatok
  • Milyen utasítások érhetok el operációs rendszer
    szinten?
  • Mi az overlay technika lényege?
  • Mi a virtuális címtartomány?
  • Mi a fizikai címtartomány?
  • Mi a lap és mi a lapkeret?
  • Mi a lapozás?
  • Mi a memória térkép (laptábla)?
  • Mi az MMU?
  • Hogy muködik az asszociatív memória?
  • Mi a laphiány?
  • Mi a kérésre lapozás?
  • Mi a munka halmaz (working set)?

72
  • Feladatok
  • Mikor alakul ki vergodés?
  • Milyen lapkezelési eljárásokat ismer?
  • Mi a belso elaprózódás?
  • Mi az elonye, és mi a hátránya a kis lapméretnek?
  • Mit nevezünk szegmentálásnak?
  • Hogy valósítható meg a szegmentálás?
  • Mik a szegmentálás elonyei?
  • Mi a külso elaprózódás?
  • Mi az összepréselés (compaction)?
  • Hogy valósul meg a szegmens címzés a Pentium
    4-en?
  • Mi a szelektor?
  • Milyen információt tartalmaz a Pentium 4
    szelektora?
  • Milyen mezoket tartalmaz a kódszegmensek leírója?

73
  • Feladatok
  • Mire szolgál az LDT (Local Descriptor Table) és a
    DDT (Global Descriptor Table)?
  • Hogy képzodik a lineáris cím?
  • Hogy valósul meg Pentium 4-en a virtuális címzés?
  • Milyen a Pentium 4 védelmi rendszere?
  • Hogy hívható más védelmi szintu eljárás?
  • Jellemezze az UltraSparc III virtuális
    memóriáját!
  • Mi a TLB (Translation Lookaside Buffer)?
  • Milyen memóriában van a TLB?
  • Mi történik TLB hiány esetén?
  • Hogy szervezett a TSB (Translation Storage
    Buffer)?
  • Mi történik TSB hiány esetén?
  • Hasonlítsa össze a virtuális memóriát a gyorsító
    tárral!

74
  • Feladatok
  • a 7
  • b 2
  • c equ a shl b
  • mov cx, 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ékelodik 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?

75
  • Feladatok
  • Hasonlítsa össze a makrót az eljárással!
  • Mikor célszeru makrót alkalmazni eljárás helyett?
  • Mi a makro definíció?
  • Mi a makró fej?
  • Mi a makró törzs?
  • Mi a makró hívás?
  • Mi a makró kifejtés?
  • Mi a (formális) paraméter?
  • Mi az aktuális paraméter (argumentum)?
  • Mely karakterek játszanak speciális szerepet
    makró kifejtéskor?
  • Melyik karakternek mi a szerepe? Adjon példát
    rájuk!
  • Mi a szerepe a LOCAL pszeudó utasításnak?

76
  • Feladatok
  • Adjon példát makró hívást tartalmazó makró
    definícióra!
  • Adjon példát makró definíciót tartalmazó makró
    definícióra!
  • Mit kell tudni azokról a makró definíciókról,
    amelyek egy másik makró definícióban találhatók?
  • Adjon példát olyan makró definícióra, amely
    tartalmazza saját hívását!
  • Adjon példát olyan makró definícióra, amely
    tartalmazza saját átdefiniálását!
  • Mit kell tudni az önmaguk átdefiniálását
    tartalmazó makró definíciókról?
  • Mi a hatása a PURGE pszeudó utasításnak?
Write a Comment
User Comments (0)
About PowerShow.com