硬件软件接口 (RISC-V) Chapter 2
计算机组成与设计-硬件软件接口 Chapter2
- 指令集
- RISC-V简介
- RISC-V基本语法
- 计算机硬件的操作数
- 指令格式
- 逻辑运算
- 32个寄存器
指令集
The words of a computer’s language are called instructions, and its vocabulary is called an instruction set.
----Computer Organization and Design: The Hardware / Software Interface
RISC-V简介
RISC-V由UC Berkeley于2010年开发,与此相对应的,MIPS诞生于1980s,Intel x86则诞生于1970s。
RISC-V基本语法
- 32个寄存器标注为x0~x31,x0永远等于0。
- 共有261个存储字,记为Memory[0], Memory[4]……
指令类别 | 指令名称 | 样例 | 翻译 |
---|---|---|---|
算术 | 加法 | add x5. x6. x7 | x5 = x6 + x7 |
减法 | sub x5. x6. x7 | x5 = x6 - x7 | |
立即数加 | addi x5. x6. 20 | x5 = x6 + 20 | |
数据传输 | 加载双字 | ld x5. 40(x6) | x5 = Memory[x6 + 40] |
加载字 | lw x5. 40(x6) | ||
加载无符号字 | lwu x5. 40(x6) | ||
加载半字 | lh x5. 40(x6) | ||
加载无符号半字 | lhu x5. 40(x6) | ||
加载比特 | lb x5. 40(x6) | ||
加载无符号比特 | lbu x5. 40(x6) | ||
-------- | |||
存储双字 | sd x5. 40(x6) | Memory[x6 + 40] = x5 | |
存储字 | sw x5. 40(x6) | ||
存储无符号字 | swu x5. 40(x6) | ||
存储半字 | sh x5. 40(x6) | ||
存储无符号半字 | shu x5. 40(x6) | ||
存储比特 | sb x5. 40(x6) | ||
存储无符号比特 | sbu x5. 40(x6) | ||
-------- | |||
load reserved | |||
store conditional | |||
load upper immediate | |||
逻辑 | 与 | and x5. x6. x7 | x5 = x6 & x7 |
或 | or x5. x6. x8 | x5 = x6 or x8 | |
异或 | xor x5. x6. x9 | x5 = x6 ^x9 | |
立即数与 | andi x5. x6. 20 | x5 = x6 & 20 | |
立即数或 | ori x5. x6. 20 | x5 = x6 or 20 | |
立即数异或 | xori x5. x6. 20 | x5 = x6 ^ 20 | |
移位 | 逻辑左移 | sll x5. x6. x7 | x5 = x6 << x7 |
立即数逻辑左移 | slli x5. x6. 3 | x5 = x6 << 3 | |
逻辑右移 | srl x5. x6. x7 | x5 = x6 >> x7 | |
算术右移 | srax5. x6 .x7 | x5 = x6 >> x7 | |
立即数逻辑右移 | srli x5. x6. 3 | x5 = x6 >> 3 | |
立即数算术右移 | srai x5. x6. 3 | x5 = x6 >> 3 | |
条件分支 | 相等时分支 | beq x5. x6. 100 | if (x5 == x6) go to PC + 100 |
不相等时分支 | bne x5. x6. 100 | if (x5 != x6) go to PC + 100 | |
小于则分支 | blt x5. x6. 100 | if (x5 < x6) go to PC + 100 | |
大于等于则分支 | bge x5. x6. 100 | if (x5 >= x6) go to PC + 100 | |
无符号,小于时分支 | bltu x5. x6. 100 | if (x5 < x6) go to PC + 100 | |
无符号,大于等于则分支 | bgeu x5. x6. 100 | if (x5 >= x6) go to PC + 100 | |
无条件分支 | 跳转并链接 | jal x1. 100 | x1 = PC + 4 |
跳转并链接寄存器 | jalr x1. 100(x5) | x1 = PC + 4 |
计算机硬件的操作数
- RISC-V的单个寄存器64bits宽。
- least significant bit用来指代右下的bit(图中的0),most significant bit指代左上的bit(图中的63)
- 每条RISC-V指令翻译成二进制代码之后由六个"fields"组成,分别长7,5,5,3,5,7bits。其中三个5bits用来存放三个操作数所对应的寄存器编号。
- 为了和汇编语言相区分,我们把二进制版本的命令称为机器语言或机器码。
- Java依靠软件解释器(software interpreter)来执行。它的指令集称为Java字节码而不是类似RISC-V这样的机器语言,效率较低
指令格式
R(register)-type:
funct7 | rs2 | rs1 | funct3 | rd | opcode |
---|---|---|---|---|---|
7 bits | 5 bits | 5 bits | 3 bits | 5 bits | 7 bits |
I(Immediate)-type: 12 bits用来存地址,rd表示目标寄存器,单寄存器
immediate | rs1 | funct3 | rd | opcode |
---|---|---|---|---|
12 bits | 5 bits | 3 bits | 5 bits | 7 bits |
S-type:
immediate | rs2 | rs1 | funct3 | immediate | opcode |
---|---|---|---|---|---|
7 bits | 5 bits | 5 bits | 3 bits | 5 bits | 7 bits |
opcode = 操作码,funct3和funct7是两个额外的存放操作码的空间
rd = register destination
rs = register source
逻辑运算
算术右移:把左边空出来的位用右边超出去的位来补齐
32个寄存器
编号 | 描述 | call时是否受保护 |
---|---|---|
x0 | 常数0 | 硬件编码 |
x1(ra) | 返回地址寄存器(return address) | 是 |
x2(sp) | 栈指针(stack pointer) | 是 |
x3(gp) | 全局指针(global pointer) | 是 |
x4(tp) | 线程指针(thread pointer) | 是 |
x5 ~ x7 | 临时寄存器 | 否 |
x8 ~ x9 | 保留寄存器 | 是 |
x10 ~ x17 | 传参或传递返回值 | 否 |
x18 ~ x27 | 保留寄存器 | 是 |
x28 ~ x31 | 临时寄存器 | 否 |
(未完待续)
硬件软件接口 (RISC-V) Chapter 2相关推荐
- 计算机组成与设计硬件/软件接口 (MIPS版)
买了一本<计算机组成与设计硬件/软件接口(MIPS版)>,非科班出身的我,从事计算机行业已经8年了,却对计算机的基础什么也不专业.有点惭愧,因为对时间的流逝而感到遗憾!行了,但有言说,多无 ...
- 图书推荐|计算机组成与设计(原书第5版) 硬件软件接口 RISC-V
计算机组成与设计(原书第5版) 硬件软件接口 RISC-V 这本书是引进过来的,本系列图书广受盛誉,有两位"图灵奖"得主撰写,书的权威性及细致性不言而喻,两位作者的履历也是让我们 ...
- 计算机组成与设计 硬件/软件接口 Risc-v 版
第一章 计算机抽象及相关技术 1.1 引言 1.1.1 传统的计算机应用分类及其特点 个人计算机(Personal Computer, PC) 通用,各种软件;受成本.性能权衡 服务器(Sever C ...
- 龙芯杯学习笔记之计算机组成和设计(硬件/软件接口)
另一篇学习笔记的地址--(13条消息) 龙芯杯学习笔记之自己动手写CPU_qq_33880925的博客-CSDN博客 本篇博客目前尚未写完,看完本篇博客目前已写的内容后(看完第二部分)对MIPS有初步 ...
- 计算机硬件和软件英语,计算机组成与设计:硬件/软件接口(英文版 原书第5版 ARM版)...
本书采用ARMv8-A体系结构, 介绍当前硬件技术的基本原理.汇编语言.计算机算术.流水线.内存层次结构和I/O.本书更加关注后PC时代发生的变革,通过实例.练习等详细介绍*新涌现的移动计算和云计算, ...
- 【计算机组成与设计 硬件/软件接口-2】MIPS指令集架构
指令:计算机的语言 引言 所谓指令集,指的就是计算机的全部指令,这章节将以MIPS指令集作为学习对象,如果是x86指令集,还请参考<深入理解计算机系统>.MIPS指令集在嵌入式芯片市场占有 ...
- 计算机组成与设计英文版在线,计算机组成与设计(硬件软件接口英文版原书第5版RISC-V版)/经典原版书库...
目录 CHAPTERS 1 Computer Abstractions and Technology 1.1 Introduction 1.2 Eight Great Ideas in Compute ...
- 计算机组成与设计:硬件/软件接口
见百度云 链接:https://pan.baidu.com/s/1ZSEykxbKqBygtpJCQXTdkQ 提取码:1a2b 复制这段内容后打开百度网盘手机App,操作更方便哦
- 计算机ps2定义,软件硬件界面接口定义 bt656 硬件接口定义
软件工程里面的"接口"到底是什么意思? 1. 接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与 ...
最新文章
- 【C++】【五】循环链表
- ASP.NET控件事件丢失的探究
- LuoguP2292 L语言
- Redis基础数据结构内部实现简单介绍
- rails 共享变量_如何将Rails实例变量传递给Vue组件
- Samba Linux 和windows 共享
- java流式api,Java 8 中流式API性能基准测试
- [转]粤语发音字典-粤语翻译
- Spring Cloud 入门 之 Zuul 篇(五)
- python建立文件数据库_python学习-- Django根据现有数据库,自动生成models模型文件...
- java hql多条件查询_JSP 开发之hibernate的hql查询多对多查询
- 认知无线电的能量检测
- 下列不是python内置函数的是_Python 内置函数
- 好货推荐!两款免费的 Linux 桌面录制工具
- 用MATLAB仿真AM调制
- MSSQL2008中的时间日期类型摘录
- Raptor软件与学习资料
- Assigning Pods to Nodes(将Pod分配到Node)
- 百行代码发射红心,程序员何愁命不中女朋友!
- 计算机动漫与游戏制作职业群,四川省工业贸易学校计算机动漫与游戏制作专业...