计算机组成与设计-硬件软件接口 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基本语法

  1. 32个寄存器标注为x0~x31,x0永远等于0。
  2. 共有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相关推荐

  1. 计算机组成与设计硬件/软件接口 (MIPS版)

    买了一本<计算机组成与设计硬件/软件接口(MIPS版)>,非科班出身的我,从事计算机行业已经8年了,却对计算机的基础什么也不专业.有点惭愧,因为对时间的流逝而感到遗憾!行了,但有言说,多无 ...

  2. 图书推荐|计算机组成与设计(原书第5版) 硬件软件接口 RISC-V

    计算机组成与设计(原书第5版)  硬件软件接口 RISC-V 这本书是引进过来的,本系列图书广受盛誉,有两位"图灵奖"得主撰写,书的权威性及细致性不言而喻,两位作者的履历也是让我们 ...

  3. 计算机组成与设计 硬件/软件接口 Risc-v 版

    第一章 计算机抽象及相关技术 1.1 引言 1.1.1 传统的计算机应用分类及其特点 个人计算机(Personal Computer, PC) 通用,各种软件;受成本.性能权衡 服务器(Sever C ...

  4. 龙芯杯学习笔记之计算机组成和设计(硬件/软件接口)

    另一篇学习笔记的地址--(13条消息) 龙芯杯学习笔记之自己动手写CPU_qq_33880925的博客-CSDN博客 本篇博客目前尚未写完,看完本篇博客目前已写的内容后(看完第二部分)对MIPS有初步 ...

  5. 计算机硬件和软件英语,计算机组成与设计:硬件/软件接口(英文版 原书第5版 ARM版)...

    本书采用ARMv8-A体系结构, 介绍当前硬件技术的基本原理.汇编语言.计算机算术.流水线.内存层次结构和I/O.本书更加关注后PC时代发生的变革,通过实例.练习等详细介绍*新涌现的移动计算和云计算, ...

  6. 【计算机组成与设计 硬件/软件接口-2】MIPS指令集架构

    指令:计算机的语言 引言 所谓指令集,指的就是计算机的全部指令,这章节将以MIPS指令集作为学习对象,如果是x86指令集,还请参考<深入理解计算机系统>.MIPS指令集在嵌入式芯片市场占有 ...

  7. 计算机组成与设计英文版在线,计算机组成与设计(硬件软件接口英文版原书第5版RISC-V版)/经典原版书库...

    目录 CHAPTERS 1 Computer Abstractions and Technology 1.1 Introduction 1.2 Eight Great Ideas in Compute ...

  8. 计算机组成与设计:硬件/软件接口

    见百度云 链接:https://pan.baidu.com/s/1ZSEykxbKqBygtpJCQXTdkQ 提取码:1a2b 复制这段内容后打开百度网盘手机App,操作更方便哦

  9. 计算机ps2定义,软件硬件界面接口定义 bt656 硬件接口定义

    软件工程里面的"接口"到底是什么意思? 1. 接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与 ...

最新文章

  1. 【C++】【五】循环链表
  2. ASP.NET控件事件丢失的探究
  3. LuoguP2292 L语言
  4. Redis基础数据结构内部实现简单介绍
  5. rails 共享变量_如何将Rails实例变量传递给Vue组件
  6. Samba Linux 和windows 共享
  7. java流式api,Java 8 中流式API性能基准测试
  8. [转]粤语发音字典-粤语翻译
  9. Spring Cloud 入门 之 Zuul 篇(五)
  10. python建立文件数据库_python学习-- Django根据现有数据库,自动生成models模型文件...
  11. java hql多条件查询_JSP 开发之hibernate的hql查询多对多查询
  12. 认知无线电的能量检测
  13. 下列不是python内置函数的是_Python 内置函数
  14. 好货推荐!两款免费的 Linux 桌面录制工具
  15. 用MATLAB仿真AM调制
  16. MSSQL2008中的时间日期类型摘录
  17. Raptor软件与学习资料
  18. Assigning Pods to Nodes(将Pod分配到Node)
  19. 百行代码发射红心,程序员何愁命不中女朋友!
  20. 计算机动漫与游戏制作职业群,四川省工业贸易学校计算机动漫与游戏制作专业...

热门文章

  1. 科学研究设计三:抽样
  2. cesium添加高德影像图
  3. 《Shopify从入门到精通》笔记(4~6章)
  4. jenkins自动打包报错:cannot find symbol
  5. Flash鼠绘入门第四课:绘制漂亮的梅花-梅花Flash鼠绘方法一
  6. 回溯法解决部落冲突问题
  7. 2016年7月17日学习 scratch 钢琴键
  8. 良许Linux | 寓教于乐!一款游戏让你成为 Vim 高手!
  9. 搭建嵌入式开源开发环境
  10. android自动接收并填充短信验证码