NJU-ICS 2024学习随笔PA2_1(RTFSC(2))
2024-10-12
新坑待填
正在写
2024-10-21
主播这么久没更新不是似了,是因为主播的虚拟机炸了。
出现了以下问题:
打开ubuntu22.04时没有图形界面
解决办法有两种:
sudo systemctl restart gdm 或者 sudo systemctl restart lightdm
startxsudo apt install --reinstall ubuntu-desktop
sudo reboot
没有网络/重启后没有ens33
我的情况是没有网卡了
可以使用ip a或者ifconfig查看网络情况,看看有没有ens33
可以使用sudo dhclient -v把ens33打开
但是我是没有网卡了,光这样做重启后还是没有ens33
可以通过以下指令解决
sudo lshw -numeric -class network
sudo route -nv
sudo dhclient -v
OK,现在是解决了,明天开始进入正题
2024-10-29
2024-10-27
只能说读代码确实有点耗时间
(加上我要考的学校前两天刚把保研名单发出来,算了算就招十几个,有点影响心态。但是现在没问题了,想了想,努努力试试呢)
通过批处理模数运行NEMU
在abstract-machine/scripts/platform/nemu.mk的15行中有
NEMUFLAGS += -l $(shell dirname $(IMAGE).elf)/nemu-log.txt
最后加一个-b就可以了
NEMUFLAGS += -l $(shell dirname $(IMAGE).elf)/nemu-log.txt -b
相关的内容可以看看nemu/src/monitor/monitor.c中的parse_args函数
2024-10-29
我找到了一个中文的文档,最后面有指令的设计,我直接参考这个写的,还有一些问题,正在调
2024-10-30
不知道出现了什么问题,但是感觉应该不全是我的问题,是添加了一些指令,但是仍然不能pass,所以我放弃了,等以后遇到了再说。。。。
本来是这么想的。。
但是我突然想起来,有HIT GOOD TRAP的信息就表示运行成功了。
所以,应该是运行成功了。接下来贴代码
路径ics2024/nemu/src/isa/riscv32/inst.c中添加
enum {
TYPE_I, TYPE_U, TYPE_S, TYPE_J, TYPE_B, TYPE_R,//Here is the info obtained from the manual
TYPE_N, // none
};
#define immJ() do { *imm = SEXT(((BITS(i, 31, 31) << 19) | BITS(i, 30, 21) | (BITS(i, 20, 20) << 10) | (BITS(i, 19, 12) << 11)) << 1, 21); } while (0)
static void decode_operand(Decode *s, int *rd, word_t *src1, word_t *src2, word_t *imm, int type) {
uint32_t i = s->isa.inst.val;
int rs1 = BITS(i, 19, 15);
int rs2 = BITS(i, 24, 20);
*rd = BITS(i, 11, 7);
switch (type) {
case TYPE_I: src1R(); immI(); break;
case TYPE_U: immU(); break;
case TYPE_S: src1R(); src2R(); immS(); break;
case TYPE_J: immJ(); break;
}
}
static int decode_exec(Decode *s) {
/*
....
*/
INSTPAT_START();
INSTPAT("??????? ????? ????? 010 ????? 01000 11", sw , S, Mw(src1 + imm, 4, src2));
INSTPAT("??????? ????? ????? 000 ????? 00100 11", addi , I, R(rd) = src1 + imm);
INSTPAT("??????? ????? ????? ??? ????? 00101 11", auipc , U, R(rd) = s->pc + imm);
INSTPAT("??????? ????? ????? 100 ????? 00000 11", lbu , I, R(rd) = Mr(src1 + imm, 1));
INSTPAT("??????? ????? ????? 000 ????? 01000 11", sb , S, Mw(src1 + imm, 1, src2));
INSTPAT("??????? ????? ????? ??? ????? 11011 11", jal , J, s->dnpc = s->pc + imm; R(rd) = s->snpc);
INSTPAT("??????? ????? ????? 000 ????? 11001 11", jalr , I, s->dnpc = (src1 + imm) & ~1ull; R(rd) = s->snpc);
/*
....
*/
}
唉,本来昨天就写完了。
吐槽部分:
这个张宇的8套卷越做越离谱,要么难的一点不会,要么简单的一眼秒,没有过渡的难度(就那种,想一想,然后恍然大悟的感觉),而且3h根本写不完,很难过,分也不高,感觉离目标有点遥远。
计组也拉下好久没看了,明天争取早点结束数学,然后看看计组。英语也得背背作文,政治也得背,我是真不喜欢背东西,脑子不太好使。
2025-01-16
写了一个简单的shell脚本来一键运行所有的cpu-tests/tests中所有的程序并获得输出的结果。
但是输出是有瑕疵的,有大神可以改成自己喜欢的方式
#!/bin/bash
directory=路径
for file_n in ${directory}/*
do
f_name=`basename $file_n .c`
output=$(make ARCH=$ISA-nemu ALL=$f_name run)
last_line=$(echo "$output" | tail -n 1)
echo "$last_line" >> all_result.txt
done
clear
cat all_result.txt
rm all_result.txt
但是发现,输出好像除了dummy都是pass,就很奇怪,我还在看为什么

浙公网安备 33010602011771号