Cobra: различия между версиями

Содержимое удалено Содержимое добавлено
Нет описания правки
Строка 47:
 
=== CIL ===
При компиляции файла [[Cobra/Hello.cobra|Hello.cobra]] создается двоичный объект называемый сборкой(assembly), в которой содержит CIL-инструкции, метаданные и манифест описывающие подведение класса Hello.<br />
Открыв полученную сборку в ildasm.exe, можно посмотреть что метод main был преобразован в следующие инструкции:
<font face="verdana">
Строка 82:
</source></font>
CIL-инструкции перед исполнением компилируются на лету с оптимизацией для конкретной платформы. За компиляцию CIL-инструкций отвечает JIT(just-in-time)-компилятор.
Рассмотрим метаданные, которые были сгенерированы для метода main:
<font face="verdana">
<source lang="cil">
Method #1 (06000001)
-------------------------------------------------------
MethodName: Main (06000001)
Flags : [Public] [Virtual] [HideBySig] [NewSlot] (000001c6)
RVA : 0x00002050
ImplFlags : [IL] [Managed] (00000000)
CallCnvntn: [DEFAULT]
hasThis
ReturnType: Void
No arguments.
</source></font>
Метаданные описывают тип(например, класс) и всех его членов(например, методов). заметим что метод main не имеет аргументов.
Также немаловажным является наличие в сборке манифеста, в которой указаны все внешние сборки требуемые текущей сборке, их версии и т.д. Ниже приведен пример наиболее существенной части манифеста:
<font face="verdana">