Тривиальный вопрос SYSENTER / SYSCALL - PullRequest
2 голосов
/ 29 октября 2009

Если исполняемый файл Windows использует SYSENTER и выполняется на процессоре, поддерживающем AMD64 ISA, что произойдет?Я новичок и новичок в этой теме (операционные системы, аппаратное / программное взаимодействие), но из того, что я прочитал, я понял, что SYSCALL - это AMD64-эквивалент Intel SYSENTER.Надеюсь, этот вопрос имеет смысл.

Ответы [ 3 ]

3 голосов
/ 29 октября 2009

Если вы попытаетесь использовать SYSENTER там, где он не поддерживается, вы, вероятно, получите исключение «неверный код операции». Обратите внимание, что эта ситуация необычна - как правило, исполняемые файлы Windows напрямую не содержат инструкций для входа в режим ядра.

0 голосов
/ 15 декабря 2012

Они избавились от множества неиспользуемых функциональных возможностей при разработке расширений AMD64. Одним из основных является исключение регистров сегментов cs, ds, es и ss. Обычно загрузка регистров сегментов является чрезвычайно дорогой операцией (ЦП должен выполнять проверку прав доступа, которая может включать несколько обращений к памяти). Вход в режим ядра требует загрузки новых значений регистра сегмента.

Инструкция SYSENTER ускоряет это благодаря наличию набора «теневых регистров», которые можно копировать непосредственно в (внутренние, скрытые) дескрипторы сегмента без каких-либо проверок разрешений. Подавляющее большинство преимуществ теряется только с парой сегментных регистров, поэтому, скорее всего, причина отказа от поддержки инструкций состоит в том, что использование регулярных инструкций для переключения режимов происходит быстрее.

0 голосов
/ 29 октября 2009

Насколько я знаю, процессоры AM64 используют разные типы режимов для решения таких проблем.

SYSENTER работает нормально, но не так быстро.

Очень полезный сайт для знакомства с различными режимами: Википедии

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...