首页 > 解决方案 > 我可以更改 CPU 模式以读取内存吗?

问题描述

我可以以编程方式更改 CPU 模式吗?(例如,从保护模式到实模式。)

我想读入 tmemoryVisual Studio但出现访问错误。(因为处理器处于保护模式?)

我怎样才能做到这一点?

标签: c++assemblymemorycpu

解决方案


要切换到实模式,您的代码必须:

  • 有足够高的特权(“CPL = 0”)。对于大多数操作系统(例如 Windows),这主要将其限制为“仅内核”。

  • 在可以以实模式访问的内存中运行(在物理地址空间的前 1 MiB 中)。否则,一旦您进入实模式,您就会崩溃,因为 CPU 无法访问您的代码。

对于所有可以切换到实模式来访问内存的情况(并且可以从实模式访问内存);也可以在不切换到实模式(例如更改段和/或页表)的情况下以更少的麻烦和更高的性能访问内存。


推荐阅读