与CR3寄存器类似,用于指向页面目录。 Linux也使用分页并用C语言编写,但这些寄存器如何在C中使用(如何使用C选择特定的寄存器)?
答案 0 :(得分:5)
C语言无法访问特定的处理器寄存器。这完全取决于编译器。
要访问特定的寄存器,您必须至少在汇编程序中编写代码的这一部分。
答案 1 :(得分:4)
您正在谈论的寄存器不是该语言的属性,而是您运行程序的硬件的属性。我相信你在谈论x86型硬件。 cr0-4和其他特定的regs是操作系统的属性,由它管理,包括分页表。
因此,该语言不提供访问这些特定于hw的寄存器的方法。唯一的方法是编写汇编代码(特定于硬件)来操作它们。该语言提供的唯一内容是asm()
运算符,它允许在程序中插入汇编代码。
答案 2 :(得分:3)
标准C不提供任何直接访问处理器寄存器的工具。某些实现可能提供扩展,允许您在C代码中嵌入汇编代码(例如gcc提供的asm
扩展名)。
一般来说,如果您需要直接访问处理器寄存器(或其他特定于硬件的位置),您可以在汇编程序中编写该例程并将其链接到更大的程序中。