Net framework 5, а также среды Visual Studio 2012 и C#


Как исполняющая среда разрешает



Download 6,27 Mb.
Pdf ko'rish
bet79/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   75   76   77   78   79   80   81   82   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

Как исполняющая среда разрешает 
ссылки на типы
В начале главы 2 вы видели следующий исходный текст:
public sealed class Program {
public static void Main() {
System.Console.WriteLine("Hi");

}
Допустим, в результате компиляции и построения этого кода получилась сборка 
Program exe
. При запуске приложения происходит загрузка и инициализация CLR. 
Затем CLR сканирует CLR-заголовок сборки в поисках атрибута 
MethodDefToken

идентифицирующего метод 
Main
, представляющий точку входа в приложение. 
CLR находит в таблице метаданных 
MethodDef
смещение, по которому в файле на-
ходится IL-код этого метода, и компилирует его в машинный код процессора при 
помощи JIT-компилятора. Этот процесс включает в себя проверку безопасности 
типов в компилируемом коде, после чего начинается исполнение полученного ма-
шинного кода. Далее показан IL-код метода 
Main
. Чтобы получить его, я запустил 
ILDasm exe
, выбрал в меню 
View
команду 
Show
Bytes
и дважды щелкнул на методе 
Main
в дереве просмотра.
.method public hidebysig static void Main() cil managed
// SIG: 00 00 01
{
.entrypoint
// Method begins at RVA 0x2050
// Code size 11 (0xb)
.maxstack 8
IL_0000: /* 72 | (70)000001 */
ldstr "Hi" 
IL_0005: /* 28 | (0A)000003 */
call void [mscorlib]System.Console::WriteLine(string)
IL_000a: /* 2A | */
ret 
} // end of method Program::Main
Во время JIT-компиляции этого кода CLR обнаруживает все ссылки на типы 
и члены и загружает сборки, в которых они определены (если они еще не загру-


112
Глава.3 .Совместно.используемые.сборки.и.сборки.со.строгим.именем
жены). Как видите, показанный код содержит ссылку на метод 
System.Console.
Write-Line
: команда 
Call
ссылается на маркер метаданных 
0A000003
. Этот маркер 
идентифицирует запись 3 таблицы метаданных 
MemberRef
(таблица 
0A
). Просма-
тривая эту запись, CLR видит, что одно из ее полей ссылается на элемент таблицы 
TypeRef
(описывающий тип 
System.Console
). Запись таблицы 
TypeRef
направляет 
CLR к следующей записи в таблице 
AssemblyRef
:
MSCorLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
На этом этапе CLR уже знает, какая сборка нужна, и ей остается лишь найти 
и загрузить эту сборку.
При разрешении ссылки на тип CLR может найти нужный тип в одном из трех 
мест.
‰
В том же файле.
Обращение к типу, расположенному в том же файле, определя-
ется при компиляции (данный процесс иногда называют 
ранним связыванием
). 
Тип загружается прямо из этого файла, и исполнение продолжается.
‰

Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   75   76   77   78   79   80   81   82   ...   658




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish