i386 Регистр dr7 Protected mode (windows)

Тема в разделе "WASM.WIN32", создана пользователем Ichetnick, 19 фев 2006.

  1. Ichetnick

    Ichetnick New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2006
    Сообщения:
    9
    Такая трабла... Меняю dr7. Некоторое время он сохраняется... Потом после QUERY_DEVICE_RELATIONS dr7 сбрасывается в дефолт 0x400 :dntknw: Пытаюсь выставить у dr7 13 - бит в 1 - не выстанавливается... В чем трабла? Как тогда глобально выставить dr7 в нужное значение? Если 13 бит dr7 ставить в int 1 - виснем.
     
  2. Wolfgang

    Wolfgang New Member

    Публикаций:
    0
    Регистрация:
    11 май 2005
    Сообщения:
    82
    Адрес:
    Russia
    Сбрасывается в дефолт? В ВинХР такое делает winlogon. Чтобы не делал, нужно сбросить бит отладки где-то в дебрях EPROCESS (если нужно, могу уточнить).

    А зависание при выставлении 13-го бита происходит, если сначала выставить его и в обработчике же первого перывания попытаться модифицировать отладочный регистр, то есть банальное зацикливание
     
  3. Ichetnick

    Ichetnick New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2006
    Сообщения:
    9
    Устанавливаю TF... Жду два int 1, потом меняю dr 7 в конце прерывания...
     
  4. Wolfgang

    Wolfgang New Member

    Публикаций:
    0
    Регистрация:
    11 май 2005
    Сообщения:
    82
    Адрес:
    Russia
    при генерации первого прерывания процессор сбрасывает 13-й бит в dr7, так что его нужно восстанавливать в конце обработчика прерывания каждый раз
     
  5. Ichetnick

    Ichetnick New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2006
    Сообщения:
    9
    Вопрос, если можно так сказать, решен... Зацикливание происходит из-за того что винда проверяет, как записался регистр, и пытается записать заново, при обломе...