将数组元素复制到MIPS程序集中的另一个数组

时间:2015-05-30 18:04:43

标签: arrays assembly mips qtspim

我必须制作一个程序,用键盘输入30个整数来填充数组。然后用户键入' c'将数组复制到另一个array.i已完成第一步但我无法将数组复制到另一个。

这是我的代码

public void colorChanger(View v)
{
 Button changeBut = (Button) findViewById(R.id.button2);
 changeBut.setBackgroundResource(R.drawable.yellowbut);
 changeBut.isClickable();
}

1 个答案:

答案 0 :(得分:0)

最原始的方法是

la $t1, dst_array
la $t3, src_array
addu $t0, $t3, 30*4     # setup a 'ceiling'


copy_loop:
    lw $at, 0($t3)
    sw $at, 0($t1)

    addu $t1, $t1, 4
    addu $t3, $t3, 4

    blt $t1, $t0, copy_loop # if load pointer < src_array + 30*4

但是,MIPS的某些实现不使用转发,因此您必须等到写回$at。为此目的,可能有一个摊位(你可以摆脱它)

subu $t1, $t1, 4
copy_loop:
    lw $at, 0($t3)
    addu $t1, $t1, 4
    addu $t3, $t3, 4
    sw $at, 0($t1)

或负载延迟槽,通常需要1个周期,使其成为

copy_loop:
    lw $at, 0($t3)
    addu $t1, $t1, 4

    sw $at, 0($t1)
    addu $t3, $t3, 4

一般来说,这取决于:)

相关问题