设置输入变量

时间:2013-03-04 21:04:44

标签: assembly mips mars-simulator

问题:

  

写一段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.” ?

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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

编辑:

好的,也许我找到了它。

引自"Help and Info"

  

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

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

这个IDE中还有'Macros' feature,所以你可能会创建一个小脚本,它将需要两个数字并将它们放入这两个寄存器中,或者甚至可能已经存在这样的宏 - 我有不知道 - 请自己解决,我甚至不在我的董事会上使用这个软件:)