Вопрос по возврату из interrupt handler'а

Тема в разделе "WASM.BEGINNERS", создана пользователем Igor1024, 13 апр 2011.

  1. Igor1024

    Igor1024 Васил Троянов Боянов (Azis)

    Публикаций:
    0
    Регистрация:
    15 окт 2010
    Сообщения:
    345
    Адрес:
    Sliven, Bulgaria
    Вот после обработки прерывания или исключения в PM в стеке (неважно глобальном или хэндлера) остаются
    Код (Text):
    1. ;----------
    2. EFLAGS
    3. CS
    4. EIP
    5. Error_code; если это иключение
    6. ;----------
    Я пытаюсь сладить для начала с #GP, так как у меня IDT недозаполнена.
    (просто выйти из обработки исключения). Вот здесь и проблема возникла.
    Каков алгоритм данной операции, ведь нужно же продолжить выполнение?
     
  2. Igor1024

    Igor1024 Васил Троянов Боянов (Azis)

    Публикаций:
    0
    Регистрация:
    15 окт 2010
    Сообщения:
    345
    Адрес:
    Sliven, Bulgaria
    Тему не правильно назвал... Возврат из exception handler'а.
     
  3. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Удалить со стека код ошибки и выполнить iret.
    В чём сложность?
     
  4. Igor1024

    Igor1024 Васил Троянов Боянов (Azis)

    Публикаций:
    0
    Регистрация:
    15 окт 2010
    Сообщения:
    345
    Адрес:
    Sliven, Bulgaria
    Мне сказали что так неправильно.
     
  5. Igor1024

    Igor1024 Васил Троянов Боянов (Azis)

    Публикаций:
    0
    Регистрация:
    15 окт 2010
    Сообщения:
    345
    Адрес:
    Sliven, Bulgaria
    С осьдева.
     
  6. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    И что? С чего ты решил, что там ошибаться не могут, а тут могут?
    Код со стека надо удалять перед возвратом.
    Мне там регистрироваться лениво, а анонимам писать не дают.
    Отпиши ему про код ошибки, посмотри что ответит.
     
  7. Igor1024

    Igor1024 Васил Троянов Боянов (Azis)

    Публикаций:
    0
    Регистрация:
    15 окт 2010
    Сообщения:
    345
    Адрес:
    Sliven, Bulgaria
    Просто вдруг я чего недопонимаю.
     
  8. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    На этот случай есть мануалы, в них всё это расписано.

    У тебя GP_handler изменяет eax - вот это неправильно.
     
  9. Igor1024

    Igor1024 Васил Троянов Боянов (Azis)

    Публикаций:
    0
    Регистрация:
    15 окт 2010
    Сообщения:
    345
    Адрес:
    Sliven, Bulgaria
    Да. Неправильно. А маны я читаю :)
     
  10. Igor1024

    Igor1024 Васил Троянов Боянов (Azis)

    Публикаций:
    0
    Регистрация:
    15 окт 2010
    Сообщения:
    345
    Адрес:
    Sliven, Bulgaria
    По хорошему нужно все регистры сохранять в TSS сегментах... Тогда всё будет железобетонно.