这学期的计算机架构课的project是写一个MIPS模拟器,语言不限,我用java写的。
MIPS是一套符合RISC标准的汇编语言。
第一部分的要求是能读取一个二进制文件,输出二进制编码和对应的MIPS命令到一个文本文件。
比如,二进制文件里是
00100000000010000000000000101100
我需要做的就是先读进来,然后判断是命令还是数据,如果是命令的话,断开成655556的格式
001000 00000 01000 00000 00000 101100
并且加上行号,最后加上对应的MIPS命令
ADDI R8, R0, #44
如果是数据的话,就直接翻译成数字
不难,不过还是挺麻烦的,很多小地方需要注意,大概有这么几块:
1. 命令行参数的处理
2. 二进制文件的读取,文本文件的输出
3. 二进制数到整数的转换,里面涉及到有的是不带符号的,有的是带符号的,还要复习了 2's complement 补码的知识
4. 最重要的当然是要熟悉MIPS命令,分三种基本格式:R,I,J。还有细分,比如I里面涉及到两个寄存器,有的是Rs在前Rt在后,有的是Rt在前Rs在后,有的imm数直接转就行了,有的还需要乘个4,每种都不一样,很麻烦。
以前只需要提交java文件就可以了,这次最后还要求打包成jar,又查资料搞了半天。
不过还好,总算做完了。呵呵。这一部分只要求翻译出来,第二部分更麻烦,就要实现具体功能了。