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.

Slides:



Advertisements
Hasonló előadás
C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Advertisements

„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
Hatékonyságvizsgálat, dokumentálás
C++ programozási nyelv Gyakorlat hét
Piacképes programozói tudás a középiskolában
Humánkineziológia szak
Algoritmus és programozás
3. A programozás eszközei, programozás-technikai alapismeretek
Számítógépek felépítése 3. előadás CPU, utasítás ciklus, címzés
Budapesti Műszaki és Gazdaságtudományi Egyetem Elektronikus Eszközök Tanszéke A programozás alapjai 1. (VIEEA100) 9. előadás.
JavaScript.
Turbo Pascal Változók.
11. előadás (2005. május 10.) A make segédprogram Alacsony szintű műveletek és bitmezők Fájl, katalógus rendszer hívások 1.
6. előadás (2005. április 5.) Struktúrák Úniók Új adattípus definíálása Dinamikus memória foglalás 1.
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
kötelező program, SZÁMONKÉRÉSEK
Mérés és adatgyűjtés Kincses Zoltán, Mingesz Róbert, Vadai Gergely 10. Óra MA-DAQ – Műszer vezérlése November 12., 15. v
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
C A C nyelv utasításai.
A verem működése fpga-n
Informatika matematika speciális tagozat - tematika évfolyam -
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
6. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
ISZAM III.évf. részére Bunkóczi László
1 Operációs rendszerek Az NT folyamatok kezelése.
A bemutató címe akár kétsoros is lehet, vagy még hosszabb. Szerzők, intézmények felsorolása tetszőleges sorrendben, okosan, szépen. A betűméret automatikusan.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Címzési módok, utasítások a CPU-ban Címértelmezés műv. kódadat műv. kód 0 1 cím adat cím adat közvetlen (immediat) adatmegadás rejtett (inheritent),
V 1.0 ÓE-NIK, Programozás I. A Microsoft Visual Studio 2010 használata.
Számítógép architektúra
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úra
szakmérnök hallgatók számára
Programozási Nyelvek (C++) Gyakorlat Gyak 02.
Ismétlés A pascal program szerkezete: program programnev; Programfej
Adatszerkezetek 1. előadás
Számítógép architektúrák
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
Operátorok Értékadások
Programozási nyelvek.
Készítette: Csíki Gyula
Egy második generációs gép (az IBM 7094) felépítése
Objektum orientált programozás
Podoski Péter és Zabb László. Bevezető Algoritmus-vizualizáció témakörében végeztünk kutatásokat és fejlesztéseket Felmértük a manapság ismert eszközök.
Objektum orientált programozás
CUDA C/C++ programozás Egyéb eszköztárak vegyesen A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt.
Virtuális Méréstechnika Sub-VI és grafikonok 1 Makan Gergely, Vadai Gergely v
Mérés és adatgyűjtés laboratóriumi gyakorlat - levelező Sub-VI és grafikonok 1 Mingesz Róbert V
A Visual Basic nyelvi elemei
Funkciós blokkok A funkciós blokkok áttekintése Az alkalmazás előnyei.
Gazdasági informatikus - Szövegszerkesztés 1 Hosszú dokumentumok kezelése.
Gráfok ábrázolása teljesen láncoltan
Software - Ismeretek Avagy mitől megy a Hardware.
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.
Algoritmizálás, adatmodellezés
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.
Memóriakezelés feladatok Feladat: 12 bites címtartomány. 0 ~ 2047 legyen mindig.
Excel programozás (makró)
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.
1 Mivel foglalkoz(t)unk a laborokon? 1.Labor: Word alapok Excel alapok: Excel alapok: Cellahivatkozás, munkalapfüggvény, diagram varázsló, trendvonal 2.
NJSzT Nemes Tihamér Országos Középiskolai Sámítástechnikai Tanulmányi Verseny.
Gábor Dénes Számítástechnikai Emlékverseny
Programozási nyelvek Programozási alapismeretek
A CLIPS keretrendszer
Bevezetés a programozásba Algoritmikus gondolkodás
Előadás másolata:

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

BBTE, Alkalmazások és operációs rendszerek optimizálása 2 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

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 3 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

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 4 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ó

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

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 6 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.

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 7 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

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 8 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 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

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 9 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_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

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 10 Kérdéseket várunk! szeminárium / labor órákon lukacs (at) cs. ubbcluj. ro robu (at) cs. ubbcluj. ro

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 11 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)

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 12 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

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 13 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 2 n -x tárolódik n-1 biten

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 14 x86-os 16 bites memória címzés szegmens 16 :offszet 16  lineáris-cím 20 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

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 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

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 16 A verem működése paraméterek átadása temporális tárolási hely, lokális változók

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 17 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

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

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 19 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

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 20 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

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 21 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 AND01OR XOR01NOT

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 22 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

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 23 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

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 24 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

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 25 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

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 26 Kérdéseket várok!

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 27 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

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 28 Lehetsé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

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 29 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

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 30 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, 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

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 31 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

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 32 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

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 33 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ó

2006BBTE, Alkalmazások és operációs rendszerek optimizálása 34 Köszönöm a figyelmet!