В режиме совместимости 32 бит у современных ОС игнорируется сегментная адресация? Привет, Тостер. Прочитал в инете, что современные ОС игнорируют сегментную трансляцию.
1. Насколько это верно для Linux и Win NT 10?
2. Пишут, что секции в PE заменяют сегменты при отображении образа. Получается вирт адреса секций ни в какие регистры не записываются при загрузке в память?
3. А если я пишу программу на ассемблере, используя регистры для этой селекторной трансляции, то мое приложение не будет корректно выполнено в такой системе или как это разрешается?

21 Авг 2019 в 06:52
185 +1
0
Ответы
1

Для Linux и Windows NT 10 это не совсем верно. Сегментация как концепция все еще существует, но современные ОС в основном используют плоскую память и плоскую адресацию, что позволяет им эффективнее управлять памятью.

В PE (Portable Executable) файле секции действительно заменяют сегменты при загрузке в память. Виртуальные адреса секций могут быть записаны в соответствующие регистры при загрузке, чтобы выполнить необходимую трансляцию.

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

20 Апр 2024 в 13:12
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир