Вопрос

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top