1

问题问:

编写一段 MIPS 代码,给定 $s0 和 $s1 中的值,将以下内容放入 $t* 寄存器:

$t0 = $s0
$t1 = $s1
$t2 = $t0 + $t1
$t3 = $t1 + $t2
...
$t7 = $t5 + $t6

换句话说,对于从 $t2 到 $t7 的每个寄存器,它存储前两个 $t* 寄存器值的总和。$s0 和 $s1 寄存器包含初始值。不要在代码中设置 $s0 和 $s1 的值。相反,学习如何使用 MARS 手动设置它。将您的代码保存到 sum.s 中。

好的,这并不难:

move $t0 $s0 
move $t1, $s1 
add $t2, $t0, $t1    
add $t3, $t1, $t2 

... 等等

但是最后一部分是什么意思?“不要在代码中设置 $s0 和 $s1 的值。相反,学习如何使用 MARS 手动设置它。将代码保存到 sum.s 中。” ?

4

1 回答 1

2

这意味着您不应包括输入设置操作,例如:

move $s0, 0xBAAD
move $s1, 0xBEEF

(如果语法错误,请原谅我)

相反,您应该配置您的 MARS IDE,以便它会在运行汇编脚本进行调试或测试之前自动设置所有输入参数。当然,您必须指定这些自动设置参数将具有的值,但重点是向您展示您可以轻松(?)(重新)配置测试输入而不是硬编码它们。

我已经简要浏览了http://courses.missouristate.edu/kenvollmar/mars/网站,但找不到任何注释。它应该在 IDE 的文档或帮助系统中的某处进行描述(如果有的话)。

编辑:

好吧,也许我已经找到了。

引用“帮助和信息”

任何数据段存储器字和几乎任何 MIPS 寄存器的内容都可以通过编辑其显示的表格单元来修改。双击一个单元格进行编辑,并在完成输入新值后按 Enter 键。如果您输入一个无效的 32 位整数,则 INVALID 字样会出现在单元格中,并且存储器/寄存器内容不受影响。可以以十进制或十六进制(前导“0x”)输入值。可以以二进制补码或有符号格式输入负十六进制值。请注意,其中三个整数寄存器(零、程序计数器、返回地址)无法编辑。

因此,例如,您可以在代码的第一条指令处设置断点,运行程序,当它到达断点时,编辑寄存器并将输入值输入到 $s0/$s1 中,而不是硬编码这些值。我希望它比那更好一点,但我找不到其他任何东西。

此 IDE中还有“宏”功能,因此您也许可以创建一些小脚本,将两个数字放入这两个寄存器中,或者甚至可能已经有这样的宏 - 我不知道 - 请自己挖吧,我的板子上什至没有这个软件:)

于 2013-03-04T21:14:24.310 回答