• 2024-08-01ysyx: 完善库函数
    nemu把库函数分为了与架构有关的isa部分和与架构无关的klib部分。这部分的任务,就是完善stdio.cstdlib.c和string.c,让各种测试集、跑分和demo可以正常运行。值得一提的是,我也是看到这一部分,回看测试集时,才注意到测试集用的其实都是C语言自带的关键字和基本功能,没有使用到特定
  • 2024-07-30ysyx:测试永远不够
    尽管指令匹配的部分早就已经完成,但这并不代表代码方面就不会再检测出漏洞。cpu-test这个测试集文件夹里面的测试代码只是覆盖了一部分内容,即使是全部通过,你的代码也仍有可能是错误的。当我在处理其他内容时,突然间nemu就卡在了代码某处提示地址错误。重新打开difftest,定位
  • 2024-07-11ysyx: 指令规则的匹配
    dummy的反汇编表:80000000<_start>:80000000:00000413lis0,080000004:00009117auipcsp,0x980000008:ffc10113addisp,sp,-4#80009000<_end>8000000c:00c000ef
  • 2024-06-13ysyx:接入nvboard
    ysyx的nvboard项目里自带了一个example,用来演示功能,同时也给出了简单的使用说明。要将自己的verilog代码接入nvboard,首先需要生成一份nvboard.a库文件。在nvboard目录下makenvboardarchive,然后将库文件放到npc文件夹下的目录文件。假设我们的c++文件只有main.cpp,元件代码只有to
  • 2024-06-03ysyx:对数学表达式的理解
    数学表达式的递归分解顺序和日常的顺序是完全相反的。一方面,原本的高级运算符要后进行拆分,另一方面,原本的从左到右的运算顺序使得拆分运算符时要从最右侧进行拆分。要解析一个带有括号的长表达式并没有想象中那么容易我对括号处理的理解有问题,识别括号时,不是两侧有括号+括号匹配
  • 2024-05-13ysyx:BNF表达式
    BNF表达式以前没有学过,ysyx的nemu项目里用到了,在这里整理一下学习笔记。 BNF表达式可以简洁地定义一种语言的格式,基本格式为:<non-terminal>::=<replacement> 。non-terminal为”非终止符号“,replacement为代替物,可以用于诠释左边的内容。举个例子:<句子>::=<主语><谓语
  • 2024-01-26一生一芯-Linux环境搭建
    1.gdb调试1.gdb-qFilename进入gdb调试器2.(gdb)b3 在第三行添加断点 breakpoint3.(gdb)run 执行程序4.(gdb)whatisiNum 查看iNum的数据类型5.(gdb)c 继续执行程序(直到下一个断点或者之后没有断点就运行完整个程序)6.(gdb) n 一步一步执行程序7.(gdb)piNu
  • 2024-01-25ysyx:verilator的初步学习
    虽然已经看过了c语言,但是verilator用的语法我还是第一次见。moduletop(inputa,inputb,outputf);assignf=a^b;endmodule//这是verilog代码,单另起一个文件,后缀用.v不要当成c的代码------------------------------------------------------