计组学习笔记2(RISC v版)
指令集解释
(规定: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.浮点数的表示格式 浮点数,顾名思义,就是小数点不固定的数.计算 ...
- 计组学习笔记之总线系统
目录 总线的概念和结构形态 总线的基本概念 总线的分类 总线的物理实现 总线的特性 总线的性能指标 总线的连接方式 单总线结构 双总线结构 三总线结构 多总线结构 总线的内部结构 早期总线内部结构 现 ...
- 计组学习笔记(四):高速缓冲存储器Cache
一.为什么要有Cache 我们知道存储器的层次结构为,CPU-->寄存器--Cache--主存--磁盘--磁带.光盘,假设没有Cache这一层,那就相当于我CPU要想找东西直接去主存找,CPU速 ...
- 总线标准 (计组学习笔记)
愿世间美好与你环环相扣 ! 本章内容了解即可 文章目录 基本概念 总线标准 系统总线 ISA与EISA 局部总线 PCI AGP PCIE VESA 设备总线 USB 总线 RS-232C IDE S ...
- 计组学习笔记之CPU(3)——硬布线控制器和微程序控制器
目录 控制器 控制器的结构和功能 硬布线控制器 硬布线控制器的定义 硬布线控制器结构 逻辑网络输入信号的三个来源 硬布线控制器的基本原理 微操作控制信号 微操作控制信号的产生 安排微操作时序的原则 微 ...
- 计算机的五大组成部分(计组学习一)
大家好,我是贺贺,一个爱唱歌但是五音不全的程序员 计算机组成原理系列 计算机的五大组成部分(计组学习一) 计算机各个部件配合完成加减乘除(计组学习二) 计算机的故事 在开始啃计算机组成原理(下文简称计 ...
- 计算机各个部件配合完成加减乘除(计组学习二)
大家好,我是贺贺. 计算机组成原理系列 计算机的五大组成部分(计组学习一) 计算机各个部件配合完成加减乘除(计组学习二) 预热一下 当我们了解了计算机的五大组成部分后,下面我来聊聊计算机的各个部件是怎 ...
- ASP.Net学习笔记007--ASP.Net Input版自增
2016/1/18 以前写的课程都没有附上源码,很抱歉! 课程中的源码可以加qq索要:1606841559 技术交流qq1群:251572072 技术交流qq2群:170933152 也可以自己下载: ...
- VCS User Guide学习笔记【使用精简版】
VCS_UG学习笔记 除了说明性质的内容,关于命令和仿真,均是默认Verilog语言,暂不考虑SystemVerilog相关的内容. 环境: 运行脚本来验证你的系统配置:syschk.sh 库: 名称 ...
最新文章
- 你想知道的“ROC曲线”
- LDialog基于DialogFragment封装的库,也许是一个Nice的库
- 聊聊 #pragma 和 // MARK:
- Zend SDK学习-1
- 如何更改自己电脑上的COM端口号
- 删除个别主机的Know_hosts文件信息
- 数据可视化|实验三 分析特征内部数据分布于分散状况
- python OSError: [Errno 24] Too many open files | HTTPConnectionPool(host=‘‘, port=80): Max retries e
- uva 10771——Barbarian tribes
- 深度学习(七十)darknet 实现编写mobilenet源码
- linux操作系统常用命令
- IEEE access参考文献的添加
- vs2005中文版/2010中文旗舰版等安装步骤和注意
- 利用matlab求解二维水动力,[转载]MIKE系列软件之二维河口与海岸模拟软件MIKE 21...
- Linux与网络基础知识
- 心灵捕手——走进内心世界
- alert#40;1#41; to xss.haozi.me with #0x02
- DZZOffice(大桌子)企业文档协同平台教程系列(三)——ONLYOFFICE社区版部署、配置
- PXC 避免加入集群时发生SST
- 硬件版--苹果ios免越狱脚本实现硬件方案
热门文章
- VMware虚拟机上LINUX系统的安装及其练习题
- fmri与GLM应用
- 苹果安卓虚拟视频插件刷机包
- 电脑不能连接网络的解决办法
- 清华系ChatGPT发布!唐杰团队打造,专对中文优化,还能把握最新新闻动态
- 数字化时代 App 们将何去何从?
- [创业之路-48] :动态股权机制 -3- 静态股权分配 VS 动态股权分配
- 阿里云apt-get安装包时Err:2 http://mirrors.cloud.aliyuncs.com/ubuntu xenial-security/main amd64 git amd64
- 多光纤推接 (MPO) 连接器
- 26平移-XY轴平移——html