limbă intermediară

Să considerăm un limbaj intermediar (IL), mai în detaliu. Codul IL este independent de platforma pe care executarea se va realiza. În acest caz, compilatorul va genera un cod pentru platforma .NET 1L, indiferent de ce limbaj de programare (Delphi, C #, Visual Basic.NET, Eiffel, etc.), folosite pentru a crea program. Ca un exemplu, vom crea un program care adaugă două numere. Singurul lucru este că vom fi în stare să facă - adăugați numerele 2 și 3. Următoarele este o listă cu codul programului în limba Delphi, nu știu limba Delphi, puteți înțelege semnificația acestui program și pe structura sintactică în timp ce nu să acorde o atenție, program de suma; £ $ APPTYPE CONSOLA> utilizări

SumXY: = X + Y; Write (SumXY) i Read] n; end.

După compilarea programului fișierul executabil Sum.exe este primit. Acest fișier nu este un fișier executabil obișnuit și este ansamblul, care se poate face numai pe platforma .NET. În interiorul acestui fișier sunt evidente, biblioteci, comenzile IL și metadatele care descriu suma de program, care sunt ușor de văzut prin intermediul programului ildasm.exe (Fig. 2.2 și 2.3). Acest lucru va fi discutat în continuare.

limbă intermediară

Fig. 2.2. Suma componentelor de program în fereastra programului

În prima etapă nu va trebui să se ocupe cu sursa de IL, deci nu încercați să înțeleagă ce este scris acolo. Doar verifica pentru tine cât de ușor este de a avea acces la toată adunarea, și să învețe tot ceea ce este necesar pentru înțelegerea funcționării elementelor de asamblare. În acest caz, puteți vedea în mod clar că compilatorul Delphi generează este set de comenzi nu sunt dependente de platformă, și codul IL.

Dar de ce Microsoft a mers spre crearea de IL 1L și care sunt avantajele peste convenționale platforma comenzi dependente de apelare? Unul dintre avantajele care au fost deja menționate - este posibilitatea unei interoperabilității limbaj complet. Deoarece orice cod în orice limbaj de programare .NET este compilat într-un set standard de instrucțiuni IL, probleme cu interacțiunea dintre blocuri IL cod nu va fi. Interacțiunea se va realiza la nivel binar, care este cheia de mare viteză.

Un alt posibil avantaj al - indiferent de platforma hardware. Putem presupune că mediul NET va fi extins la o varietate de platforme de calculator și sisteme de operare (altele decât Windows), care sa întâmplat deja cu limbajul Java.

limbă intermediară

Fig. 2.3. Programul de cod Suma în limba IL

Deoarece conțin ansambluri independente de platformă de cod IL, și a alerga echipa final, proiectat pentru o anumită platformă, atunci cineva trebuie să preia sarcina de IL compilare pentru echipa platforma dorită. Acest lucru se ocupă cu compilator timpul de execuție (JIT). compilator JIT este o parte srely de execuție .NET. Folosind codul de 1L, dezvoltatorii nu se poate gândi despre caracteristicile arhitecturii procesorului computerului specific - aceste caracteristici vor fi incluse radioterapie.

Compilat de 1L-platforma specifică echipa compilator LT se amestecă în cache, care accelerează cererea. De exemplu, primul apel al oricărei JIT metode compilare referitoare la codul IL pentru metoda din comenzile specifice platformei. Cu apeluri repetate la această metodă LT nu vor mai fi angajate în elaborarea, ci doar să ia codul gata din cache.