Григроьев, PM, прерывания

Тема в разделе "WASM.ASSEMBLER", создана пользователем sergh, 15 мар 2006.

  1. sergh

    sergh New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    128
    Адрес:
    rsdn
    Всем привет!



    Почитал выложенную книжку Григорьева, наткнулся на, с моей точки зрения, ошибку. Глава 6, раздел 6.4, в pdf - страница 127. Там утверждается, что при обработке исключений и внешних прерываний учитывается текущий CPL и DPL дескриптора ловушки/прерывания. И что, соответственно, если CPL > DPL, вместо нужного обработчика вызовется обработчик #GP. Причём и он тоже может не вызваться, по той же причине :)



    Насколько я знаю, в современных процессорах это не так, и CPL с DPL учитываются только при явном вызове обработчика инструкцией int x или into. Вопрос:

    - я прав?

    - если я прав, то что это - ошибка Григорьева, или в 486 действительно всё так и было, а потом Intel спохватилась и исправилась?
     
  2. optio

    optio Алексей

    Публикаций:
    0
    Регистрация:
    8 янв 2006
    Сообщения:
    12
    Адрес:
    Томск
    Ты прав, при обработке прерываний или исключений проверка уровней привелегий осуществляется только для программных прерываний. IA-32 Intel Architecture, Том 3, Параграф 5.12.1.1

    Вряд ли это когда-то было. Внешние прерывания происходят в случайные моменты времени и никак не связаны с CPL.

    К тому же, скорее всего, за PM стоит крепкая математическая модель - в ней такой косяк наверняка был бы отловлен. Кто что думает по этому поводу?
     
  3. sergh

    sergh New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    128
    Адрес:
    rsdn
    >> IA-32 Intel Architecture, Том 3, Параграф 5.12.1.1



    Да, я тоже читал. Кроме того, банальный Windows на int x, кроме int 3 и into, реагирует исключением #GP, а на исключения - честным исключением. На этом и было основано моё предположение.



    >> Внешние прерывания происходят в случайные моменты времени и никак не связаны с CPL.



    Согласен. Но что будет, если поместить обработчик в согласованном сегменте кода? И не спрашивайте у разработчиков, что они курят :) До чтения Григорьева мне такая мысль в голову не приходила. Он этого делать не советует, но такой случай рассматривает.



    >> К тому же, скорее всего, за PM стоит крепкая математическая модель - в ней такой косяк наверняка был бы отловлен.



    Вот это было бы очень интересно - посмотреть какую-нибудь математическую модель. А то до сих пор как-то не видел полезного приложения математики к моделированию. Только на уровне СМО.