c++ - 我可以更改 CPU 模式以读取内存吗?
问题描述
我可以以编程方式更改 CPU 模式吗?(例如,从保护模式到实模式。)
我想读入 tmemoryVisual Studio
但出现访问错误。(因为处理器处于保护模式?)
我怎样才能做到这一点?
解决方案
要切换到实模式,您的代码必须:
有足够高的特权(“CPL = 0”)。对于大多数操作系统(例如 Windows),这主要将其限制为“仅内核”。
在可以以实模式访问的内存中运行(在物理地址空间的前 1 MiB 中)。否则,一旦您进入实模式,您就会崩溃,因为 CPU 无法访问您的代码。
对于所有可以切换到实模式来访问内存的情况(并且可以从实模式访问内存);也可以在不切换到实模式(例如更改段和/或页表)的情况下以更少的麻烦和更高的性能访问内存。