了解如何为 MIPS 模拟器设置内存
Figuring out how to set up memory for MIPS simulator
我正在用 C++ 编写 MIPS 模拟器。它接收一个十六进制的文本文件,并需要在每条指令后输出寄存器内容和解码后的指令。所以我将 hex 文件转换为二进制文件以获取操作码、rs、rt、rd、funct 和 sham 字段,这样我就可以弄清楚它是什么指令。
我卡住了,因为我遇到了 SW 和 LW 指令,但我不确定如何处理模拟内存。我的寄存器在一个数组 [0-31] 中,还有我的指令 [无论读入的指令数] 和单词 [无论读入的数字或单词]。
但我不确定如何模拟 LW 和 SW...我知道如何 encode/decode 它们,但是内存部分(以及偏移量)让我失望。有什么建议么?在此先感谢您的帮助。
如果内容密集 and/or 速度至关重要,并且您在模拟的环境中有足够的内存,您可以只使用一个大的 honkin' 数组(就像你'重新处理寄存器 - 但更大)。
如果内容稀疏,and/or 在您作为 运行 模拟器的环境中,您没有大量内存,速度不如 [=21] =], 你可以使用关联数组。
这个问题引用了几个用于关联数组的 C 库:
Associative arrays in C
我正在用 C++ 编写 MIPS 模拟器。它接收一个十六进制的文本文件,并需要在每条指令后输出寄存器内容和解码后的指令。所以我将 hex 文件转换为二进制文件以获取操作码、rs、rt、rd、funct 和 sham 字段,这样我就可以弄清楚它是什么指令。
我卡住了,因为我遇到了 SW 和 LW 指令,但我不确定如何处理模拟内存。我的寄存器在一个数组 [0-31] 中,还有我的指令 [无论读入的指令数] 和单词 [无论读入的数字或单词]。
但我不确定如何模拟 LW 和 SW...我知道如何 encode/decode 它们,但是内存部分(以及偏移量)让我失望。有什么建议么?在此先感谢您的帮助。
如果内容密集 and/or 速度至关重要,并且您在模拟的环境中有足够的内存,您可以只使用一个大的 honkin' 数组(就像你'重新处理寄存器 - 但更大)。
如果内容稀疏,and/or 在您作为 运行 模拟器的环境中,您没有大量内存,速度不如 [=21] =], 你可以使用关联数组。
这个问题引用了几个用于关联数组的 C 库:
Associative arrays in C