Модель с плоской памятью Intel - PullRequest
0 голосов
/ 26 июня 2018

В модели Intel с плоской памятью всегда используются в основном 2 индекса GDT, сегмент CODE, сегмент DATA. Могу ли я использовать больше индексов GDT в модели с плоской памятью. Мое требование - иметь одну область памяти с RO, которая сейчас находится в сегменте данных.

1 Ответ

0 голосов
/ 26 июня 2018

Да, вы можете использовать столько записей GDT, сколько имеет смысл для вашего использования. Но только 6 могут быть активными одновременно, поскольку есть только 6 сегментных регистров: CS SS DS ES FS GS. Обратите внимание, что один и тот же дескриптор может быть загружен в несколько регистров.

Кроме того, одна и та же область памяти может отображаться несколькими сегментами, но с разными атрибутами. В частности, фактически требуется, чтобы область SS (стека) была для чтения / записи. Если он использует то же адресное пространство, что и DS, и вы хотите, чтобы DS был доступен только для чтения, DS отличается от SS как минимум с точки зрения RW / RO.

Аналогично, для удобства очень часто DS и ES отображаются в одно и то же пространство с использованием инструкций MOVS / CMPS / SCAS / LODS.

...