【发布时间】:2017-09-25 13:24:04
【问题描述】:
就像CR3寄存器用来指向页面目录一样。 Linux 也使用分页,是用 C 编写的,但是这些寄存器在 C 中是如何使用的(如何使用 C 选择特定的寄存器)?
【问题讨论】:
-
如果要直接使用寄存器,需要用汇编语言编写代码。
-
以及如何初始化宏?(我的意思是我已经阅读了一些宏来选择寄存器)并且我还没有在 linux 的分页源代码中看到汇编语言。该代码是如何工作的?
-
你实际上想要达到什么目的。通常你不需要在 C 中使用 CPU 寄存器,顺便说一句,C 语言 C 没有指定如何访问寄存器。但是许多编译器都有扩展,允许您直接寻址 CPU 寄存器。
-
@karansharma 那你看的不够仔细。为了编写 cr3,在 arch/x86/include/system.h 中有一个名为
write_cr3的函数。它具有内联汇编器。 (这是我使用的特定版本的 linux,可能在其他版本中有所不同) -
谢谢阿特,我明白了。
标签: c linux linux-kernel