如果我改变控制寄存器 cr0 的值会发生什么?
What happens if I change the value of the control register cr0?
我正在阅读有关 Linux 内核的信息,并且我了解了 cr0
控制寄存器,该寄存器存储有关 分页 、 的标志保护模式等
我想知道,如果有可能的话,如果我以某种方式设法更改 cr0
的值以修改标志,会发生什么情况?
我不想通过禁用分页或其他任何方式破坏内存中的某些内容,所以我想自己尝试一下,但我担心会发生什么。
如果您是 运行 内核代码,当然可以(并且在启动时有必要)修改 CR0。大多数时候,修改它只会导致您的系统或多或少立即崩溃。
我不知道这是否值得 "afraid" -- 取决于您对重启计算机的关心程度。您可以在 this page 上看到 CR0 控制的所有内容。修改它需要修改 Linux 内核或编写内核模块。如果您尝试从用户空间代码访问它(例如,使用内联汇编),那么您的用户空间程序将简单地遇到错误并退出,就像您尝试从无效地址读取时发生的情况一样。
我正在阅读有关 Linux 内核的信息,并且我了解了 cr0
控制寄存器,该寄存器存储有关 分页 、 的标志保护模式等
我想知道,如果有可能的话,如果我以某种方式设法更改 cr0
的值以修改标志,会发生什么情况?
我不想通过禁用分页或其他任何方式破坏内存中的某些内容,所以我想自己尝试一下,但我担心会发生什么。
如果您是 运行 内核代码,当然可以(并且在启动时有必要)修改 CR0。大多数时候,修改它只会导致您的系统或多或少立即崩溃。
我不知道这是否值得 "afraid" -- 取决于您对重启计算机的关心程度。您可以在 this page 上看到 CR0 控制的所有内容。修改它需要修改 Linux 内核或编写内核模块。如果您尝试从用户空间代码访问它(例如,使用内联汇编),那么您的用户空间程序将简单地遇到错误并退出,就像您尝试从无效地址读取时发生的情况一样。