Реальный и защ-ный режим процессора!

Тема в разделе "WASM.WIN32", создана пользователем Phreakmonkey, 20 мар 2009.

  1. Phreakmonkey

    Phreakmonkey New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2009
    Сообщения:
    3
    Такой вот вопрос возник можно ли поменять местами сегменты памяти (кода данных стека) в лин-м адресном пространстве! Насколько я понял они размещ-ся в области 1 метра! При описании сегмента данных он занос-ся в GDT (глобальную дескр-ную таблицу) размер стека 100h размер сегмента кода 10А размер сегмента данных 78h.Описаны они соответ-но в таком порядке по возрастанию адресов от 0x00000000h .... 100000h. (порядок данные-код-стек). Адреса соответ-но выдаю-ся им ОС. Вот соб-но и вопрос можно ли поменять их местами если да то каким образом и что на это влияет!
     
  2. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Причем тут реальный режим?
    Линейное адрестное пространство 4ГБ.

    Поменять можно. Изменяешь базу, делов то.
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Нет.
     
  4. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    а есле включить страничную адресацию, то можно. но это вроде уже не линейное АП
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Freeman
    Вся проблема в том, что процессор не позволит исполнять сегмент данных, также как и писать в сегмент кода. Единственный вариант это замена двух дескрипторов в GDT, тоесть сегмент кода становится сегментом данных и наоборот.
     
  6. Phreakmonkey

    Phreakmonkey New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2009
    Сообщения:
    3
    Так мужики вы считаете что достаточно изменить расположение дескрипторов данных,кода,стека в GDT соотвт-но перезаписав их селекторы. ( и это изменит расположение их сегментов в ОП)? (Ну логично вопрос стал бы таким образом соответ-но они располога-ся у меня в 1 мег-те (от 0x00....0h -100000h) снизу вверх data(GDT)-code-stack значит ли это что такое расположение обуслав-ся расположением их дескр-ров в GDT?
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Не расположение(это не имеет значения, только определяет значение селектора, который и индексирует дескриптор) их, а тип. Не совсем понятна задача.
     
  8. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Не значит. Расположение задается базой в дескрипторе плюс предел плюс флаги G и E. Сегменты могут и перекрываться.
     
  9. Phreakmonkey

    Phreakmonkey New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2009
    Сообщения:
    3
    Вот посм-те на картинку вопрос поставлю иначе с чем связ-но такое расположение сегментов (соотв-но пустоты я там не рисовал не выравнивал по параграфам)
     
  10. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Можно как угодно определить расположение, дескриптор всё задаёт, сегмент стека и данных это одно и тоже, просто в разных регистрах селекторы находятся. http://sasm.narod.ru/docs/pm/pm_in/chap_4.htm