Назначение подчиненого (C) сегмента

Тема в разделе "WASM.OS.DEVEL", создана пользователем ORANGIX, 10 апр 2007.

  1. ORANGIX

    ORANGIX New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2007
    Сообщения:
    18
    Объясните плз в чем его смысл? Даже скорее, когда мы должны использовать его вместо call gate. Ведь исполняться он будет в случае jmp из ring3 кода тоже в ring3.
    Тогда какой смысл нам вешать у него DPL <3 и C=1 не проще сразу DPL 3, ведь мы все равно не сможем в нем применять r0 команды тк он будет радостно вылетать при переходе из r3.

    Есть конечно мега креативный вариант - проверять в коде cs на CPL и дальше уже выбирать, но нафига столько проблем, если можно просто на 2 сегмента разнести, если уж так хочется разделить функционал r0 и r3
     
  2. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    а если у нас есть код, который должен быть доступен с любого уровня привелегий, т. е и в режиме ядра, и в пользовательском режиме. Разве переход R0 -> R3 посредством обычного jmp/сall возможен?
     
  3. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    rei3er
    Он не возможен даже через шлюз вызова -- шлюз вызова может лишь повышать привилегии, но не понижать их.

    ORANGIX
    Дополню rei3erа -- подчиненные сегменты нужны для того, чтобы сделать общим какой-либо кусок кода (например, библиотеку для работы со строками) но при этом избежать шлюза вызова, т.к. переход через последний выполняется довольно медленно.
     
  4. ORANGIX

    ORANGIX New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2007
    Сообщения:
    18
    rei3er
    Mika0x65
    спасибо за объяснение
     
  5. ORANGIX

    ORANGIX New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2007
    Сообщения:
    18
    Да, кстати, а как тогда понизить привелегии? Если jmp/call не меняет его, а шлюз только повышает?
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    а как возврат из сискала делается? sysexit или iretd
     
  7. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Добавлю еще 'far ret' :)