【问题标题】:Switch to 32bit mode from 64bit mode on intel 64在 intel 64 上从 64 位模式切换到 32 位模式
【发布时间】:2014-04-17 15:11:43
【问题描述】:

有没有办法在 Intel 64 机器上从 64 位模式(长模式)切换到 32 位模式(传统模式)。 使用汇编代码执行此操作需要哪些控制寄存器配置?

我需要在 64 位 uefi shell 应用程序中执行此操作

【问题讨论】:

  • 你是在什么环境下执行的?显然,您不能在运行操作系统的 ring 3 中执行此操作。
  • 实际的legacy模式还是只是long模式的兼容性子模式?
  • 我想切换到传统模式而不是兼容模式我正在尝试从 64 位 uefi shell 应用程序更改处理器模式
  • 我需要从 64 位切换到 32 位,而不是 32 位到 64 位

标签: assembly nasm x86-64


【解决方案1】:

我认为程序是

  1. 确保您的代码是身份映射的
  2. 切换到兼容模式
  3. 禁用分页(您现在处于没有分页的 32 位 PMode)
  4. 根据需要进行设置(例如,清除 CR4.PAE、清除 EFER.LME、再次启用分页)

尝试从长模式的任一子模式中清除 CR4.PAE 将 #GP。

【讨论】:

    猜你喜欢
    • 2014-07-29
    • 2015-03-08
    • 1970-01-01
    • 2013-06-07
    • 2012-07-02
    • 2017-10-25
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多