Перехват и обработка invalid opcode

Тема в разделе "WASM.NT.KERNEL", создана пользователем sarin, 29 авг 2007.

  1. sarin

    sarin Member

    Публикаций:
    0
    Регистрация:
    2 июн 2005
    Сообщения:
    30
    Нужно перехватить и самостоятельно обработать инструкции, неподдерживаемые процессором в среде WindowsNT/2K/XP/2003/...

    Для примера CPUID, CMPXCHG8B на не-Intel Socket7 процах.

    Возможно ли это? Где почитать?
     
  2. Noble Ghost

    Noble Ghost New Member

    Публикаций:
    0
    Регистрация:
    28 апр 2004
    Сообщения:
    204
    Адрес:
    Russia
    cpuid нормально работает почти на всех "на не-Intel Socket7 процах."
    а вот всякие CMOVxx - увы нет.
    обрабатывать можно, но не имеет особого смысла - слишком дорого выйдет.
    перехватываешь все исключения от выполнения опкода UD2, берешь контекст выполнения, дизасмишь поток данных, выполняешь эмуляцию нужных команд. оно тебе надо? :)
    вот и я забил в свое время :lol:
     
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    поддержку CPIUD можно определить по флагам.
    CMPXHG8B из CPUID.
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    1) да
    2) А что тут читать то? Ставишь обработчик исключения и дизасмишь инструкцию, как уже сказали.