c++ - 我可以更改 CPU 模式以读取内存吗?

标签 c++ assembly memory cpu

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

我想在 Visual Studio 中读取 tmemory,但出现访问错误。 (因为处理器处于保护模式?)

我该怎么做?

最佳答案

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

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

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

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

关于c++ - 我可以更改 CPU 模式以读取内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59438570/

相关文章:

c++ - SDL_Renderer 无效的原因是什么?

assembly - 在表达式中减去 NASM 宏的意外结果

assembly - 在屏幕上移动对象的最佳方式是什么?

c - 绕过地址随机化和堆栈粉碎保护 - 缓冲区溢出攻击的可行性

python - Python中内存高效的大量numpy数组

memory - CPU会出错吗?

c++ - 从模板基类继承构造函数而不重复模板参数?

c++ - boost::random经常在不同状态下从同一种子生成相同值

java 如何自己实现System.arraycopy()

c++ - 处理电子邮件标题中的空行