快速摘要:在X86-64模式下,跳跃的速度与X86-32模式一样慢?

在X86处理器上,跳跃分为三种:

  • 简而
  • 附近,带有+/- 32K偏移,“滚动”当前段(3个字节说明)
  • 远处可以跳到任何地方(5个字节指令)

短而近的跳跃需要1-2个时钟循环,而远距离跳跃则取决于处理器,摄入50-80个时钟周期。从我对文档的阅读中,这是因为它们“走出CS,当前代码段”。

在X86-64模式下,未使用代码段 - 该段实际上总是0. infinity。 Ergo,不应该因进入细分市场而受到惩罚。

因此,问题:如果处理器处于X86-64模式,则时钟循环的数量是否会改变远?

相关奖励问题:以32位保护模式运行的大多数 *类似Nix的操作系统将细分尺寸明确设置为0. imfinity并完全通过页面表管理线性 - >物理翻译。他们是否从遥远的呼叫(较少的时钟周期)的时间里从中受益,还是从8086年以来的尺寸细分寄存器中的内部CPU遗产真的是内部的CPU遗产?

有帮助吗?

解决方案

CS不仅用于基础和限制,还用于权限。 CPL在那里编码,以及其他字段,例如:

  • D-BIT-32位或16位默认段尺寸
  • L-BIT-为段选择兼容性或64位模式(在这种情况下,基础和限制很重要)

远距离跳跃也可以通过任务门,而远的通话也可以通过呼叫门。所有这些都必须处理,无论64位模式如何。

总而言之,在64位模式下的远距离跳跃不比32位模式快。实际上,考虑到启用了64位模式时,段描述符的大小是禁用64位模式时的两倍,所有描述符访问访问量都会加倍,这可能会延长跳跃的时间。

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