Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 设置输入变量_Assembly_Mips_Mars Simulator - Fatal编程技术网

Assembly 设置输入变量

Assembly 设置输入变量,assembly,mips,mars-simulator,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

问题问:

编写一段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中。”?

这意味着您不应包括以下输入设置操作:

move $s0, 0xBAAD
move $s1, 0xBEEF
(如果语法错误,请原谅)

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

我曾短暂浏览过该网站,但找不到任何注释。它应该在IDE的文档或帮助系统中的某个地方进行描述(如果有的话)

编辑:

好吧,也许我找到了

引述自:

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

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

在这个IDE中也有,所以你也许可以创建一些小脚本,将两个数字放入这两个寄存器,或者甚至可能已经有这样的宏-我不知道-请自己挖掘,我甚至没有这个软件在我的董事会:)