使用数组的 Mips x32

发布于 2024-10-24 19:43:55 字数 716 浏览 4 评论 0原文

我正在为我的一项作业编写此代码,我需要一个大小为 128 的数组,以便

drops: .space 128

我可以在 Drops 中加载该特定位置并为其存储数字 0-8...

例如。 ...假设随机数是 32,我正在进行循环的第一次迭代 它将在数组的第 32 个位置存储 0 如果我在数组的第二次迭代中...它将在随机数中存储 1,例如 92..spot

这是我的代码:

我首先将数组中的所有内容都设置为 -1,以便我可以测试是否有某些内容 正如你所见,

storeArray: 

 la $t6, drops
 la $t1, 0  #counter


loopStoreRandom:

    move $a0, $s5   # send x 
    jal getDrop
    move $t2, $v0 #t2 has a random number 

    add $t6, $t6, $t2  #random + the whole   ---wrong

    lb $t3, ($t6)       
    bne $t3, -1, loopStoreRandom


    addi $t1, $t1, 1
    beq $t1, 128, exit
    j loopStoreRandom

我希望有一些东西我可以像 sb $t1, $t2($t6) 但我不能

im writing this code for one of my assignments and i need to have an array of size 128 which i do by

drops: .space 128

so that i can load that specific spot in drops and store a number 0-8 to it.....

for example.... say the random number was 32 and i was on the first iteration of the loop
it would store 0 in the 32nd spot of the array
if i was in the 2 iteration of the array... it would store 1 in the random number eg 92..spot

here is my code:

I first made everything in my array -1 so that i can test to see if something was in it...

storeArray: 

 la $t6, drops
 la $t1, 0  #counter


loopStoreRandom:

    move $a0, $s5   # send x 
    jal getDrop
    move $t2, $v0 #t2 has a random number 

    add $t6, $t6, $t2  #random + the whole   ---wrong

    lb $t3, ($t6)       
    bne $t3, -1, loopStoreRandom


    addi $t1, $t1, 1
    beq $t1, 128, exit
    j loopStoreRandom

so as you see i wish there was something that i could to just be like sb $t1, $t2($t6) but i can't

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

Bonjour°[大白 2024-10-31 19:43:55

您不会在每个循环中恢复 $t6 ,因此指针在第一个循环后会关闭。

移动

la $t6, drops

到循环内部。

Your're not restoring $t6 each loop, so the pointer becomes off after the first loop.

Move

la $t6, drops

inside the loop.

沫雨熙 2024-10-31 19:43:55
jal getDrop
move $t2, $v0 #t2 has a random number 

假设 v0 从 getDrop 返回,则移动指令将在 getDrop 执行之前执行,因为它将作为 jal 延迟槽的一部分执行。所以 T2 不会包含 getDrop 的返回值。

应该是:

jal getDrop
nop

move $t2, $v0
jal getDrop
move $t2, $v0 #t2 has a random number 

Assuming v0 is returned from getDrop, the move instruction will be executed BEORE getDrop is executed as it will execute as part of jal's delay slot. So T2 is not going to contain the returned value of getDrop.

should be:

jal getDrop
nop

move $t2, $v0
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文