![](/img/trans.png)
[英]Using C++ Emulator fails when calling printf syscall from a RISC-V baremetal program
[英]Using C-program can I access register file of RISC-V?
我想使用 C 程序訪問 RISC-V 的寄存器文件。 有什么方法可以使用 C 程序直接寫入和讀取 RISC-V 的寄存器文件?
沒有使用 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 所問:你想做什么?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.