bevezet s elv r sok
Download
Skip this Video
Download Presentation
Bevezetés. Elvárások

Loading in 2 Seconds...

play fullscreen
1 / 34

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


  • 96 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Bevezetés. Elvárások' - bracha


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

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

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

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

slide26
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

slide34
Köszönöm a figyelmet!

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

ad