如果Windows可执行文件使用SYSENTER并在实现AMD64 ISA的处理器上执行,会发生什么?我是这个主题的新手和新手(操作系统,硬件/软件交互),但从我读过的内容我已经了解到SYSCALL是AMD64相当于英特尔的SYSENTER。希望这个问题有道理。

有帮助吗?

解决方案

如果您尝试在不支持的情况下使用SYSENTER,您可能会得到<!>“无效的操作码<!>”;例外。 请注意,这种情况很常见 - 通常,Windows可执行文件不直接包含进入内核模式的指令。

其他提示

据我所知,AM64处理器使用不同类型的模式来处理这类问题。

SYSENTER工作正常,但速度不快。

一个非常有用的网站,可以开始使用不同的模式: 维基百科

当他们开发AMD64扩展时,他们摆脱了许多未使用的功能。其中一个主要是消除cs,ds,es和ss段寄存器。通常,加载段寄存器是一项非常昂贵的操作(CPU必须进行权限检查,这可能涉及多个内存访问)。进入内核模式需要加载新的段寄存器值。

SYSENTER指令通过设置一组<!>“影子寄存器<!>来加速这种情况。这可以直接复制到(内部的,隐藏的)段描述符,而无需进行任何权限检查。只有几个段寄存器,绝大多数好处都会丢失,因此很可能推断删除对指令的支持是因为使用模式切换的常规指令更快。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top