单片机学习小组
登录
直播中
张勇
7年用户
1373经验值
私信
关注
CSRRW指令是怎样读取在CSR中的旧值的
开启该帖子的消息推送
指令
RISC-V
CSR
RISC-V CSR相关的指令集有哪些呢?
CSRRW指令是怎样读取在CSR中的旧值的?
回帖
(1)
王文雨
2022-2-11 09:30:51
CSRRW(Atomic Read/Write CSR) 指令原子性的交换CSR和寄存器中的值。 CSRRW指令读取在CSR中的旧值,将其零扩展到32位,然后写入整数寄存器rd中,rs1寄存器中的值将被写入CSR中。如果rd为x0,则不对csr执行读操作
示例:
csrrw t6,mscratch,t6 t6=mscratch mscratch=t6
伪指令csrw csr rs <==> csrrw x0, csr, rs 写寄存器CSR
CSRRS(Automic Read and Clear Bits in CSR) 指令读取CSR的值,将其零扩展到32位,然后写入rd中,rs1中的初始值被当做按位掩码指明了哪些CSR中的位被置为1,rs1中的任何为 1 的位,将导致 CSR 中对应位被置为 1,如果 CSR 中该位是可以写的话。CSR 中的其他位不受影响。
示例:csrrs x5, mie, x6 x5 = mie; mie |= x6 ;
伪指令 csrr rd csr <==> csrrs rd, csr, x0 读寄存器CSR
CSRRC(Atomic Read and Clear Bits in CSR)指令读取 CSR 的值,将其零扩展到 32位,然后写入整数寄存器 rd 中。整数寄存器 rs1 中的初始值被当做按位掩码指明了哪些 CSR 中的位被置为 0。rs1 中的任何为 1 的位,将导致 CSR 中对应位被置为 0,如果 CSR 中该位是可以写的话。CSR 中的其他位不受影响。
示例:csrrc x5, mie, x6 x5 = mie; mie &= x6
CSRRWI/CSRRSI/CSRRCI 和以上三个命令的区别是用5bit 的无符号立即数(zero-extending)代替了 rs1。
对于相关伪指令的意义可以总结如下表:
ECALL 命令用于主动触发异常,根据调用 ECALL 的权限级别产生不同的 exception code;异常产生时 epc 寄存器的值存放的是 ECALL 指令本身的地址。
EBREAK指令被调试器所使用,用来将控制权传送回给调试环境。
CSRRW(Atomic Read/Write CSR) 指令原子性的交换CSR和寄存器中的值。 CSRRW指令读取在CSR中的旧值,将其零扩展到32位,然后写入整数寄存器rd中,rs1寄存器中的值将被写入CSR中。如果rd为x0,则不对csr执行读操作
示例:
csrrw t6,mscratch,t6 t6=mscratch mscratch=t6
伪指令csrw csr rs <==> csrrw x0, csr, rs 写寄存器CSR
CSRRS(Automic Read and Clear Bits in CSR) 指令读取CSR的值,将其零扩展到32位,然后写入rd中,rs1中的初始值被当做按位掩码指明了哪些CSR中的位被置为1,rs1中的任何为 1 的位,将导致 CSR 中对应位被置为 1,如果 CSR 中该位是可以写的话。CSR 中的其他位不受影响。
示例:csrrs x5, mie, x6 x5 = mie; mie |= x6 ;
伪指令 csrr rd csr <==> csrrs rd, csr, x0 读寄存器CSR
CSRRC(Atomic Read and Clear Bits in CSR)指令读取 CSR 的值,将其零扩展到 32位,然后写入整数寄存器 rd 中。整数寄存器 rs1 中的初始值被当做按位掩码指明了哪些 CSR 中的位被置为 0。rs1 中的任何为 1 的位,将导致 CSR 中对应位被置为 0,如果 CSR 中该位是可以写的话。CSR 中的其他位不受影响。
示例:csrrc x5, mie, x6 x5 = mie; mie &= x6
CSRRWI/CSRRSI/CSRRCI 和以上三个命令的区别是用5bit 的无符号立即数(zero-extending)代替了 rs1。
对于相关伪指令的意义可以总结如下表:
ECALL 命令用于主动触发异常,根据调用 ECALL 的权限级别产生不同的 exception code;异常产生时 epc 寄存器的值存放的是 ECALL 指令本身的地址。
EBREAK指令被调试器所使用,用来将控制权传送回给调试环境。
举报
更多回帖
rotate(-90deg);
回复
相关问答
指令
RISC-V
CSR
CH32V307
读取
CSR
寄存器会进入HardFault_Handler怎么解决?
2022-05-12
1301
labview串口读写不同
指令
,有的
指令
无法
读取
2017-10-13
4634
CSR
蓝牙AT
指令
集,求大神指教,求共享
2014-04-11
2540
什么是ID?
怎样
去
读取
ID
值
?
2021-05-19
789
怎样
读取
MSP430
中
P2IN寄存器
中
的P3.1的
值
?
2023-11-02
130
怎样
使用STM32 Nucleo L476
读取
或写入寄存器位呢?
2023-01-17
96
在
操作系统
中
怎样
去使用ls -l
指令
呢
2021-10-19
907
使用sipeed rv debugger调试maix dock板,
读取
不到
csr
0怎么解决?
2023-09-13
91
在
arm
中
如何取绝对
值
,用浮点
指令
吗?
2022-11-07
2419
LPC54608以太网MDIO
CSR
时钟范围如何设置为180MHz?
2023-04-03
166
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分