Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.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 - Fatal编程技术网

Assembly 只交换一次?

Assembly 只交换一次?,assembly,mips,Assembly,Mips,我正在尝试在MIPs中实现Bubblesort。我很快就明白了,不幸的是,我的代码似乎只交换了数组中的一个元素。我的想法是swap不会链接回循环过程,因此在调用print子例程时只执行一次swap。不幸的是,我在MIPs方面没有那么丰富的经验,所以很有可能我跳错了。如有任何见解,将不胜感激 [编辑] 添加一些示例输出: 所以[3,4,1,2,5,6]->[3,1,4,2,5,6],我不知道如何在排序完成之前继续交换 SPIM/MARS具有调试功能,允许您单步执行代码,并全程查看寄存器值。我建议您

我正在尝试在MIPs中实现Bubblesort。我很快就明白了,不幸的是,我的代码似乎只交换了数组中的一个元素。我的想法是swap不会链接回循环过程,因此在调用print子例程时只执行一次swap。不幸的是,我在MIPs方面没有那么丰富的经验,所以很有可能我跳错了。如有任何见解,将不胜感激

[编辑]

添加一些示例输出:


所以[3,4,1,2,5,6]->[3,1,4,2,5,6],我不知道如何在排序完成之前继续交换

SPIM/MARS具有调试功能,允许您单步执行代码,并全程查看寄存器值。我建议您学习如何使用这些功能

我发现你的代码至少有两个问题。其一是,您的
交换
例程永远不会返回,因此CPU将继续执行
交换
例程之后的任何操作。您应该以
jr$ra
结束
swap

另一个问题是,在调用
sort
之前,您将
a1
设置为
length\u a
的地址,但在
sort
中,您只需移动
s3$a1
,这仍然会给您
length\u a
的地址,而不是值6。移动的
move
应更改为
lw$s3,($a1)