Что такое 8086 перемещаемый?

я запускаю некоторое программное обеспечение Fortran (LBLRTM) и shell-скрипт, который готовит ввод генерирует ряд файлов с именами TAPE3,TAPE4, etc. Для отладки я использовал file для идентификации типа файла. file говорит:

TAPE3:  8086 relocatable (Microsoft)

Я предполагаю, что file здесь неправильно, и это просто двоичный файл, который выглядит как 8086 relocatable. Но какой is a 8086 relocatable?

6
задан Nathan2055
02.04.2023 21:40 Количество просмотров материала 3039
Распечатать страницу

1 ответ

Я думаю, что перемещаемый код предшествует виртуальной памяти (VM). Альтернативой является абсолютный код, который должен быть загружен в определенном месте в физической памяти (например, потому, что он содержит инструкции "перехода", которые имеют физические адреса в качестве мест назначения)

8086 был обратно совместим со старыми процессорами, которые могли адресовать только 64 Кб памяти, используя 16-битные адресные регистры. Также в 8086 имел 16-разрядные сегментные регистры, которые были учтены (например, при выполнении перейти инструкция) в основном реальный адрес = адрес + сегмент<<4. Это позволило (перемещаемым) программам располагаться где угодно в 1 МБ памяти, выровненной по 16-байтовым границам "абзаца" (4-битный сдвиг в вычислении выше). Такие программы могут адресовать только 64 КБ. Очевидно, что ОС изменяет регистр сегмента соответствующим образом на переключателе контекста.

кажется очевидным, что если бы ваша программа манипулировала регистрами сегментов, возможно, чтобы она могла использовать более 64 Кб памяти, это не могло бы быть переехал таким образом.

программы Intel 8086/8088 иногда могут быть перемещаемыми или, точнее, независимыми от положения, если они не пытаются манипулировать регистрами сегментов. В этом случае ОС может загрузить программу в любом месте доступной памяти на границе 16 байт, соответствующим образом установить регистры сегментов, и программа будет работать корректно. Однако в этом режиме программа имеет доступ только к четырем сегментам памяти размером 64 КБ.

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

обратите внимание, что это обсуждение не учитывает возможность того, что формат модуля загрузки сам по себе является перемещаемым, требующим перемещения загрузчиком. Это третья возможность.

от http://wiki.answers.com/Q/Why_are_8086_programs_called_relocatble_programs

и

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

8086 ПЕРЕМЕЩАЕМЫЙ ОБЪЕКТНЫЙ МОДУЛЬ Форматы

Техническая Спецификация Intel

и

http://en.wikipedia.org/wiki/Intel_8086#Segmentation

4
отвечен RedGrittyBrick 2023-04-04 05:28

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх