Составители:
Рубрика:
#define IMAGE_SUBSYSTEM_WINDOWS_CUI 3
#define IMAGE_SUBSYSTEM_WINDOWS_CE_GUI 9
// Aligned to FileAlignment boundary
#define SIZEOF_HEADERS(params) \
align(sizeof(struct HEADERS), params->FileAlignment)
#define SIZEOF_TEXT(params) \
align(params->SizeOfMetadata + params->SizeOfCilCode, \
params->FileAlignment)
#define SIZEOF_CLI(params) \
align(sizeof(struct CLI_SECTION_IMAGE), params->FileAlignment)
#define SIZEOF_RELOC(params) \
align(sizeof(struct RELOC_SECTION), params->FileAlignment)
// Aligned to SectionAlignment boundary
#define SIZEOF_HEADERS_M(params) \
align(sizeof(struct HEADERS), SECTION_ALIGNMENT)
#define SIZEOF_TEXT_M(params) \
align(params->SizeOfMetadata + params->SizeOfCilCode, \
SECTION_ALIGNMENT)
#define SIZEOF_CLI_M \
align(sizeof(struct CLI_SECTION_IMAGE), SECTION_ALIGNMENT)
#define SIZEOF_RELOC_M \
align(sizeof(struct RELOC_SECTION), SECTION_ALIGNMENT)
#define SIZEOF_METHODS(params) \
align(params->SizeOfCilCode, SECTION_ALIGNMENT)
// Not aligned
#define SIZEOF_HEADERS_NOTALIGNED \
sizeof(struct HEADERS)
#define SIZEOF_CLI_NOTALIGNED \
sizeof(struct CLI_SECTION_IMAGE)
#define SIZEOF_TEXT_NOTALIGNED(params) \
Исходный код программы pegen
275
Приложение A.
Исходный код программы pegen
Исходный код программы pegen, выполняющей генерацию сборки
.NET, размещен в четырех файлах:
• macros.h
Содержит макроопределения, которые используются в осталь-
ных файлах.
• pe.h
Интерфейс модуля генерации PE-файла.
• pe.c
Реализация модуля генерации PE-файла.
• main.c
Главный модуль, использующий модуль генерации для создания
простейшей сборки .NET.
A.1. macros.h
#ifndef MACROS_H
#define MACROS_H
#define SECTION_ALIGNMENT 0x2000
#define EXE_TYPE 0x1
#define DLL_TYPE 0x0
#define SIZEOF_JMP_STUB 6
#define SIZEOF_IMPORT_TABLE 82
#define CNT_CODE 0x00000020
#define CNT_INITIALIZED_DATA 0x00000040
#define CNT_UNINITIALIZED_DATA 0x00000080
#define MEM_DISCARDABLE 0x02000000
#define MEM_EXECUTE 0x20000000
#define MEM_READ 0x40000000
#define MEM_WRITE 0x80000000
#define IMAGE_FILE_MACHINE_I386 0x014c
#define IMAGE_SUBSYSTEM_WINDOWS_GUI 2
274
CIL и системное программирование в Microsoft .NET
274 CIL и системное программирование в Microsoft .NET Исходный код программы pegen 275
#define IMAGE_SUBSYSTEM_WINDOWS_CUI 3
Приложение A. #define IMAGE_SUBSYSTEM_WINDOWS_CE_GUI 9
Исходный код программы pegen // Aligned to FileAlignment boundary
#define SIZEOF_HEADERS(params) \
Исходный код программы pegen, выполняющей генерацию сборки align(sizeof(struct HEADERS), params->FileAlignment)
.NET, размещен в четырех файлах:
• macros.h #define SIZEOF_TEXT(params) \
Содержит макроопределения, которые используются в осталь- align(params->SizeOfMetadata + params->SizeOfCilCode, \
ных файлах. params->FileAlignment)
• pe.h
Интерфейс модуля генерации PE-файла. #define SIZEOF_CLI(params) \
• pe.c align(sizeof(struct CLI_SECTION_IMAGE), params->FileAlignment)
Реализация модуля генерации PE-файла.
• main.c #define SIZEOF_RELOC(params) \
Главный модуль, использующий модуль генерации для создания align(sizeof(struct RELOC_SECTION), params->FileAlignment)
простейшей сборки .NET.
// Aligned to SectionAlignment boundary
#define SIZEOF_HEADERS_M(params) \
A.1. macros.h align(sizeof(struct HEADERS), SECTION_ALIGNMENT)
#define SIZEOF_TEXT_M(params) \
#ifndef MACROS_H align(params->SizeOfMetadata + params->SizeOfCilCode, \
#define MACROS_H SECTION_ALIGNMENT)
#define SECTION_ALIGNMENT 0x2000 #define SIZEOF_CLI_M \
#define EXE_TYPE 0x1 align(sizeof(struct CLI_SECTION_IMAGE), SECTION_ALIGNMENT)
#define DLL_TYPE 0x0
#define SIZEOF_JMP_STUB 6 #define SIZEOF_RELOC_M \
#define SIZEOF_IMPORT_TABLE 82 align(sizeof(struct RELOC_SECTION), SECTION_ALIGNMENT)
#define CNT_CODE 0x00000020 #define SIZEOF_METHODS(params) \
#define CNT_INITIALIZED_DATA 0x00000040 align(params->SizeOfCilCode, SECTION_ALIGNMENT)
#define CNT_UNINITIALIZED_DATA 0x00000080
#define MEM_DISCARDABLE 0x02000000 // Not aligned
#define MEM_EXECUTE 0x20000000 #define SIZEOF_HEADERS_NOTALIGNED \
#define MEM_READ 0x40000000 sizeof(struct HEADERS)
#define MEM_WRITE 0x80000000
#define SIZEOF_CLI_NOTALIGNED \
#define IMAGE_FILE_MACHINE_I386 0x014c sizeof(struct CLI_SECTION_IMAGE)
#define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 #define SIZEOF_TEXT_NOTALIGNED(params) \
Страницы
- « первая
- ‹ предыдущая
- …
- 142
- 143
- 144
- 145
- 146
- …
- следующая ›
- последняя »
