前言
(1)此系列文章是跟着汪辰老师的RISC-V课程所记录的学习笔记。
(2)该课程相关代码gitee链接;
(3)PLCT实验室实习生长期招聘:招聘信息链接
正文
(1)在跟着汪辰老师做OS文件夹的实验时候,我先使用make clean将文件清空,然后再使用make编译出现了如下报错
riscv64-unknown-elf-gcc -nostdlib -fno-builtin -march=rv32ima -mabi=ilp32 -g -Wall -c -o start.o start.Sstart.S: Assembler messages:
start.S:11: 错误:unrecognized opcode `csrr t0,mhartid'
(2)修改方法也很简单
cd ../..
vim common.mk
# -march=rv32ima 修改为 -march=rv32g
(3)个人猜测的原因,因为汪辰老师使用的老版本的RISC-V编译器,而新版本的编译器有所更新。所以会导致出现不兼容的特性。
(3)在老师的第二章课程里面,也说了,g == imafd
。经过测试发现csrr
指令是在f
指令集里面的。
(4)关于RV32I指令集的更多介绍,可以查看https://zhuanlan.zhihu.com/p/540887151
参考文章
(1)在01-helloRVOS中使用make debug报错 unrecognized opcode;
(2)汪辰老师第二章课件;
(3)RISC-V汇编语言入门(六) —RV32I指令集;