bevezetés. elvárások

34
Alkalmazások és operációs rendszerek optimizálása „Babeş-Bolyai” Tudományegyetem, Matematika-Informatika Kar Bevezetés. Elvárások előadás dr. Robu Judit szeminárium drd. Lukács Sándor 1 2006

Upload: bracha

Post on 15-Jan-2016

41 views

Category:

Documents


0 download

DESCRIPTION

Bevezetés. Elvárások. 1. előadás dr. Robu Judit szeminárium drd. Lukács Sándor. 2006. Bevezető. a kurzus „tematikai” célja: egy rövid betekintőt nyújtani „hardverközeli” programozási területekre assembly szintű optimalizálások Windows NT driverek fejlesztése - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Bevezetés. Elvárások

Alkalmazások és operációs rendszerek optimizálása

„Babeş-Bolyai” Tudományegyetem, Matematika-Informatika Kar

Bevezetés. Elvárások

előadás

dr. Robu Juditszeminárium

drd. Lukács Sándor

1

2006

Page 2: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

2Bevezető

a kurzus „tematikai” célja: egy rövid betekintőt nyújtani „hardverközeli” programozási területekre assembly szintű optimalizálások Windows NT driverek fejlesztése

a kurzusban szereplő témák egyik közös pontja: mindenikük valamilyen módon elvárja a kíválóan megírt, részletekbe menően optimizált programozást

a kurzus „gyakorlatias” célja: minden hallgató aktívan vegyen részt egy precízen, rendszerezetten megírt projekt fejlesztésében

Page 3: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

3Előadások a félév során 1

2. Programok fordítása, szerkesztése, végrehajtása (Visual C, Windows)

3. x86-os védett üzemmód (Windows NT alatt) 4. Az AMD64 architektúra bemutatása 5. Programok visszafejtése, dizassembly.

Debuggerek és Profilerek 6. SIMD MMX assembly programozás 7. SIMD SSE assembly programozás

Page 4: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

4Előadások a félév során 2

8. Forráskód szintű optimizálások C-ben 9. Assembly szintű optimizálások 10. Windows NT kernel architektúra 11. Windows NT driverek fejlesztése I 12. Windows NT driverek fejlesztése II

majd elválik, mi lesz igazából jó

Page 5: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

5Általános elvárások

nincs félév végén elméleti vizsga a vizsga helyett féléves projekt + dokumentációk

előadásra járni nem kötelező minden előadás végén 1 kérdéses teszt és egyben

jelenlét íródik; egy helyes válasz 0,1 pont szemináriumokra járni általában nem kötelező

a szemináriumokon időnként be kell mutatni a projekt és a dokumentációk helyzetét

szemináriumok (laborok) szabad beszélgetés az előadás témáival és a projektekkel kapcsolatosan

Page 6: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

6Vizsgára leadandók

egy csoportos projekt (2-4 személy) egy, a projekthez tartozó dolgozat

az elméleti és technikai háttér bemutatása az implementáció fontosabb-specifikusabb részei felhasználói dokumentáció

egy programozói dokumentációt minden egyes modul, függvény, struktúra stb. szerepe,

szemantikai és funkcionális leírása javasolt a Doxygen generátor használata (C-re)

rövid (max. 10 perces) power-point bemutató mindez a 12-ik tanhét végig leadandó mindenik rész kötelező; amennyiben bármelyik rész hiányzik, vagy

nem megfelelő színvonalú, a vizsga végső jegye 4, függetlenül a további részek minőségétől, jelenléttől stb.

Page 7: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

7A dolgozattal kapcsolatos elvárások

könnyen olvasható, átlátható, követhető elvártak: absztrakt, tartalomjegyzék, bibliográfia

a bibliográfiai bejegyzésekről egy-egy rövid bemutatót várunk el (5-15 sor)

a bibliográfiára mutató referenciák legyenek pontosak (forrástól függően oldal szám, fejezet szám, alcím)

Times New Roman 12 pontos betűtípus, másfeles sorköz, ékezetes karakterek, jól struktúrált van egy segítő sablon (nem kötelező használni)

