# 编译原理 05 - 目标代码生成
# RISC-V 指令集
精简指令集,精简的含义就是一条指令要么做运算,要么存,取内存。
# 寄存器
RISC-V 有 32 个寄存器,名称分别为 X0,X1...X31
但实际上不会按这些名称来使用,而是按照约定来使用,一些寄存器有专门的用途
X0: zero 寄存器,专门存放数字 0
ra: 存放 return address
pc(X31): program counter
# 指令
li : 加载立即数 li t0,0
add: 加法,有三个操作数: add t5,t3,t4 , t5 = t3+t4
addi: 加法,但有一个操作数是立即数
risc-v 里没有 mov 指令,或者说 mov 指令是一个伪指令,实际上是用 add, target, source, zero 来实现的
在.data 段声明全局变量:
.data:
g: .word 0 想.word 这样的是给汇编器看的,表示占用 4B
数组:
g: .word 0,1,2
字符串:
msg: .string "The result is :" #后面会自动加上 '\0' 不想加就用.ascii
使用全局变量:
la t0, g #la; load address
lw t0, 0 (t0) #lw: load word 这里 0 表示偏移量 并且以字节为单位