RISC-V汇编简介

RISC-V汇编简介

汇编语言有3类指令组成:
a.汇编指令:机器码的助记符,有对应的机器码,可以翻译成对应的二进制机器码。
b.伪指令:没有对应的机器码,由汇编器解释执行,可以翻译成多条汇编指令,也可以没有对应汇编指令,
c.其他符合:如+、-、*、/等,由编译器识别,没有对应的机器码。

汇编语法介绍
[LABEL:][OPERATION][COMMENT]
LABEL:GNU汇编中,以冒号结尾的标识符都被认为是一个标号
OPERATION:操作,可以有以下几种类型:
1).汇编指令
2).伪指令
3).directive:通过类似指令的形式(以 “.” 开头),通知汇编器如何控制代码的产生等,不对应具体的指令。如:.text .global _start
4).macro: 采用.macro/.endm自定义的宏
COMMENT:注释,常用#开始到当前行结束。

RISC-V汇编指令操作对象
a.寄存器: 32个通用寄存器X0-X31,以及cpu 各个模式下的专用寄存器CSR
在RISC-V中,Hart在执行算术逻辑运算时所操作的数据必须直接来自寄存器
b.内存:
Hart可以执行在寄存器和内存之间的数据读写操作;
读写操作使用字节为基本单位进行寻址
RV32可以访问最多2^32个字节的内存空间

RISC-V汇编指令编码格式
RISC-V汇编简介_第1张图片
6种指令格式(format)
R-type:(Register),每条指令中有三个 fields,用于指定 3 个 寄存器参数
I-type: Immediate),每条指令除了带有两个寄存器参数外,还带有一个立即数参数 (宽度为 12 bits)。
S-type: (Store),每条指令除了带有两个寄存器参数外,还带有一个立即数参数(宽 度为 12 bits,但 fields 的组织方式不同于 I-type)
B-type: (Branch),每条指令除了带有两个寄存器参数外,还带有一个立即数参数(宽度 为 12 bits,但取值为 2 的倍数)。
U-type: (Upper),每条指令含有一个寄存器参数再加上一个立即数参数(宽度为 20 bits,用于表示一个立即数的高 20 位)
J-type: (Jump),每条指令含有一个寄存器参数再加上一个立即数参数(宽度为 20 bits)

你可能感兴趣的:(RISC-V汇编,mcu,risc-v,嵌入式)