a programozói dokumentációhoz javasolt a Doxygen nem kötelező: másképpen megírt alapos, pontos

dokumentációt is elfogadunk

Page 8: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

8Projekttel kapcsolatos elvárások 1

minden projekt többszemélyes (2-4) minden hallgató egyaránt kódol és dokumentál a leadott dokumentációban és a forrásállományok fejlécében

(history) legyen pontosan leírva, ki mikor mit írt-kódolt a projektek nagy része C-ben lesz megírva elvárt az alaposan megírt, könnyen olvasható, rendszerezett,

helyesen tördelt, részletesen kommentelt forráskód ezekre extrém mértékben érzékenyek vagyunk, bármilyen

mulasztás szigorúan megbírálódik egy projekt Visual C/C++ 2005 alatt, Warning Level 4-el fordítva 0

hibával és 0 figyelmeztetéssel fordítható kell legyen részben fel lehet GNU GPL, Mozilla Public, BSD stb. licenszű

forráskódot használni a projekthez, a kódrész pontos megjelölésével

Page 9: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

9Projekttel kapcsolatos elvárások 2

egy függvény maximum 50 soros lehet minden függvény visszatérési értékét ellenőrizni kell

kivéve alapvető eseteket, mint pl. printf minden paraméter értékét ellenőrizni kell (minimum ASSERT) a struktúrák, felsorolások és típusok nevei mind nagybetűvel íródnak

MY_LITTLE_STRUCT, MY_BIG_ENUM, DWORD a függvények elnevezése kapitálisokkal történik

MyShortFunction, MyCrazyIterativeStub a paraméterek mind nagy betűvel keződnek és SAL-al íródnak

(__in int Alma, __in_opt DWORD Korte, __out_deref DWORD *Kimenet) a lokális változók mind kisbetűvel kezdődnek

int alma, int kekAlma, int pirosZoldAlma minden if, while, for stb. ciklust kötelezően blokk utasítás követ, még

akkor is, ha csak egy utasítást tartalmaz

Page 10: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

10Kérdéseket várunk!

szeminárium / labor órákon

www.cs.ubbcluj.ro/~robu/optimizalas

lukacs (at) cs . ubbcluj . ro robu (at) cs . ubbcluj . ro

Page 11: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

11Elvárt előzetes ismeretek

elvárt: az x86-os ASM ismeret a C nyelv alapos ismerete, valamint a Visual C

környezet ismerete (C++ jól fog) a Win32 API programozás alapvető ismerete dokumentációk olvasása, információk

keresése (MSDN, Google, fejlesztői fórumok)

Page 12: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

12x86-os architektúra

8 általános regiszter 6 szegmens regiszter valós üzemmód (real mode)

16 bites, DOS védett üzemmód (protected mode)

32 bites, Windows, Linux (E)FLAGS CS:(E)IP – aktuális kód DS, ES – adat SS:(E)SP – verem FS, GS – speciális szerep (E)SI, (E)DI – index regiszterek

Page 13: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

13Komplementer kód

egész értékek ábrázolása gyors és egyszerű aritmetikai műveletek

legnagyobb helyértékű bit = előjel bit pozitív érékek

az előjel bit 0 a pozitív érték tárolódik n-1 biten

negatív érékek az előjel bit 1 2n-x tárolódik n-1 biten

Page 14: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

14x86-os 16 bites memória címzés

szegmens16:offszet16 lineáris-cím20

SSSS0 + OOOO LLLLL

near és far pointerek memória modellek (DOS, Turbo Pascal stb.)

tiny(nn), small(nn), medium(fn), compact(nf), large(ff) a memória címzése és az operandusok mérete

egymástól függetlenül lehet 16 illetve 32 bites

Page 15: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

1532 bites regiszterek elérése

mindig elérhetők, 16 bites módban is 0x66 prefix: 16 bites ↔ 32 bites operandusok 0x67 prefix: 16 bites ↔ 32 bites címzés

Page 16: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

