我有一个函数,它采用内存地址作为$a0
,我通过使用访问(可变)字数x($a0)
,其中x
是 8 的倍数。我需要将它们存储在$sp
寄存器中,以便我可以使用$a0
寄存器将参数传递给其他函数。对 MIPS 程序集来说是全新的,所以这里的任何指针都会有所帮助!
问问题
91 次
1 回答
0
8 的倍数我假设您使用的是 mips-64
首先你做一个循环,每次将 a0 增加 8:
loop: lw $t0, 0($a0) ;fetch data and store in t0
addi $sp,$sp,-8 ;increase stack
sw $t0, 0($sp) ;store data fetched
addi $a0,$a0,8 ;increment a0 to go to next entry
;here you check that you haven't reached x yet
;let's say 8*x+$a0(initial) is stored in $t1 (this is easy to do just use sll by 3 to multiply by 8 then add a0 before loop)
bne $a0,$t1,loop
;now you can use $a0
于 2014-04-15T18:55:26.173 回答