Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
sysenter - что это 02.08.07 14:59
Автор: Андрей Статус: Незарегистрированный пользователь
|
При дизасемблировании делфовским дебагером свою прогу наткнулся на эту функцию дальше она по ней не переходит. Что это такое
|
|
Это точка перехода в иной мир ;-))))))))) 03.08.07 08:53
Автор: HandleX <Александр М.> Статус: The Elderman Отредактировано 03.08.07 08:59 Количество правок: 2
|
Ядро операционной системы защищено, и крутится процессором в своей "небожительской" части. Когда программа пользователя хочет обратиться к службам операционной системы (к примеру, прочитать файл), она вызывает соотв. функцию API, которая реализована, к примеру, в kernel32.dll. Там ваш вызов немножко дообрабатывается, и, наступает момент, когда в пользовательском режиме уже сделать ничего невозможно, а необходимо вызвать соотв. функцию ядра. И вот, виндовозная dll заботливо укладывает нужные параметры в регистры микропроцессора по заранее условленным M$ законам, как то номер службы, дескриптор файла и т.п., и вызывается SYSENTER, великий и ужасный. Разверзаются небеса, и программе "кажется", что данные из файла чудесным образом очутились в заказанной программой области памяти. ;-)
Но на самом деле поработало ядро. Дельфийский отладчик не может справляться с такой ситуацией, поскольку он поставил точку останова сразу за SYSENTER'ом, а ядро возвращает управление в программу не туда, а куда-то в другое место, я уже не помню. Поэтому прога продолжает работать, а отладчик остаётся с носом ;-)
SYSENTER в процах появилась с приходом PII, до этого использовалась инструкция INT. Соответственно, в Win2k ещё использовалась INT, SYSENTER появился начиная c WinXP и старше.
SYSENTER работает чуть быстрее.
-------------------------------
Инструкция SYSENTER аналогична инструкции INT с той лишь разницей, что не хранит вектор прерывания в таблице IDT с последующий его выборкой и передачей управления, а вызывает код, адрес которого расположен в одном из регистров MSR.
-------------------------------
|
|
|