Переполнение линейного адреса

Тема в разделе "WASM.ASSEMBLER", создана пользователем sergh, 28 ноя 2005.

  1. sergh

    sergh New Member

    Публикаций:
    0
    Привет!



    Переполнение линейного адреса происходит при обращении к памяти, если база сегмента + смещение получается больше 4GB. Можно устроить такое либо в защищённом режиме, либо в реальном, сохранив сегментный регистр из защищённого.



    Что происходит по факту:

    - в реальном - перезагрузка

    - в защищённом - никаких проблем. Наверное, даже работает, т.е. действительно читает/записывает.



    Вопрос, почему такая разница, и что при этом должно происходить с точки зрения теории.
     
  2. Wolfgang

    Wolfgang New Member

    Публикаций:
    0
    в теории 4-байтовое значение не может превысить 4-гигбайтный диапазон. То есть все, что левее 32-х битов, порсто отбрасывается
     
  3. alpet

    alpet Александр

    Публикаций:
    0
    sergh

    Мне не удавалось задать базу в 4Гб для реального режима. В принципе можно сделать лимит в 4Гб, и попробывать прочитать 0FFFFh:0FFFFFFFF, по идее адрес должен свернуться, и получится обращение к ячейке памяти 0FFFF:0 - 1, или линейный = 0xFFFEF.