la a0, _start //把 _start地址放到a0

li a1, 1 // 把立即数1 放到a1

slli a1, a1, 29 //这里的值是 a1的值<<29 值放到a1

bleu a1, a0, _start0800 // a1 < a0,跳转到_start0800

srli a1, a1, 2 // a1 >>2 a1的值 右移2 后值放到a1

lw: 从数据存储器中取数据写进寄存器

sw:将寄存器中的值写入数据存储器

*********************************************************************************

csrr rd,csr 读一个csr中的值到rd中,相当于  csrrs rd,csr,zero

csrw csr ,rs1 写rs1寄存器的值到csr中,相当于csrrw zero,csr,rs1

csrc csr, rs1 根据rs1中的值按位对csr的值清0,相当于csrrc zero,csr,rs1

csrs csr, rs1 根据rs1的值按位对csr的值置1,相当于csrrs zero,csr,rs1

以 i 结尾的伪指令,都是立即数指令,用立即数替换了rs1,操作是一致的。

Control and Status Register Instructions (CSR)

CSR Instructions

CSRRW (Atomic Read/Write CSR) :CSRRW reads the old value of the CSR, zero-extends the value to XLEN bits, then writes it to integer register rd

The initial value in rs1 is written to the CSR

CSRRS (Atomic Read and Set Bits in CSR) :

The initial value in integer register rs1 is treated as a bit mask that specifies bit positions to be set in the CSR

Any bit that is high in rs1 will cause the corresponding bit to be set in the CSR

CSRRC (Atomic Read and Clear Bits in CSR) :

The initial value in integer register rs1 is treated as a bit mask that specifies bit positions to be cleared in the CSR .

high in rs1 will cause the corresponding bit to be cleared in the CSR

CSRR rd, csr, is encoded as CSRRS rd, csr, x0

CSRW csr, rs1, is encoded as CSRRW x0, csr,rs1

RISCV--汇编指令相关推荐

  1. ir指令、立即数的作用_我们一起学RISC-V——08-RV32I 指令应用实战

    本期内容如下: RV32I 指令应用注意事项 指令立即数取值范围 RISC-V汇编伪指令 图1 一.RV32I 指令应用注意事项 RISC-V为了追求硬件设计上的简化,很多功能并没有单独实现,而是通过 ...

  2. 计算机系统基础(六)之RISC-V汇编

    文章目录 前言 一.RISC-V汇编语言简介 汇编语言的优缺点 二.汇编语言语法介绍 三.RISC-V汇编指令总览 RISC-V 汇编指令操作对象 RISC-V 汇编指令分类 RISC-V 汇编伪指令 ...

  3. RISC-V 常用汇编指令

    RISCV 常用汇编指令 相关寄存器 寄存器 ABI 名 用途 Saver x0 zero 读取时总为 0, 写入时不起任何效果 - x1 ra 存放函数返回地址 (return address) C ...

  4. RISC-V扩展指令示例

    自定义RISC-V扩展指令 要实现协处理器的设计,必然会涉及到新的指令.比如蜂鸟书籍<手把手教你设计CPU--RISC-V处理器篇>[1]第十六章中实现3*3矩阵的行列和运算时就定义了三条 ...

  5. Helix MP3解码库脱离汇编指令束缚,运行在任何处理器上的解决方案

    1.主要动机 Helix是应用广泛的MP3音频解码库,但是由于原版代码只针对ARM处理器和X86处理器做了底层的优化并有且只有适配这两种构架的处理器的底层代码.而常用的处理器架构远远不止这两种,例如英 ...

  6. riscv的c语言编译,RiscV汇编介绍(1)-编译过程

    把高层的c/c++源文件转化为可执行文件的过程如下图所示(linux操作系统为例): 以hello.c程序为例,我们看下编译,汇编,链接到生产可执行文件的过程. 1.hello.c代码如下:#incl ...

  7. RiscV汇编基础学习

    文章目录 一.基础概念 指令集---指示计算机执行某种操作的命令,是计算机运行的最小功能单位. 复杂指令集CISC(如x86)和精简指令集RISC(如arm.riscV)---两种指令集的优化设计方向 ...

  8. 32位汇编寄存器及汇编指令

    32位CPU所含有的寄存器有: 4个数据寄存器(EAX.EBX.ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES.CS.SS.DS.FS和 ...

  9. 实验1 查看CPU和内存、用机器指令和汇编指令编程

     实验任务 一.使用Debug,用E命令和A命令以两种方式将指令写入内存 机器码        汇编指令 b8 20 4e     mov ax,4E20H 05 16 14     add ax,1 ...

  10. 寄存器和常用的汇编指令

    为了学习需要,最近查看了一下汇编,因为是个初学者很多东东基本不动,所以记录一下基本指令和寄存器,那样就会对汇编慢慢的适应,看得懂那些华丽花哨的反汇编代码了.学习这个东东基本是为了破解和逆向工程使用,因 ...

最新文章

  1. EFQRCode:自动生成花式二维码
  2. MP3 编码解码 附完整c代码
  3. Leetcode-探索 | 旋转数组
  4. 【CodeForces - 227A】Where do I Turn? (计算几何,叉积判断直线拐向)
  5. spring MVC中页面添加锚点
  6. java ldap添加用户名密码_java ldap用户密码md5加密
  7. java divide 用法_java中BigDecimal加减乘除基本用法
  8. 获取linux数据段地址,获取kernel各个数据段,代码段的地址及范围
  9. Java线程基础(二)
  10. 设计【SPFA】【差分约束】
  11. 两个栈实现一个队列(图解),一看就懂
  12. 阿里Android开发手册正式版一览
  13. 刻录光驱只能读不能写怎么办?来看看!
  14. 《人人都能玩赚ChatGPT》:一份简明易懂的 ChatGPT 技术指南
  15. 疫情之后,SaaS的春天就来了吗?
  16. 数字IC设计工程师的知识结构(转载学习)
  17. C++别踩白块小游戏
  18. 汇编语言(四)-8086的指令系统
  19. 计算机术语表达因果,因果推断简介之五:因果图 (Causal Diagram)
  20. 毕业设计怎么快速搞定——工具开篇,无往不利!

热门文章

  1. javaScript canvas从入门到骨灰级玩家(基础篇)
  2. 什么是语言类型的强弱?
  3. nginx日志log
  4. 关于Map入参,出参
  5. 克隆虚拟机 - hyperv
  6. Linux——基本指令
  7. 请连接虚拟服务器来配置,datastage8.7客户端连接虚拟服务器 无法连接显示 (用户名和/或密码不正确。如果使用了凭证映射,请检查凭证映射用户名和密码是否配置正确。 (80011))...
  8. 【程序设计】暴力枚举
  9. 网络技术-ENSP 华为模拟器(二)静态路由配置-3路由3PC
  10. 2017国产品牌台式计算机,2017三大热门国产平板电脑推荐