我想使用 C 程序访问 RISC-V 的寄存器文件。有什么方法可以使用 C 程序直接写入和读取 RISC-V 的寄存器文件?
问问题
430 次
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-intrinsics 似乎不支持 RISC-V 寄存器访问。您可能必须使用(内联)汇编来实现它。
编辑2
如果您知道它们的地址,一些(大多数?)嵌入式处理器在没有操作系统的情况下运行裸机(即不在虚拟内存系统中)可以访问它们的寄存器。但这在很大程度上取决于您运行的硬件。正如 Erik Eidt 所问:你想做什么?
于 2021-01-29T12:21:21.157 回答