一、CSR简介

在Riscv中CSR是Control and Status Register(控制和状态寄存器)的简写,注意CSR就是寄存器。而CSR指令就是操作CSR寄存器的一组指令。CSR最多有4096个。CSR独立编址。

二、CSR指令

所有的CSR指令都会对CSR进行读——改——写操作。CSR指令中共有12位(20-31位)用来指示被“读改写”的是哪一个寄存器。

CSRRW指令

CSRRW指令可以原子性地读写CSR(Atomic Read/Write CSR)。

Created with Raphaël 2.2.0 开始 指定的CSR的值存入目的通用寄存器 源通用寄存器的值存入目的CSR 结束

注意,若目的通用寄存器为x0,则不会执行读取操作;若源通用寄存器为x0或立即数0也不会进行写入CSR操作。
指令格式:CSRRW rd, csr, rs1

CSRRS指令

CSRRS指令可以原子性地读取并置位CSR的指定位(Atomic Read and Set Bits in CSR)。此指令会读取指定CSR的值到目的寄存器;然后将源通用寄存器作为掩码,写bit 1到CSR——也就是源通用寄存器中所有为1的位所对应的CSR中的那一位都会被写1(如果那一位可写的话),源通用寄存器中所有为0的位所对应的CSR中的位都保持原来的值
指令格式:CSRRS rd, csr, rs1

CSRRC指令

CSRRC指令可以原子性地读取并清零CSR的指定位(Atomic Read and Clear Bits in CSR)。此指令和CSRRS指令类似,需要注意的是源通用寄存器中为1的位在CSR中所对应的位会被清零
指令格式:CSRRC rd, csr, rs1

CSRRWI指令

此指令和CSRRW指令类似,只不过将32位的源寄存器替换为了5位的无符号立即数,5位的立即数在赋值到CSR之前会在立即数前补0,使其整体为32位。
指令格式:CSRRWI rd, csr, uimm

CSRRSI指令

此指令和CSRRS类似,只不过将源寄存器替换为了5位的无符号立即数,0-拓展方式和CSRRWI一样。
指令格式:CSRRWI rd, csr, uimm

CSRRCI指令

此指令和CSRRC类似,只不过将源寄存器替换为了5位的无符号立即数,0-拓展方式和CSRRWI一样。
指令格式:CSRRWI rd, csr, uimm

Riscv CSR指令详解相关推荐

  1. arm-linux-ld中的参数,arm-linux-ld指令详解

    arm-linux-ld指令详解 我们对每个c或者汇编文件进行单独编译,但是不去连接,生成很多.o 的文件,这些.o文件首先是分散的,我们首先要考虑的如何组合起来:其次,这些.o文件存在相互调用的关系 ...

  2. 九爷带你了解 nginx 日志配置指令详解

    nginx日志配置指令详解 日志对于统计排错来说非常有利的. 本文总结了nginx日志相关的配置如 access_log.log_format.open_log_file_cache.log_not_ ...

  3. movsb movsw movsd 指令详解

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u013490896/article/d ...

  4. java中Freemarker list指令详解

    java Freemarker中list指令主要是进行迭代服务器端传递过来的List集合. 定义 <#list nameList as names> ${names} </#list ...

  5. C#中的预处理指令详解

    这篇文章主要介绍了C#中的预处理指令详解,本文讲解了#define 和 #undef.#if.#elif.#else和#endif.#warning和#error.#region和#endregion ...

  6. pragma comment的使用 pragma预处理指令详解

    pragma comment的使用 pragma预处理指令详解 #pragma comment( comment-type [,"commentstring"] ) 该宏放置一个注 ...

  7. PUSHA/PUSHAD POPA/POPAD 指令详解

    PUSHA/PUSHAD POPA/POPAD 指令详解 官方文档的解释 在<Intel Architecture Software Developer's Manual Volume 2:In ...

  8. Dockerfile 指令详解1

    Dockerfile 指令详解 我们已经介绍了 FROM,RUN,还提及了 COPY, ADD,其实 Dockerfile 功能很强大,它提供了十多个指令.下面我们继续讲解其他的指令. COPY 复制 ...

  9. 大数据WEB阶段(十三)JSP(一)JSP基础、JSP指令详解、四大域九大隐式对象总结

    JSP基础.指令.四大作用域九大隐式对象总结 (一)JSP基础 一.JSP概述 jsp其实是java动态页面技术 HTML可以用来组织页面但是HTML是一种静态web资源技术无法嵌入动态数据. Ser ...

最新文章

  1. 按键精灵-Sub和Function
  2. matlab全景图像拼接_带你认识网络高清全景监控摄像机
  3. C++基础知识-Day8
  4. STL编程:C++的忠告!
  5. Python3条件判断
  6. Java面试题 20在面向对象编程里,经常使用is-a来说明对象之间的继承关系
  7. Python~win32com~Excel
  8. 戴尔r720服务器增加内存,dell r720服务器加了一根内存后,开机显示configuring memory,卡在这里进不了系统,请问这是什么情况?...
  9. VMware 6.5下载地址及序列号(转,备用)
  10. (转)淘淘商城系列——SSM框架整合之Dao层整合
  11. 使用ASP.NET Web API和Handlebars的Web模板
  12. linux下组管理命令详解
  13. UserWarning: Error checking compiler version for cl
  14. MOSS2007匿名调查列表使用分页符导致的错误分析
  15. cad填充图案乱理石_CAD填充图案文件在哪个文件夹里?
  16. Java实现的快递柜管理系统(附上完整代码可用作期末课程设计)
  17. HTML页面悬浮球,html滑动仿悬浮球菜单
  18. 若琪智能音响Rokid硬件拆解及系统架构分析
  19. s3c2440A操作24C08
  20. Beethoven, Mozart, Chopin on my iPhone 4S

热门文章

  1. ①ntsd命令介绍和②tskill命令介绍
  2. linux下dlsym返回的函数地址的具体含义
  3. html5 控件赋值,jquery给textarea赋值
  4. 仿乐享微信源码介绍与分享
  5. 分段线性插值法实验报告_数值分析-插值法
  6. 湖南大学21夏训练四21.回文串
  7. PTA字符串压缩 (10 分)
  8. Mac系统截图快捷键技巧
  9. #if 0 和 #endif 的用处
  10. 友盟推送8.0信息不展示(推送状态却为已送达)