12 2024 档案

摘要:在进行pa4:多道程序的处理时,其中一道题目除了要完成kcontext,还需要对应修改trap.s的__asm_trap函数。使得中断响应机制能正确切换不同进程的上下文,在kocontext已经修改好以后,要修改这里其实也很容易。 __am_asm_trap: addi sp, sp, -CONTE 阅读全文
posted @ 2024-12-17 17:19 namezhyp 阅读(19) 评论(0) 推荐(0) 编辑
摘要:有关时间的内容应该被拆分为两部分:硬件和库环境 在使用nemu时,硬件部分由nemu充当,在nemu里对时间的处理如下:首先查看/nemu/src/device/timer.c, static void rtc_io_handler(uint32_t offset, int len, bool is 阅读全文
posted @ 2024-12-10 22:26 namezhyp 阅读(20) 评论(0) 推荐(0) 编辑
摘要:在RTL里,由于我将指令的分析与处理拆成了两个单元,所以指令的拆解也被分到了两个元件。由于指令的opcode部分没有重叠,所以我直接在组合逻辑里用case来区分指令opcode,在内部再根据funct3 funct7等值进行区分。nemu里的指令分析用到了正则匹配,但在这里我们不需要考虑。 alwa 阅读全文
posted @ 2024-12-08 11:56 namezhyp 阅读(47) 评论(0) 推荐(0) 编辑
摘要:difftest在测试集中可以起到十分重要的作用,可以快速找到发生问题的指令和pc寄存器地址。在nemu作为dut,参考其他模拟器(比如spike)的功能中,大部分代码已经完成,我们只需要完成寄存器的比对即可。但在RTL中重新实现这一功能或者类似功能时,我们需要完成更多函数,但大体的框架已经完成,我 阅读全文
posted @ 2024-12-05 18:35 namezhyp 阅读(61) 评论(0) 推荐(0) 编辑
摘要:nemu本身自带了将自己编译为动态库的功能,在menuconfig->build target里选择shared object即可。 在编译完成后,build文件夹里就会出现riscv32-nemu-interpreter-so这个库。首先可以用file命令检查文件,只要返回信息是lsb,share 阅读全文
posted @ 2024-12-03 18:19 namezhyp 阅读(71) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示