Чтение онлайн

на главную - закладки

Жанры

Программирование на Visual C++. Архив рассылки

Jenter Алекс

Шрифт:
Настало время "поработать руками"

Для начала проверьте, правильно ли у вас настроены пути к Visual Studio.Net. Чтобы правильно настроить пути, вам всего лишь необходимо вызывать при загрузке (ну или как вам нравиться) файл vsvars32.bat, который расположен в директории …Microsoft Visual Studio.NET\Common7\Tools\.

Давайте взглянем на пример который впоследствии нам предстоит скомпилировать и изучать.

• Visual Basic.NET

'File: Some.vb

'Author: Copyright (C) 2001 Dubovcev Aleksey

Imports System

Public Class App

 Public Shared Sub Main

Console.WriteLine("Hello World")

 End Sub

End Class

• C#

/* File: Some.cs Author: Copyright (C) 2001 Dubovcev Aleksey */

using System;

public class Application {

 public static void Main {

Console.WriteLine("Hello World");

 }

}

• Managed Visual C++

/* File: Some.cpp Author: Copyright (C) 2001 Dubovcev Aleksey */

#using <mscorlib.dll>

using namespace System;

void main {

 Console::WriteLine("Hello World");

}

Теперь,

когда вы построили exe файл, запускайте утилиту ildasm.exe (Intermediate Language Disassembler – дизассемблер промежуточного языка) следующим образом:

ildasm.exe /adv HelloWorld.exe

Параметр командной строки /adv откроет дополнительные пункты меню, которые понадобятся нам позднее. Полную информацию о данной утилите вы сможете найти в .NET Framework Sdk.

Рис. 1

Вы должны увидеть то же самое, что и на рисунке. Древовидная структура (далее просто дерево) показывает вам сборку изнутри.

[…]

ПРИМЕЧАНИЕ

Тип по значению (Value Type) задается ключевым словом struct и отличается от класса тем, что размещается в стеке, а не в динамической памяти.

Поэкспериментируйте немного с ildasm, чтобы привыкнуть к этой программе. Не пугайтесь при виде каких ни будь непонятных данных, дальше будет еще страшнее. :)

Теперь откройте манифест (manifest) и внимательно посмотрите. Ниже я привожу содержание манифеста, полученное мной при помощи утилиты ildasm.

// Microsoft (R) .NET Framework IL Disassembler. Version 1.0.2914.16

// Copyright (C) Microsoft Corp. 1998-2001. All rights reserved.

// VTableFixup Directory:

// No data.

//Это
ссылка на основную библиотеку классов .NET

.assembly extern mscorlib {

 //Это хеш публичного ключа данной сборки

 //он нужен для подтверждения валидности сборки

 .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..

 //Версия сборки которая использовалась при создании приложения

 .ver 1:0:2411:0

}

//Описание нашей сборки

.assembly Some {

 // – The following custom attribute is added automatically, do not uncomment –

 // – Следующий атрибут добавлен автоматически, не убирайте комментарий

 // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(bool,

 // bool) = ( 01 00 00 01 00 00 )

 //Алгоритм по которому считается хэш

 .hash algorithm 0x00008004

 //Версия нашей сборки

 .ver 0:0:0:0

}

//Название запускаемого файла

.module Some.exe

// MVID: {2FA89A98-AD9F-4E31-8DB1-AB1FFB64A4F4}

//Предпочтительный адрес для загрузки сборки

.imagebase 0x00400000

//Подсистема (консоль, оконное приложение, приложение времени загрузки)

.subsystem 0x00000003

//Выравнивание секций

.file alignment 512

//Зарезервированный флаг

.corflags 0x00000001

Что, вам кажется, что это полная чушь? Ошибаетесь, если в этом разобраться, что, кстати, не так уж и трудно, то вам откроется много очень полезной и порой необходимой информации. В начале вы увидите записи со словами .assembly extern, которые описывают зависимости от внешних сборок, необходимых для функционирования этой программы. А данные, идущие далее в блоке, заключённом в фигурных скобках, описывают версию и контрольную сумму сборки. Эти данные берутся из сборок при компиляции программы, что гарантирует использование именно тех сборок, которые использовались при компиляции и тестировании. Далее следует .assembly, но уже без модификатора extern. С этой директивы и начинается описание нашей с вами сборки. Как вы могли догадаться, .ver описывает версию нашей сборки. Ну а .hash algorithm определяет функцию, по которой будет вычисляться хэш, но об этом я расскажу позднее. Затем идут описания имени самого модуля, подсистемы исполнения, информация о выравнивании секций и еще некоторые данные. Полная документация по этому вопросу находится в Framework SDK. Более подробно об устройстве манифеста я расскажу далее.

Поделиться:
Популярные книги

Газлайтер. Том 18

Володин Григорий Григорьевич
18. История Телепата
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Газлайтер. Том 18

Секретарь лорда Демона

Лунёва Мария
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
Секретарь лорда Демона

Жатва душ. Остров мертвых

Сугралинов Данияр
Фантастика:
боевая фантастика
рпг
5.20
рейтинг книги
Жатва душ. Остров мертвых

Кодекс Крови. Книга ХII

Борзых М.
12. РОС: Кодекс Крови
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Крови. Книга ХII

Протокол "Наследник"

Лисина Александра
1. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Протокол Наследник

Найденыш

Шмаков Алексей Семенович
2. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Найденыш

Служанка. Второй шанс для дракона

Шёпот Светлана
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Служанка. Второй шанс для дракона

Кодекс Охотника. Книга XXI

Винокуров Юрий
21. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXI

Флеш Рояль

Тоцка Тала
Детективы:
триллеры
7.11
рейтинг книги
Флеш Рояль

Имперский Курьер. Том 2

Бо Вова
2. Запечатанный мир
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Имперский Курьер. Том 2

Громовая поступь. Трилогия

Мазуров Дмитрий
Громовая поступь
Фантастика:
фэнтези
рпг
4.50
рейтинг книги
Громовая поступь. Трилогия

Наследница долины Рейн

Арниева Юлия
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Наследница долины Рейн

Демон

Парсиев Дмитрий
2. История одного эволюционера
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Демон

Ищу жену с прицепом

Рам Янка
2. Спасатели
Любовные романы:
современные любовные романы
6.25
рейтинг книги
Ищу жену с прицепом