Создание CILCarClient.exe

Создание CILCarClient.exe

Теперь нам нужно построить простой компоновочный блок *.exe, который должен выполнить следующее.

• Создать тип CILCar.

• Передать этот тип статическому методу CILCarInfo.Display(),

Создайте новый файл *.il и определите внешние ссылки на mscorlib.dll и CILCars.dll (не забудьте поместить копию этого компоновочного блока .NET в каталог приложения клиента!). Затем определите единственный тип (Program), который использует компоновочный блок CILCars.dll. Вот соответствующий программный код, приведенный полностью.

// Ссылки на внешние компоновочные блоки.

.assembly extern mscorlib {

 .publickeytoken = (B7 7A 5C 56 19 34 E0 89)

 .ver 2:0:0:0

}

.assembly extern CILCars {

 .ver 1:0:0:0

}

// Наш выполняемый компоновочный блок.

.assembly CILCarClient {

 .hash algorithm 0x00008004

 .ver 0:0:0:0

}

.module CILCarClient.exe

// Реализация типа Program.

.namespace CILCarClient {

 .class private auto ansi beforefieldinit Program extends [mscorlib]System.Object {

  .method private hidebysig static void Main(string[] args) cil managed {

   // Обозначает точку входа *.exe.

   .entrypoint

   .maxstack 8

   // Объявление локального типа CILCar и добавление в стек

   // значений для вызова конструктора.

   .locals init ([0] class [CILCars]CILCars.CILCar myCilCar)

   ldc.i4 55

   ldstr "Junior"

   // Создание нового CILCar: сохранение и загрузка ссылки.

   newobj: instance void [CILCars] CILCars.CILCar::.сtor(int32, string)

   stloc.0

   ldloc.0

   // Вызов Display() и передача верхнего значения из стека.

   call void [CILCars] CILCars.CILCarInfo::Display(class [CILCars]CILCars.CILCar)

   ret

  }

 }

}

Здесь единственным кодом операции, заслуживающим комментария, является .entrуpoint. Напомним, что этот код операций используется для обозначения метода, который должен выступать в качестве точки входа модуля *.eхе. Ввиду того, что среда CLR идентифицирует начальный метод для выполнения именно с помощью.entrypoint, сам метод может называться как угодно (хотя в нашем примере он называется Main()). В остальном CIL-код метода Main() представляет действия, связанные с добавлением значений в стек и извлечением их из стека.

Заметьте, однако, что для создания CILCar используется код операции.newobj. В связи с этим напомним, что при вызове члена типа непосредственно в CIL вы должны применить синтаксис с использованием двойного двоеточия и, как всегда, указать абсолютное имя типа. Восприняв сказанное, вы можете скомпилировать свой новый файл с помощью ilasm.exe, проверить полученный компоновочный блок с помощью peverifу.exe, а затем выполнить программу.

ilasm CilCarClient.il

peverify CilCarClient.exe

CILCarClient.exe

На рис. 15.5 показан конечный результат.

Рис. 15.5. Ваш CILCar в действии

На этом, выполнив первую задачу этой главы, мы закончим освоение азбуки CIL. К этому моменту, я надеюсь, вы уверенно сможете открыть любой компоновочный блок .NET с помощью ildasm.exe и лучше понимаете, что происходит внутри него.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Создание

Из книги Советы по Delphi. Версия 1.0.6 автора Озеров Валентин


Создание

Из книги Linux-сервер своими руками автора Колисниченко Денис Николаевич


3.4. Создание группы

Из книги Популярный самоучитель работы в Интернете автора Кондратьев Геннадий Геннадьевич

3.4. Создание группы Каждый пользователь принадлежит к одной или более группам. Группы используются для того, чтобы пользователи, принадлежащие одной группе, могли работать с общими файлами. Например, в группу user входят пользователи ivanov и petrov, а пользователь sidorov входит в


5.4. Создание расписаний

Из книги Ощупывая слона [Заметки по истории русского Интернета] автора Кузнецов Сергей Юрьевич

5.4. Создание расписаний Механизм расписаний Linux (UNIX) предоставляет удобные и мощные средства для обслуживания системы. Например, можно создать расписание резервирования данных в нерабочее время или обновления системы через Интернет.Для запуска команд по расписанию


Создание соединения

Из книги Основы информатики: Учебник для вузов автора Малинина Лариса Александровна

Создание соединения


2. Создание «О.Г.И.»

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов. автора Дронов Владимир


6.6. Создание формул

Из книги Интернет – легко и просто! автора Александров Егор

6.6. Создание формул Формула является основным средством для анализа данных. С помощью формул можно складывать, умножать и сравнивать данные, а также объединять значения. Формулы подчиняются определенному синтаксису, в который входят знак равенства (=), вычисляемые


Создание Web-форм

Из книги VBA для чайников автора Каммингс Стив

Создание Web-форм Для создания Web-формы применяется парный тег <FORM>, внутри которого помещают теги, формирующие элементы управления, входящие в эту Web-форму:<FORM><теги, формирующие элементы управления></FORM>Web-форма ведет себя как блочный элемент Web-страницы. (О


Создание Web-формы

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Создание Web-формы На очереди — Web-форма, в которую посетитель будет вводить искомое слово или его часть. Вот только куда ее поместить? Давайте пока что вставим ее в контейнер cnavbar, ниже полосы навигации, непосредственно перед закрывающим тегом </DIV>, формирующим этот


Создание

Из книги Секреты приложений Google автора Балуев Денис

Создание Прежде чем приступить непосредственно к формированию веб-страниц, необходимо подготовить содержимое будущего сайта (текст, изображения и пр.). Ведь согласитесь, было бы глупо создавать сайт ни о чем. Поэтому будем считать, что вся необходимая для наполнения


Создание формы

Из книги автора

Создание формы Для создания новой формы VBA выберите Insert=UserForm из меню редактора Visual Basic или из контекстного меню (вызываемого щелчком правой кнопки мыши) в окне проводника проектов. Новая форма (точнее, заготовка новой формы) появится в специально созданном для нее окне, а


Создание методов

Из книги автора

Создание методов Методы представляют собой обычные процедуры типов Sub и Function, которым выпало разместиться в модуле класса. Конечно, в большинстве случаев метод должен делать нечто, напрямую связанное с самим объектом, преобразуя данные, хранимые объектом. Но, при желании,


Создание

Из книги автора

Создание Глупо нырять с десятиметровой вышки, даже не научившись плавать. Точно так же неразумно пытаться сделать что-либо, напоминающее хорошую презентацию, не изучив все возможности предлагаемого инструмента. Начнем с алфавита: для создания очередного набора слайдов


Создание

Из книги автора

Создание Начнем с самой простой и очевидной задачи – создание личного сайта «с нуля». Для этого необходимо направить свой браузер по вполне очевидному (надеюсь, к последней главе книги подход Google к адресации стал более чем понятен!) адресу http://sites.google.com, не забыв привычным