指令集解释

(规定:R[r]表示通用寄存器r的内容,M[addr]表示存储单元addr的内容,SEXT[imm]表示对imm进行符号扩展,ZEXT[imm]表示对imm进行零扩展)

整数运算类

-U型指令

lui rd,imm20:将该立即数存到寄存器rd的高20位,低12位为0

auipc rd,imm20:将20位的立即数加到PC的高20位上,结果存入rd

(auipc x10,0可以获取当前PC的内容,并存入x10中,因为这个立即数为0,所以就是把PC值加到x10上,获取PC的内容)

-I型指令(均含i,i表示一个操作数为立即数)

addi rd,rs1,imm12:将12位的立即数imm12符号扩展到32位(因为是符号扩展,就是在立即数的前面加上20个符号位),再+rs1中内容,结果放在rd。(这个指令可以直接加一个负数)

附:addi指令和lui指令结合可以对一个32位变量初赋值,无法在RISC v指令中直接给出一个32位立即数,需要将常数分解为两个立即数,先装高20位,再对低12位进行符号扩展,加到那20位上

slli rd,rs1,shamt(shamt是20~24位,是立即数,五位,32个,可以存放左移位数)将rs1的内容左移shamt位之后存到rd中。

(左移可以通过寄存器、立即数方式指定位数,但只有逻辑左移,因为逻辑左移和算术左移的结果相同,只有一个就行;

右移的话有高位补0和高位补符号两种,所以需要两种右移指令,位数指定也是两种方法)

一个例子 P118的例4.3 挺不错的 和别人讨论讨论

slti/sltiu rd,rs1,imm12:imm12都采用符号扩展,扩展后和rs1中的内容进行比较(无符号和有符号的情况不同吧?),小于——1存入rd,否则,0存入rd

控制转移类

