Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/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
Loops 在MIPS程序集中初始化n个寄存器的顶级测试循环_Loops_Assembly_Mips - Fatal编程技术网

Loops 在MIPS程序集中初始化n个寄存器的顶级测试循环

Loops 在MIPS程序集中初始化n个寄存器的顶级测试循环,loops,assembly,mips,Loops,Assembly,Mips,我在网上找不到这样的例子,我甚至不知道从哪里开始搜索。我是asm的新手,我正在大学里学习MIPS课程。我会说这是家庭作业的一部分,但这不是提示。只是一些我需要在更大的程序中实现的东西,以使它按我所希望的方式工作 无论如何,我要做的是创建一个顶级测试循环,它根据一个单独寄存器的值设置“n”个寄存器 例如,如果我将$t0设置为3,我希望循环执行3次,并提示输入$t1、t2和$t3。我知道如何完成输入提示,我只需要帮助设计一个循环来完成这一点。关于从哪里开始或我需要使用什么操作,有什么提示吗 这基本上

我在网上找不到这样的例子,我甚至不知道从哪里开始搜索。我是asm的新手,我正在大学里学习MIPS课程。我会说这是家庭作业的一部分,但这不是提示。只是一些我需要在更大的程序中实现的东西,以使它按我所希望的方式工作

无论如何,我要做的是创建一个顶级测试循环,它根据一个单独寄存器的值设置“n”个寄存器

例如,如果我将$t0设置为3,我希望循环执行3次,并提示输入$t1、t2和$t3。我知道如何完成输入提示,我只需要帮助设计一个循环来完成这一点。关于从哪里开始或我需要使用什么操作,有什么提示吗

这基本上就是我目前所拥有的

li $t2, 1
next1:
beq $t2, $s1, next2
    # loop code
addi $t2, $t2, 1    
j next1

next2:

没有简单的方法可以做到这一点,因为目标寄存器通常是硬编码到指令编码中的

您可以使用与switch语句等效的语句:

sll $a0, 2  # $a0 = 8 * $a0
# set one of $t0,$t1,...,t7 to the value of $a1 as selected by the value of $a0
b $a0(SW)
nop           # branch delay slot
DONE:
...
# switch cases start here. Each case uses 2 instructions
SW:
b DONE        # case 0
mov $t0, $a1  # branch delay slot
b DONE
mov $t1, $a1
...
b DONE
mov $t7, $a1
# end of switch cases

您可以改用自修改代码,但不建议这样做。

太好了!我很欣赏这个例子。