1. RISC-V通用寄存器和程序计数器
在之前的RISC-V简介中主要有
RISC-V 简介(1)RISC-V的由来
RISC-V 简介(2)RISC-V指令集的特点及分类
RISC-V 简介(3)RISC-V处理器前景及中国CPU发展现状
RISC-V 简介(4)RISC-V指令集编码结构
本文将开始详细讲解RISC-V指令集。CPU中包含32个通用寄存器,有时候也会被称为通用寄存器文件,如图1所示。通用寄存器的命名方式为X0-X31。其中第一个寄存器X0的值,被硬连线到0,因此值永远是0。其他寄存器X1-X31都是可读可写的。0-31也叫做索引号,索引号也可以理解为寄存器的地址,当指令需要调用通用寄存器时可以通过索引号查找。之后将会在介绍FPGA程序时讲解如何设计读写寄存器文件。对于32位系统,所有通用寄存器的宽度都是32bit,寄存器总个数也是32个。
PC(program counter)是程序计数器,也是一个寄存器。在CPU中PC寄存器并不和上述32个通用寄存器在一起,寄存器文件中不包含PC。PC的宽度和通用寄存器的宽度一样。XLEN的值一般跟RISC-V CPU架构有关系。 如果是32位架构的CPU,那么XLEN的值就是32。图1中XLEN-1 = 32-1 =31,即在一个通用寄存器中的最高位为31。在64位CPU中通用寄存器的宽度是64,同时PC宽度也是64位,最高位为64-1 =63。
图1 RISC-V通用寄存器和PC [1]
2. RISC-V汇编指令类型
RV32I 可被分为六种基本指令格式:
用于寄存器-寄存器操作的R类型指令
用于立即数和访存load操作的I 型指令
用于访存store操作的S型指令
用于条件跳转操作的B类型指令
用于长立即数的U型指令
用于无条件跳转的J型指令
图2列出来6种基本指令的机器码格式。
图2 6种基本指令的机器码格式 [2]
2.1. R-Type 介绍
2.2. I-Type 介绍
2.3. S-Type 介绍
2.4. U-Type 介绍
2.5. B-Type 介绍
2.6. J-Type 介绍
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。