-分支指令(都是B型指令

beq/bne/blt/bge/bltu/bgeu:rs1与rs2的内容满足条件,就跳转到目标处,否则依次执行下一条

(注:转移目标地址采用相对寻址方式,为指令中的立即数(偏移量)*2,就是左移一位,不过不太明白为啥指令宽度是4,指令地址最低位就是0)

-跳转指令

jal rd,imm20(J型指令):跳转到目标地址,并把不跳转时将要执行的指令地址(返回地址)存到存储器中

转移目标地址偏移量是imm20左移一位并进行符号扩展,基准是PC;并把PC+4(返回地址)保存到rd。

(如果将返回地址保存到x1,则可以实现过程调用,如果rd是x0,则可以实现无条件跳转,因为x0是0位寄存器,值恒为0且不能更改)

jalr rd,rs1,imm12:PC=rs1的内容+imm12扩展后的数,PC+4的值存到rd

jalr x0,x1,0 可以实现过程调用的返回(叠buff)

存储器访问指令

load相关:(rs1寄存器内容+imm12进行32位扩展后的数)的存储器的内容放到rd寄存器中。

带符号不足32位的,按符号扩展为32位;无符号不足32位的,按0扩展为32位后,放入rd。

store相关:rs2寄存器的内容放到(rs1寄存器内容+imm12进行32位扩展后的数)的存储器内容中,小端存放(从低位开始放)

计组学习笔记2(RISC v版)相关推荐

  1. 计组学习笔记(一):浮点数的表示和运算

    最近学习计算机组成原理,遇到许多疑难问题,接下来写一写我在学习浮点数方面知识的理解,在巩固的同时也方便日后的复习. 一.浮点数的表示 1.浮点数的表示格式 浮点数,顾名思义,就是小数点不固定的数.计算 ...

  2. 计组学习笔记之总线系统

    目录 总线的概念和结构形态 总线的基本概念 总线的分类 总线的物理实现 总线的特性 总线的性能指标 总线的连接方式 单总线结构 双总线结构 三总线结构 多总线结构 总线的内部结构 早期总线内部结构 现 ...

  3. 计组学习笔记(四):高速缓冲存储器Cache

    一.为什么要有Cache 我们知道存储器的层次结构为,CPU-->寄存器--Cache--主存--磁盘--磁带.光盘,假设没有Cache这一层,那就相当于我CPU要想找东西直接去主存找,CPU速 ...

  4. 总线标准 (计组学习笔记)

    愿世间美好与你环环相扣 ! 本章内容了解即可 文章目录 基本概念 总线标准 系统总线 ISA与EISA 局部总线 PCI AGP PCIE VESA 设备总线 USB 总线 RS-232C IDE S ...

  5. 计组学习笔记之CPU(3)——硬布线控制器和微程序控制器

    目录 控制器 控制器的结构和功能 硬布线控制器 硬布线控制器的定义 硬布线控制器结构 逻辑网络输入信号的三个来源 硬布线控制器的基本原理 微操作控制信号 微操作控制信号的产生 安排微操作时序的原则 微 ...

  6. 计算机的五大组成部分(计组学习一)

    大家好,我是贺贺,一个爱唱歌但是五音不全的程序员 计算机组成原理系列 计算机的五大组成部分(计组学习一) 计算机各个部件配合完成加减乘除(计组学习二) 计算机的故事 在开始啃计算机组成原理(下文简称计 ...

  7. 计算机各个部件配合完成加减乘除(计组学习二)

    大家好,我是贺贺. 计算机组成原理系列 计算机的五大组成部分(计组学习一) 计算机各个部件配合完成加减乘除(计组学习二) 预热一下 当我们了解了计算机的五大组成部分后,下面我来聊聊计算机的各个部件是怎 ...

  8. ASP.Net学习笔记007--ASP.Net Input版自增

    2016/1/18 以前写的课程都没有附上源码,很抱歉! 课程中的源码可以加qq索要:1606841559 技术交流qq1群:251572072 技术交流qq2群:170933152 也可以自己下载: ...

  9. VCS User Guide学习笔记【使用精简版】

    VCS_UG学习笔记 除了说明性质的内容,关于命令和仿真,均是默认Verilog语言,暂不考虑SystemVerilog相关的内容. 环境: 运行脚本来验证你的系统配置:syschk.sh 库: 名称 ...

最新文章

  1. 你想知道的“ROC曲线”
  2. LDialog基于DialogFragment封装的库,也许是一个Nice的库
  3. 聊聊 #pragma 和 // MARK:
  4. Zend SDK学习-1
  5. 如何更改自己电脑上的COM端口号
  6. 删除个别主机的Know_hosts文件信息
  7. 数据可视化|实验三 分析特征内部数据分布于分散状况
  8. python OSError: [Errno 24] Too many open files | HTTPConnectionPool(host=‘‘, port=80): Max retries e
  9. uva 10771——Barbarian tribes
  10. 深度学习(七十)darknet 实现编写mobilenet源码
  11. linux操作系统常用命令
  12. IEEE access参考文献的添加
  13. vs2005中文版/2010中文旗舰版等安装步骤和注意
  14. 利用matlab求解二维水动力,[转载]MIKE系列软件之二维河口与海岸模拟软件MIKE 21...
  15. Linux与网络基础知识
  16. 心灵捕手——走进内心世界
  17. alert#40;1#41; to xss.haozi.me with #0x02
  18. DZZOffice(大桌子)企业文档协同平台教程系列(三)——ONLYOFFICE社区版部署、配置
  19. PXC 避免加入集群时发生SST
  20. 硬件版--苹果ios免越狱脚本实现硬件方案

热门文章

  1. VMware虚拟机上LINUX系统的安装及其练习题
  2. fmri与GLM应用
  3. 苹果安卓虚拟视频插件刷机包
  4. 电脑不能连接网络的解决办法
  5. 清华系ChatGPT发布!唐杰团队打造,专对中文优化,还能把握最新新闻动态
  6. 数字化时代 App 们将何去何从?
  7. [创业之路-48] :动态股权机制 -3- 静态股权分配 VS 动态股权分配
  8. 阿里云apt-get安装包时Err:2 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security/main amd64 git amd64
  9. 多光纤推接 (MPO) 连接器
  10. 26平移-XY轴平移——html