2

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

4

3 回答 3

3

如果您尝试在不支持的地方使用 SYSENTER,您可能会收到“无效操作码”异常。请注意,这种情况并不常见——通常,Windows 可执行文件不直接包含进入内核模式的指令。

于 2009-10-29T13:35:10.807 回答
0

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

SYSENTER 工作正常,但不是那么快。

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

于 2009-10-29T13:43:57.387 回答
0

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

SYSENTER 指令通过拥有一组“影子寄存器”来加速这一过程,这些寄存器可以直接复制到(内部、隐藏)段描述符,而无需进行任何权限检查。仅使用几个段寄存器就失去了绝大多数好处,因此删除对指令的支持的原因很可能是使用常规指令进行模式切换更快。

于 2012-12-15T18:27:05.823 回答