如何在C中使用寄存器?

时间:2017-09-25 13:24:04

标签: c linux linux-kernel

与CR3寄存器类似,用于指向页面目录。 Linux也使用分页并用C语言编写,但这些寄存器如何在C中使用(如何使用C选择特定的寄存器)?

3 个答案:

答案 0 :(得分:5)

C语言无法访问特定的处理器寄存器。这完全取决于编译器。

要访问特定的寄存器,您必须至少在汇编程序中编写代码的这一部分。

答案 1 :(得分:4)

您正在谈论的寄存器不是该语言的属性,而是您运行程序的硬件的属性。我相信你在谈论x86型硬件。 cr0-4和其他特定的regs是操作系统的属性,由它管理,包括分页表。

因此,该语言不提供访问这些特定于hw的寄存器的方法。唯一的方法是编写汇编代码(特定于硬件)来操作它们。该语言提供的唯一内容是asm()运算符,它允许在程序中插入汇编代码。

答案 2 :(得分:3)

标准C不提供任何直接访问处理器寄存器的工具。某些实现可能提供扩展,允许您在C代码中嵌入汇编代码(例如gcc提供的asm扩展名)。

一般来说,如果您需要直接访问处理器寄存器(或其他特定于硬件的位置),您可以在汇编程序中编写该例程并将其链接到更大的程序中。