16A verem működése

paraméterek átadása temporális tárolási hely, lokális változók

Page 17: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

17Paraméterek átadása

Pascal konvenció (pascal) paraméterek a megadott sorrendben a hivott fél takarítja a vermet

C konvenció (cdecl) paraméterek fordított sorrendben a hivó fél takarítja a vermet

stdcall konvenció paraméterek fordított sorrendben a hivott fél takarítja a vermet

register / fastcall konvenció az első két paraméter ECX, EDX (MS specifikus) általában a hivott fél takarítja a vermet

Page 18: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

18EFLAGS

Page 19: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

19Adatmozgató utasítások

MOV reg, reg MOV reg, mem MOV mem, reg MOV reg, imm MOV mem, imm XCHG r/m, r/m MOVSX r/m, r/m MOVZX r/m, r/m

PUSH r/m/i POP r/m PUSHA, POPA PUSHF, POPF BSWAP r32 XLAT

nem módosítják a flageket

Page 20: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

20Aritmetikai utasítások

ADD, SUB r/m, r/m/i ADC, SBB r/m, r/m/i a CF-et használják átviteli bitként INC, DEC r/m MUL r/m AX/DX:AX/EDX:EAX ← AL/AX/EAX*r/m DIV r/m AL ← AX DIV r/m AH ← AX MOD r/m IMUL r/m AX/DX:AX/EDX:EAX ← AL/AX/EAX*r/m IMUL reg,r/m reg ← reg * r/m IMUL reg,imm reg ← reg * imm IMUL reg,r/m,imm reg ← r/m * imm IDIV r/m AL ← AX DIV r/m AH ← AX MOD r/m CBW, CWD, CWDE, CDQ NEG r/m

Page 21: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

21Logikai utasítások

AND r/m, r/m/i OR r/m, r/m/i XOR r/m, r/m/i NOT r/m

TEST r/m, r/m/i

módosítják a SF, ZF és PF flaget

AND 0 1 OR 0 1

0 0 0 0 0 1

1 0 1 1 1 1

XOR 0 1 NOT 0 1

0 0 1 1 0

1 1 0

Page 22: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

22Bitmanipuláló utasítások 1

bit eltolás – SHL, SAL, SHR, SAR r/m,i8 vagy r/m,CL a legutolsó kimenő bit CF-be kerül

dupla eltolás – SHLD, SHRD r/m,r,i8 vagy r/m,r,CL bitforgatás – ROL, ROR, RCL, RCR bitteszt – BT, BTS, BTR, BTC

a tesztelt bit CF-be kerül bitkeresés – BSF, BSR r,r/m

legkisebb/legnagyobb helyértékű 1 bit keresése ZF = 1 ha nincs r/m-ben 1-es bit

Page 23: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

23Végrehajtást vezérlő utasítások

feltétel nélküli ugrás – JMP címke eljáráshívás – CALL címke RET vagy RET i16 megszakításhívás – INT i8 IRET összehasonlítás – CMP r/m,r/m/i feltételes ugrás – Jcc címke

JC, JNC, JZ, JNZ, JP, JNP, JS, JNS, JO, JNO, ... előjeles – JL, JG, JLE, JGE, JNL, JNG, ... előjel nélküli – JB, JA, JBE, JAE, JNB, JNA, ...

LOOP címke, LOOPZ címke (ZF=1), LOOPNZ címke (ZF=0) JCXZ címke, JECXZ címke

Page 24: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

24String utasítások, REP prefixek

DS:(E)SI forrás string ES:(E)DI cél string minden iteráció után nő (E)SI és (E)DI ha DF=0, csökken, ha DF=1

LODSB, LODSW, LODSD AL/AX/EAX ← DS:(E)SI STOSB, STOSW, STOSD ES:(E)DI ← AL/AX/EAX MOVSB, MOVSW, MOVSD ES:(E)DI ← DS:(E)SI CMPSB, CMPSW, CMPSD CMP DS:(E)SI, ES:(E)DI SCASB, SCASW, SCASD CMP AL/AX/EAX, ES:(E)DI

