目前仅新增了异常的测试,中断还未完工,欢迎大佬提供建议!
感谢异常部分数据生成器作者:郝梓翔
感谢陈睿正同学的修改版mars
下载新版本coKiller后运行,跟随提示操作即可
数据生成器下载地址(随时会更新)下载后请自行替换掉internal文件夹中的同名文件
数据生成器源码仓库链接,欢迎大佬提出修改建议
评测机相关的python源码下载
下面是写评测机时用到的相关学习网站
同学你好,感谢你的指出!貌似mars在运行的时候有些问题,已对数据生成器做出修改,在原文最后处下载即可。
或者也可以使用两人对拍模式!
首先感谢您的评测机,对我计组debug有很大的帮助!
但是我有一些疑惑:如图,在报错之前,我们对Timer0第0个寄存器写入了值c4d8,但课程组给的代码
wire [31:0] load = Addr[3:2] == 0 ? {28'h0, Din[3:0]} : Din;
意思为当存第0个寄存器时只保留[3:0]位,所以报错处读出的数据应该为00000008,但标准显示c4d8(貌似没有做一些处理?)
支持自己写测试点,并进行mars或两人对拍,操作方法如下:
- 将自己写的测试点复制进result文件夹中的testcode.asm
- 在选择测试次数的时候输入1 ,即测试一次
- 之后随提示操作即可
同学你好,非常感谢你开源的评测机!
使用的时候遇到了两点问题:
- 使用addu作为RI时,其实MARS会执行但是我们的CPU应该跳转到0x4180异常处理
- 有时会出现跳转到一个处于正常PC范围,但是由于testcode长度不够,未定义IM的地址部分,此时PC处于正常范围但是会读出XXXXXXXX,这个对于不同的RI判定实现会造成评测的差异
同学你好,感谢你制作的评测机!
我在使用的时候发现了一个问题:测试数据开头并不会打开 IE(全局中断使能),这就导致我的 CPU 不能响应任何中断和异常,无法与魔改 Mars 进行对拍。
全局中断使能不影响异常的响应???
看到这句话我真的很惊讶。教程中说:
全局中断使能,该位置 1 表示允许中断,置 0 表示禁止中断。
答疑帖中助教对此的解释:
对于此处的“全局中断使能”,其含义不是全局中断的使能,而是全局的中断使能;更准确的解释为(源自 MIPS32® 4K® Processor Core Family Software User’s Manual):
Interrupt Enable. Acts as the master enable for software and hardware interrupts.
一种比较形象化的理解是:如果 SR 寄存器的 IM 域为分开关,那么 IE 域就是总控开关。
不过修改了以后确实多过了两个点。谢谢你的帮助。
同学你好,首先感谢你的题问,请你再看一下计组教程中和讨论区答疑帖中,对“中断”,“异常”,“外部中断”三个名词的解释。
我的理解是,IE,即SR[0],是全局中断使能,若其为0,则不再接受来自timer0,timer1,interrupt的三个中断信号。而并不影响对异常的判断。即IE即使为0,若程序中出现异常,仍有可能进入异常处理程序
若我的理解有误,欢迎指正。