PROGRAMOWANIE WIZUALNE metoda tworzenia programu za pomoc narzdzi

  • Slides: 16
Download presentation
PROGRAMOWANIE WIZUALNE ● metoda tworzenia programu za pomocą narzędzi umożliwiających wybór standardowych elementów z

PROGRAMOWANIE WIZUALNE ● metoda tworzenia programu za pomocą narzędzi umożliwiających wybór standardowych elementów z menu z automatyczną generacją dużej części kodu źródłowego Przycisk

MS Windows • wieloprocesowy system operacyjny • sprzęg użytkowy C kilka tysięcy funkcji •

MS Windows • wieloprocesowy system operacyjny • sprzęg użytkowy C kilka tysięcy funkcji • programowanie współbieżne START NIE czy jest komunikat obsługa komunikatu TAK czy kom. zakończenia TAK STOP NIE

Tworzenie Programów dla Środowiska MSWs Application Programming Interface (API) Software Development Kit (SDK) biblioteki

Tworzenie Programów dla Środowiska MSWs Application Programming Interface (API) Software Development Kit (SDK) biblioteki klas : OWL (Borland), MFC (Microsoft), ATL (Microsoft) przekład programu (. exe) zawiera : — treść binarną (rozkazy, dane) — zasoby : ikony, kursory, mapy bitowe, menu, akceleratory, dialogi, teksty

MSWs API MFC API Aplikacja Źródłowa

MSWs API MFC API Aplikacja Źródłowa

class Baza { public : int x; } // class Potomek : public Baza

class Baza { public : int x; } // class Potomek : public Baza { public: int y; } // Baza* ob = new Potomek; ob -> x; // ok ob -> y; // błąd (( Potomek* ) ob ) -> y ; // ok

Środowisko . NET VB C# C++ . . . L CVB CC# CC++ .

Środowisko . NET VB C# C++ . . . L CVB CC# CC++ . . . CL PAKIET ( CIL . exe , . dll )

N E PAKIET CLASS LIBRARY T. F LOADER r a JITC m e w

N E PAKIET CLASS LIBRARY T. F LOADER r a JITC m e w BIN EXEC o r k

§ pakiet ( assembly ) a - manifest b - metadane opisujące typy c

§ pakiet ( assembly ) a - manifest b - metadane opisujące typy c - przekład w CIL mogą być d - zasoby w wielu plikach pakiet. exe PE Header a + b + c + d Start

§ wspólny system typów CTS § wspólna specyfikacja języka CLS § biblioteka klas platformy

§ wspólny system typów CTS § wspólna specyfikacja języka CLS § biblioteka klas platformy FCL § przestrzenie nazw § zbieranie śmieci § wspólne środowisko wykonawcze CLR § kod zarządzany i nie zarządzany

CIL (MSIL) class Program { static int Main(string[] args) { int a = 5,

CIL (MSIL) class Program { static int Main(string[] args) { int a = 5, b, c; IL_0000: ldc. i 4. 5 IL_0001: stloc. 0 IL_0002: ldloc. 0 c = a + 3; IL_0003: ldc. i 4. 3 b = c + 2; IL_0004: add return b; IL_0006: ldloc. 2 } IL_0008: add } IL_0005: stloc. 2 IL_0007: ldc. i 4. 2 IL_0009: stloc. 1 IL_000 a: ldloc. 1 IL_000 b: ret

ILDASM C: Program FilesMicrosoft Visual Studio 8SDKv 2. 0Bin . method private hidebysig static

ILDASM C: Program FilesMicrosoft Visual Studio 8SDKv 2. 0Bin . method private hidebysig static int 32 Main(string[] args) cil managed { . entrypoint // Code size 12 (0 xc) . maxstack 2 . locals init ([0] int 32 a, [1] int 32 b, [2] int 32 c) // MSIL instructions } // end of method Program: : Main

Plik. exe ( Release ) File size : 16384 PE header size : 4096

Plik. exe ( Release ) File size : 16384 PE header size : 4096 (496 used) (25. 00%) PE additional info : 1075 ( 6. 56%) Num. of PE sections : 3 CLR header size : 72 ( 0. 44%) CLR meta-data size : 1404 ( 8. 57%) CLR additional info : 0 ( 0. 00%) CLR method headers : 13 ( 0. 08%) Managed code : 19 ( 0. 12%) !!!!! Data : 8192 (50. 00%) Unaccounted : 1513 ( 9. 23%)

Asembler int a = 5, b, c; 00000015 xor edi, edi // a 00000017

Asembler int a = 5, b, c; 00000015 xor edi, edi // a 00000017 xor esi, esi // b 00000019 xor ebx, ebx // c 0000001 b mov edi, 5 // a c = a + 3; 00000020 lea eax, [edi+3] 00000023 mov ebx, eax b = c + 2; 00000025 lea eax, [ebx+2] 00000028 mov esi, eax

class Program { static int Main(string[] args) { double a = 5, b, c;

class Program { static int Main(string[] args) { double a = 5, b, c; c = a + 3; b = c + 2; return 0; } }

 double a = 5, b, c; 0000001 a fldz 0000001 c fstp qword

double a = 5, b, c; 0000001 a fldz 0000001 c fstp qword ptr [esp+8] // a = 0 00000020 fldz 00000022 fstp qword ptr [esp+10 h] // b = 0 00000026 fldz 00000028 fstp qword ptr [esp+18 h] // c = 0 0000002 c fld dword ptr ds: [03731140 h] // 5 00000032 fstp qword ptr [esp+8] // a = 5 c = a + 3; 00000036 fld qword ptr [esp+8] 0000003 a fadd dword ptr ds: [03731148 h] // a + 3 00000040 fstp qword ptr [esp+18 h] b = c + 2; 00000044 fld qword ptr [esp+18 h] 00000048 fadd dword ptr ds: [03731150 h] // b + 2 0000004 e fstp qword ptr [esp+10 h]

MS Visual Studio ( MFC, C++ ) § 1. 0 , . . .

MS Visual Studio ( MFC, C++ ) § 1. 0 , . . . , 6. 0 MS Visual Studio. NET ( FCL, C# ) § 2002 , 2003 , 2005 , 2008, 2010, 2012, 2013, 2015 NET. Framework , NET. Compact Framework § 1. 0 , 2. 0 , 3. 0 , 3. 5, 4. 0, 4. 5, 5. 0