Page 25: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

25Speciális utasítások

CLC, STC, CMC CLD, STD CMPXCHG r/m, reg CMPXCHG8B m64 EDX:EAX ↔ m64 LDS, LES, LSS, LFS, LGS reg,farmem LEA reg,mem LAHF AH ← SF:ZF:0:AF:0:PF:1:CF IN AL/AX/EAX, i8 vagy AL/AX/EAX, DX OUT i8, AL/AX/EAX vagy DX, AL/AX/EAX NOP LOCK prefix

Page 26: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

26

Kérdéseket várok!

Page 27: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

27Lehetséges projektek 1

más javaslatokat is elfogadunk, előzetes megegyezés alapján

Dizassembler 3-4 személy 16, 32 és 64 bites kód SSE, SSE2, SSE3, MMX, FPU, 3DNow! tiszta kód szegmens visszafordítása PE és PE64 állományok visszafordítása eljárások, címkék feltérképezése fordítható kód készítése pontos és részletes paracs-sor interfész listingek

Page 28: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

28Lehetséges projektek 2

PE / COFF / LIB Viewer / Editor grafikus interfésszel 3-4 személy (jó ha van Visual C++ GUI tapasztalat,

esetleg Borland C++ Builder) fejlécek feltérképezése szekciók, importok, exportok (adat és kód) hex és raw dumpok, exportok és importok dizassembly 1 függvényre vagy teljes állományra

(NDISASM vagy előző projekt) elemzés egy állományon belül tetszőleges pozícióról fejlécek, szekciók, exportok stb. kimentése, betöltése

és módosítása

Page 29: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

29Lehetséges projektek 3

32/64 bites assembler 4 személy MS COFF kimenet (MS linker és Alink kompatibilitás) tiszta bináris kimenet Intel és AT&T szintaxis (2 frontend, FLEX / BISON) SSE, SSE2, SSE3, FPU, MMX, 3DNow! NASM (vagy MASM) kompatibilitási fordítás makrók támogatása

Page 30: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

30Lehetséges projektek 4

Bináris és N-áris adatstruktúrák 3 személy C és ASM kód implementálása a dokumentációban részletesen bemutatni az algoritmusokat általános C kód, könnyen adaptálható különböző adatstruktúrákra 32 bites egész, 64 bites egész és karakterlánc típusú kulcsok inicializálás, beszúrás, törlés, keresés, felszabadítás, egy adott

állapot helyességének ellenőrzése AVL fa, Piros-Fekete fa, Splay fa, bináris fa, B fa, B+ fa, 2-3 fa, 2-

3-4-5 fa, Hash tábla, duplán láncolt lista statisztikák készítése (beszúrások száma, kiegyenlítések száma,

futási idő stb.) teszt / statisztikát készítő programok

Page 31: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

31Lehetséges projektek 5

NT Driver Varázsló Visual Studio 2005 alá 3 személy egy főprojekt generálása (empty, basic skeleton,

minifilter, device I/O, talán WDM) kontroll projektek generálása Win32 library projektek generálása DDKBUILD, WDK, PREfast integrálás backup integrálás dinamikus verziószám stb. bővíthető, konfigurálható sablonok példa projektek

Page 32: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

32Lehetséges projektek 6

NT Kernel Explorer / Monitor driver4 személyGUI (Visual C++) és parancssor interfészCPU MSR regiszterek monitorizálásaIDT, GDT, lapozási táblák feltérképezéseprocesszek és teljes memória feltérképezéseregistry monitorizálástávoli PC monitorizálása

Page 33: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

33Lehetséges projektek 7

Statikus forráskód stíluselemző C-re2-3 személytördelési stílusváltozók és függvények elnevezésekommentálási stílusnagy hibatűrő képesség (hibás bemenet)konfigurálható stílusállományokautomatikus tördelési korrekció

Page 34: Bevezetés. Elvárások

2006BBTE, Alkalmazások és operációs rendszerek optimizálása

34

Köszönöm a figyelmet!