Pregunta

Si un ejecutable de Windows utiliza SYSENTER y se ejecuta en un procesador que implementa AMD64 ISA, ¿qué sucede? Soy nuevo y novato en este tema (SO, interacción de hardware / software), pero por lo que he leído, he entendido que SYSCALL es el equivalente de AMD64 al SYSENTER de Intel. Esperemos que esta pregunta tenga sentido.

¿Fue útil?

Solución

Si intenta usar SYSENTER donde no es compatible, probablemente obtendrá un " código de operación inválido " excepción. Tenga en cuenta que esta situación es inusual: en general, los ejecutables de Windows no contienen directamente instrucciones para ingresar al modo kernel.

Otros consejos

Hasta donde yo sé, los procesadores AM64 usan diferentes tipos de modos para manejar tales problemas.

SYSENTER funciona bien pero no es tan rápido.

Un sitio muy útil para comenzar sobre los diferentes modos: Wikipedia

Se deshicieron de un montón de funcionalidades no utilizadas cuando desarrollaron extensiones AMD64. Uno de los principales es la eliminación de los registros de segmento cs, ds, es y ss. Normalmente, cargar registros de segmento es una operación extremadamente costosa (la CPU tiene que hacer verificaciones de permisos, lo que podría involucrar múltiples accesos a la memoria). Entrar al modo kernel requiere cargar nuevos valores de registro de segmento.

La instrucción SYSENTER acelera esto al tener un conjunto de "registros de sombra" que se puede copiar directamente a los descriptores de segmento (internos, ocultos) sin realizar ninguna verificación de permisos. La gran mayoría del beneficio se pierde con solo un par de registros de segmento, por lo que lo más probable es que el razonamiento para eliminar el soporte de las instrucciones es que el uso de instrucciones regulares para el cambio de modo es más rápido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top