Inline asm in driver

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

  1. shameel

    shameel New Member

    Публикаций:
    0
    Регистрация:
    6 дек 2004
    Сообщения:
    25
    Адрес:
    Kazakhstan
    Вставил в сишный код драйвера функции с ассемблерными вставками, которые используют инструкции 486. Вылезает Page fault. В 3 кольце этот же самый код на асме работает безупречно. Может быть надо какие-нить опции компилятора задавать при сборке драйвера. Кто-нибудь знает?
     
  2. Sten

    Sten New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2003
    Сообщения:
    39
    Нет, не нужно никаких опций компилятора.

    На платформе X86 ассемблерные вставки работают прекрасно.



    Page Fault может вылезать из-за того, что ты на DISPATCH_LEVEL, к примеру, обращаешся к paged pool памяти.





    На AMD64 никакие ассемблерные вставки уже не поддерживаются компилятором.
     
  3. Sten

    Sten New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2003
    Сообщения:
    39
    А, еще стека твой код может много жрать - для kernel mode потока доступно всего несколько страниц стека.
     
  4. shameel

    shameel New Member

    Публикаций:
    0
    Регистрация:
    6 дек 2004
    Сообщения:
    25
    Адрес:
    Kazakhstan
    А как включить оптимизацию при сборке драйвера?
     
  5. SolidCode

    SolidCode New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2002
    Сообщения:
    162
    Адрес:
    Kazakhstan
    А этот инлайн код чем обёртывается, когда вставляется в С++? Под отладчиком смотрел?
     
  6. shameel

    shameel New Member

    Публикаций:
    0
    Регистрация:
    6 дек 2004
    Сообщения:
    25
    Адрес:
    Kazakhstan
    SolidCode

    Там нет С++, там чистый С. Обертывается сишными функциями.