Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Передача управления привилигерованному коду

399
22 января 2009 года
KIV
432 / / 20.01.2009
Возможно ли выполнить вызов привилигерованной процедуры из непривилигерованного кода? Какие надо настроить регистры для этого? Под вызовом подразумивается call, а не програмное прерывание.
1
23 января 2009 года
kot_
7.3K / / 20.01.2000
Нет понятия "привилигерованной процедуры" как и обратного. Вы работаете в режиме доступа - в зависимости от него вы можете получить (или не получить) адрес функции.
Т.е. если вам нужна процедура, для доступа к которой нужен уровень 0 - вы должны вызвать прерывание и потом вызывать нужную ф-цию.
261
23 января 2009 года
ahilles
1.5K / / 03.11.2005
Цитата: KIV
Какие надо настроить регистры для этого? Под вызовом подразумивается call, а не програмное прерывание.


если тебе надо именно через call, то никакие регистры настраивать не надо. надо настраивать GDT, создать в ней шлюз вызова. Для вызова шлюза через команду call надо указать селектор шлюза в качестве операнда

399
23 января 2009 года
KIV
432 / / 20.01.2009
Раскажите пожалуйста поподробнее про шлюзы вызова
1.9K
24 января 2009 года
disasm
232 / / 06.02.2006
Цитата: KIV
Возможно ли выполнить вызов привилигерованной процедуры из непривилигерованного кода? Какие надо настроить регистры для этого? Под вызовом подразумивается call, а не програмное прерывание.



Без разницы как делать это, через прерывание или через call, всё равно надо будет делать шлюз вызова (в таблице IDT или GDT соответственно)

Вообще более подробно об этих вещах написано в книге
Зубков С.В. Ассемблер для DOS, Windows и Unix
http://www.gogsite.ucoz.ru/load/7-1-0-2

349
24 января 2009 года
Phantom-84
656 / / 27.10.2005
В IDT нужно использовать шлюз ловушки (trap gate) или шлюз прерывания (int gate). Шлюз вызова (call gate) использовать нельзя. Хотя конечно использование всех названных видов шлюзов не сильно отличается, но все-таки некоторые отличия есть.
399
24 января 2009 года
KIV
432 / / 20.01.2009
Мне не очень важно - шлюз прерывания или вызова. Мне нужно, что быстрее.
39K
24 января 2009 года
kupec
17 / / 11.08.2008
еще есть команды типа SYSENTER,
они должны работать быстрее всего
399
25 января 2009 года
KIV
432 / / 20.01.2009
Цитата: kupec
еще есть команды типа SYSENTER,
они должны работать быстрее всего



Расскажте о ней? Какие у неё параметры?

39K
27 января 2009 года
kupec
17 / / 11.08.2008
надо в мануалах интела смотреть...
399
29 января 2009 года
KIV
432 / / 20.01.2009
Простите за глупый вопрос, но где скачать эту документацию. На сайте Intel не нашёл. Если возможно дайте прямую ссылку на архив.
261
29 января 2009 года
ahilles
1.5K / / 03.11.2005
http://www.intel.com/products/processor/manuals/index.htm
Volume 3A: System Programming Guide
399
04 февраля 2009 года
KIV
432 / / 20.01.2009
Благодарю за подсказку.
399
05 февраля 2009 года
KIV
432 / / 20.01.2009
В предложенном мануале о sysenter написано немного. Что за IA32_sysenter_CS, IA32_sysenter_ESP, IA32_sysenter_EIP? В мануале написано только, что из них берутся значения для перехода на привелигированный код, а том как настроить эти регистры (или что это?) нет ни слова.
349
05 февраля 2009 года
Phantom-84
656 / / 27.10.2005
В руководстве все написано четко - это MSR (модельно-специфические регистры) - смотри инструкции RDMSR/WRMSR. Вроде бы селектор CS хранится в MSR#174 (hex), ESP - в MSR#175, EIP - в MSR#176, но все-таки лучше это уточнить.

Кстати, еще есть SYSCALL/SYSRET от AMD. Описание есть в отдельном документе "SYSCALL and SYSRET Instruction Specification" (# 21086).
399
07 февраля 2009 года
KIV
432 / / 20.01.2009
Всё получилось. Спасибо.
261
08 февраля 2009 года
ahilles
1.5K / / 03.11.2005
Цитата: Phantom-84

Кстати, еще есть SYSCALL/SYSRET от AMD.


но это уже не защищённый режим

349
10 февраля 2009 года
Phantom-84
656 / / 27.10.2005
Цитата:
но это уже не защищённый режим

?????

261
10 февраля 2009 года
ahilles
1.5K / / 03.11.2005
Я всегда относил эти инструкции к набору x86-64.
но когда посмотрел маны маны от AMD и Intel был очень сильно удивлён. на процессорах Intel SYSCALL/SYSRET доступны только в 64 битном режиме, на процах AMD доступны в обоих режимах. на процессорах Intel SYSENTER/SYSEXIT доступны в обоих режимах, на процах AMD доступны только в защищённом.
Поэтому чтобы не было глюков: в защищённом режиме лучше всегда юзать SYSENTER/SYSEXIT, а в 64 битном SYSCALL/SYSRET
1
14 февраля 2009 года
kot_
7.3K / / 20.01.2000
Цитата: ahilles
Я всегда относил эти инструкции к набору x86-64.
но когда посмотрел маны маны от AMD и Intel был очень сильно удивлён. на процессорах Intel SYSCALL/SYSRET доступны только в 64 битном режиме, на процах AMD доступны в обоих режимах. на процессорах Intel SYSENTER/SYSEXIT доступны в обоих режимах, на процах AMD доступны только в защищённом.
Поэтому чтобы не было глюков: в защищённом режиме лучше всегда юзать SYSENTER/SYSEXIT, а в 64 битном SYSCALL/SYSRET


хм. 64 != защищенный? Что в вашем понимании тогда вообще "защищенный режим"? Может просто имеет смысл проверять разрядность процессора?

261
15 февраля 2009 года
ahilles
1.5K / / 03.11.2005
Цитата: kot_
хм. 64 != защищенный? Что в вашем понимании тогда вообще "защищенный режим"? Может просто имеет смысл проверять разрядность процессора?


ладно, скажем так: legacy mode и long mode.
в моём понимании защищённый режим это 32 битный режим процессора.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог