Skip to content

第二章 机器语言基础

约 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 - 寄存器 2

    sub 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

寄存器和内存之间来回传递数据

Comments