0

我想使用 C 程序访问 RISC-V 的寄存器文件。有什么方法可以使用 C 程序直接写入和读取 RISC-V 的寄存器文件?

4

1 回答 1

2

没有使用 C 语言访问寄存器的可移植方式,因为 C 在寄存器/ RTL(粗略地说)之上的抽象级别上工作。

但是,可能有编译器特定的方法可以做到这一点,使用内置的编译器内部函数。看:

https://gcc.gnu.org/onlinedocs/gcc/Target-Builtins.html

https://gcc.gnu.org/onlinedocs/gcc/Explicit-Register-Variables.html

https://gcc.gnu.org/onlinedocs/gcc/Global-Register-Variables.html

https://gcc.gnu.org/onlinedocs/gccint/Registers.html

请参阅这些其他 StackOverflow 问题:

在不使用 gcc 的内联汇编的情况下访问寄存器

将寄存器值读入 C 变量

编辑

使用 GCC 的 C-intrinsics 似乎不支持 RISC-V 寄存器访问。您可能必须使用(内联)汇编来实现它。

编辑2

如果您知道它们的地址,一些(大多数?)嵌入式处理器在没有操作系统的情况下运行裸机(即不在虚拟内存系统中)可以访问它们的寄存器。但这在很大程度上取决于您运行的硬件。正如 Erik Eidt 所问:你想做什么?

于 2021-01-29T12:21:21.157 回答