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