用GCC 12的时候提示找不到csrrw这些指令,查了下,原来20191213版本的spec把csr相关指令放到Zicsr扩展中了。原文如下:
While CSRs are primarily used by the privileged architecture, there are several uses in unprivi-
leged code including for counters and timers, and for floating-point status.
The counters and timers are no longer considered mandatory parts of the standard base
ISAs, and so the CSR instructions required to access them have been moved out of the base ISA
chapter into this separate chapter.
问题是,CSR中不光有计数器和定时器呀,还有别的寄存器,比如mstatus、mepc、mcause、mtvec等等,这些寄存器都是必不可少的。
扩展的意思是可以不用,难道不用Zicsr指令能构建一颗能用的MCU?退一步来说即使是定时器和计数器作为强制部分也没什么不妥,隔壁ARM的SysTick计数器也是核心的一部分。
RISC-V这个CSR感觉和51的SFR有点神似,标准定义访问这段空间的指令和一些通用的寄存器,厂家再根据自己的需要进行扩展,增加一些寄存器,但是访问这些寄存器的指令肯定是必不可少的,不太理解CSR访问指令为什么要作为扩展。大家怎么理解?
离线