@Yunxiang He, heyx1@shanghaitech.edu.cn @Quanyu Chen, chenqy2022@shanghaitech.edu.cn @Yongzhi Zhang, zhangyz2022@shanghaitech.edu.cn @Chaofan Li, lichf1@shanghaitech.edu.cn @Qihan Ding, dingqh@shanghaitech.edu.cn
heyx1@shanghaitech.edu.cn
chenqy2022@shanghaitech.edu.cn
zhangyz2022@shanghaitech.edu.cn
lichf1@shanghaitech.edu.cn
dingqh@shanghaitech.edu.cn
Document Statement 这是我们第一次撰写类似文档。如果你认为有任何描述不清晰的部分(不包括知识性问题),你可以直接联系助教,我们会尽快进行调整和修改。 在第三周之后,我们会发布最终文档,一切以最终文档为准。
Document Statement
这是我们第一次撰写类似文档。如果你认为有任何描述不清晰的部分(不包括知识性问题),你可以直接联系助教,我们会尽快进行调整和修改。 在第三周之后,我们会发布最终文档,一切以最终文档为准。
这节课我们首先介绍 RISC-V 指令集中最基本的两种指令格式:R-Type 和 I-Type。
这节课中,我们会举一些例子,带大家熟悉这两种指令的使用方式和格式。
funct7
rs2
rs1
funct3
rd
opcode
作为执行寄存器之间的运算的指令,R-Type 指令的指定 rs1 和 rs2 两个寄存器,然后将运算结果存储到 rd 寄存器中。
and
and x10, x1, x7
0110011
111
0000000
00001
00111
01010
imm [11:0]
I-Type 指令用于立即数和寄存器之间的运算。这种指令的格式中,rs1 为源寄存器,imm 为立即数,rd 为目标寄存器。
imm
addi
addi x10, x1, 10
0010011
000
000000000010
按顺序执行以下指令:
addi x1, x2, -1 or x2, x2, x1 add x3, x1, x2 slt x4, x3, x1 sra x5, x3, x4 sub x0, x5, x4
右图为程序执行过程中寄存器的状态
addi x1, x2, -1
x2
-1
x1
0
0xFFFFFFFF
or x2, x2, x1
OR
add x3, x1, x2
x3
-2
0xFFFFFFFE
slt x4, x3, x1
x4
1
slt
sltu
srl x5, x3, x4
x5
0x7FFFFFFF
@ Presented by Yunxiang He @ ShanghaiTech University
align: center