Составители:
Рубрика:
#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
- …
- следующая ›
- последняя »