возврат из исключения #GP

Тема в разделе "WASM.NT.KERNEL", создана пользователем NoName, 25 мар 2008.

  1. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    1. Искусственно вызываю исключение #GP путем выполнения привилигированной инструкции на 3-ем кольце
    2. Подменяю в стеке:

    ;stack:
    ;+20 ss 43
    ;+16 esp 3f80
    ;+12 eflags 13006
    ;+8 cs 33
    ;+4 eip cfa -> d58
    ;0 error code 0


    адрес возврата eip по адресу [esp + 4]

    3. делаю iretd
    4. валится опять в #GP в коде ошибки - измененнное смещение

    не очень понимаю почему так происходит вместо корректного возврата. Проверяю на bochs и qemu.
     
  2. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Покажи код. Так трудно сказать. Не забыл ли ты увеличить стек (вытолкнуть код ошибки) до возврата? Этим должна заниматься ОС, процессор этого не делает.
     
  3. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    мда, спасибо большое :)