Оглавление
Перемещение (вычислительная техника)
-
Основы перемещения
- Перемещение – это процесс изменения адресов загрузки для кода и данных в зависимости от местоположения.
- До появления многопроцессорных систем адреса объектов были абсолютными.
-
Компоновка и перемещение
- Компоновщик выполняет перемещение в сочетании с другими процессами, такими как разрешение символов и поиск файлов.
- Перемещение может выполняться во время компоновки, загрузки или выполнения программы.
-
Сегментация памяти
- Объектные файлы разбиты на сегменты памяти, такие как код, инициализированные данные и неинициализированные данные.
-
Таблица перемещения
- Таблица перемещения содержит указатели на абсолютные адреса в объектном коде, которые должны быть изменены при перемещении программы.
- Исправления в таблице перемещения могут изменяться по мере перемещения загрузчика.
-
Примеры и архитектура
- DOS и 16-разрядные Windows используют относительные адреса в исполняемых файлах, которые изменяются при загрузке.
- 32-разрядные Windows требуют таблицы перемещения для динамического перемещения двоичных файлов.
- 64-разрядные Windows требуют таблиц перемещения для ASLR.
-
Процедура перемещения
- Компоновщик объединяет сегменты и присваивает уникальные адреса времени выполнения.
- Таблица перемещения используется для изменения ссылок на символы во время выполнения.
-
Пример перемещения
- В примере с архитектурой MIX и языком ассемблера MIXAL демонстрируется процесс перемещения адресов инструкций.
-
Рекомендации и дальнейшее чтение
- Статья содержит ссылки на дополнительные ресурсы и методы перемещения.