Bevezet s elv r sok
This presentation is the property of its rightful owner.
Sponsored Links
1 / 34

Bevezetés. Elvárások PowerPoint PPT Presentation


  • 58 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

Bevezetés. Elvárások

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Bevezet s elv r sok

Bevezetés. Elvárások

1

előadás

dr. Robu Judit

szeminárium

drd. Lukács Sándor

2006


Bevezet

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

  • 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

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


El ad sok a f l v sor n 1

Elő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

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


El ad sok a f l v sor n 2

Elő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ó

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


Ltal nos elv r sok

Á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

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


Vizsg ra leadand k

Vizsgá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.

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


A dolgozattal kapcsolatos elv r sok

A 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

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


Projekttel kapcsolatos elv r sok 1

Projekttel 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

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


Projekttel kapcsolatos elv r sok 2

Projekttel 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_optDWORD Korte, __out_deref DWORD *Kimenet)

  • a lokális változók mind kisbetűvel kezdődnek

    • intalma, intkekAlma, intpirosZoldAlma

  • 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

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


K rd seket v r un k

Ké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

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


Elv rt el zetes ismeretek

Elvá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)

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


X86 os architekt ra

x86-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

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


Komplementer k d

Komplementer 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

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


X86 os 16 bites mem ria c mz s

x86-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

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


32 bites regiszterek el r se

32 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

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


A verem m k d se

A verem működése

  • paraméterek átadása

  • temporális tárolási hely, lokális változók

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


Param terek tad sa

Paramé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

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


Eflags

EFLAGS

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


Adatmozgat 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

Adatmozgató utasítások

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


Aritmetikai utas t sok

Aritmetikai utasítások

  • ADD, SUB r/m, r/m/i

  • ADC, SBB r/m, r/m/ia CF-et használják átviteli bitként

  • INC, DEC r/m

  • MUL r/mAX/DX:AX/EDX:EAX ← AL/AX/EAX*r/m

  • DIV r/mAL ← AX DIV r/m AH ← AX MOD r/m

  • IMUL r/mAX/DX:AX/EDX:EAX ← AL/AX/EAX*r/m

  • IMUL reg,r/mreg ← reg * r/m

  • IMUL reg,immreg ← reg * imm

  • IMUL reg,r/m,immreg ← r/m * imm

  • IDIV r/mAL ← AX DIV r/m AH ← AX MOD r/m

  • CBW, CWD, CWDE, CDQ

  • NEG r/m

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


Logikai utas t sok

Logikai 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

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


Bitmanipul l utas t sok 1

Bitmanipulá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

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


V grehajt st vez rl utas t sok

Vé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

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


String utas t sok rep prefixek

String 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, LODSDAL/AX/EAX ← DS:(E)SI

  • STOSB, STOSW, STOSDES:(E)DI ← AL/AX/EAX

  • MOVSB, MOVSW, MOVSDES:(E)DI ← DS:(E)SI

  • CMPSB, CMPSW, CMPSD CMP DS:(E)SI, ES:(E)DI

  • SCASB, SCASW, SCASDCMP AL/AX/EAX, ES:(E)DI

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


Speci lis utas t sok

Speciális utasítások

  • CLC, STC, CMC

  • CLD, STD

  • CMPXCHG r/m, reg

  • CMPXCHG8B m64EDX:EAX ↔ m64

  • LDS, LES, LSS, LFS, LGS reg,farmem

  • LEA reg,mem

  • LAHFAH ← 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

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


Bevezet s elv r sok

Kérdéseket várok!

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


Lehets ges projektek 1

Lehetsé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

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


Lehets ges projektek 2

Lehetséges projektek 2

  • PE/COFF/LIB Viewer / Editorgrafikus 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

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


Lehets ges projektek 3

Lehetsé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

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


Lehets ges projektek 4

Lehetsé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

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


Lehets ges projektek 5

Lehetsé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

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


Lehets ges projektek 6

Lehetséges projektek 6

  • NT Kernel Explorer / Monitor driver

    • 4 személy

    • GUI (Visual C++) és parancssor interfész

    • CPU MSR regiszterek monitorizálása

    • IDT, GDT, lapozási táblák feltérképezése

    • processzek és teljes memória feltérképezése

    • registry monitorizálás

    • távoli PC monitorizálása

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


Lehets ges projektek 7

Lehetséges projektek 7

  • Statikus forráskód stíluselemző C-re

    • 2-3 személy

    • tördelési stílus

    • változók és függvények elnevezése

    • kommentálási stílus

    • nagy hibatűrő képesség (hibás bemenet)

    • konfigurálható stílusállományok

    • automatikus tördelési korrekció

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


Bevezet s elv r sok

Köszönöm a figyelmet!

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


  • Login