Ассемблер для Windows

ультратонкая светодиодная панель, металокассета, светодиодные прожекторы, грильято

Таблица настроек адресов



Таблица настроек адресов

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

Формирование данных базовых поправок выглядит следующим образом. Поправки упаковываются сериями смежных кусков различной длины. Каждый кусок описывает поправки для одной четырехбайтовой страницы отображения и начинается со следующей структуры:

Смещение

Длина поля

Название поля

Описание поля

00h

DWORD

Page RVA

Относительный адрес страницы применения.

04h

DWORD

Block Size

Размер блока настроек (с заголовком). Эта величина используется для вычисления количества настроек.

08h

WORD

TypeOffset Record

Массив записей настроек, их переменное количество.

Для наложения настройки необходимо вычислить 32-битную разницу ("Дельта") между желаемой базой загрузки и действительной. Если образ программы загружен в требуемое место, то эта разница равна нулю и никакой настройки не требуется. Каждый блок настроек должен начинаться на DWORD-границе, для выравнивания блока можно пользоваться нулями. При настройке необходимую позицию в блоке вычисляют как сумму относительного адреса страницы и базового адреса загруженной программы.




- Начало -  - Назад -  - Вперед -