第二章 机器语言基础
约 423 个字 3 张图片 预计阅读时间 1 分钟
1. 基础:
ISA: 指令集架构,instruction set architecture
完整的ISA包含:
- 指令种类
- 指令的执行方式
- 指令的操作数
主要分成两类:
- 精简指令集计算机:对指令数目和寻址方式都做了精简,使其实现更容易,指令并行执行程度更好,编译器的效率更高
- 复杂指令集计算机
寄存器 (registers):CPU 内用来暂存指令、数据和地址的内部存储 在 RISC-V 架构中,一共有 32 个寄存器,且每个寄存器的大小为 64bit。
- 寄存器的命名规则:
xn
,其中n
为整数,取值范围为0-31
- 可以将寄存器简单理解为 CPU 的全局变量
- 每种寄存器的用途:
2. 指令集介绍
2.1 加减
- 加法:
-
add: 寄存器 1 + 寄存器 2
add reg1, reg2, reg3 // (in C) reg1 = reg2+reg3
-
addi (add immediate): 寄存器+常量
addi reg1, reg2, const
- 减法:
-
sub
: 寄存器 1 - 寄存器 2sub reg1, reg2, reg3 // reg1= reg2-reg3
-
注意:没有
subi
,可以通过addi
一个负常数来实现减法运算
2.2 逻辑运算符
- 前面两个操作
sll,slli/srl,srli
为逻辑左移 / 右移(无符号数),右移时最左边补 0(零扩充) - 第三种移位操作(
sra,srai
)为算术右移(符号数),最左边补符号位(符号扩充) - 逻辑门:and or xor / andi, ori, xori
and|or|xor reg1, reg2, reg3
// reg reg1 = reg reg2 &(, |, ^) reg reg3
注:RISC-V 中没有 NOT 指令,因为它可以通过异或表示出来:任何数与 111...111 异或的结果即为该数取反后的结果
2.3 数据传输指令 | Data Transfer
寄存器和内存之间来回传递数据