gpt4 book ai didi

汇编 MIPS : Initializing and suming up an array

转载 作者:行者123 更新时间:2023-12-05 02:20:03 24 4
gpt4 key购买 nike

假设我们有一个包含 10 个数字的数组,我们想将这些数字相加到一个变量中,如下所示:

int arr[10]= {1, 15, 0, -3, 99, 48, -17, -9, 20, 15};

sum = 0;

for(i=0; i<10; i++)

sum = sum + arr[i];

当我尝试“组装 mips”时,特定的一行出现了:

.data
arr: .word 1, 12, 0, -3, 99, 48, -17, -9, 20, 15

.text
.globl main
main:

add $t0, $zero, $zero #counter i
add $t1, $zero, $zero #sum

la $t2, arr #loading the address of the array to a register

loop:
slti $t3, $t0, 10 #i<10
beq $t3, $zero, EXIT

add $t1, $t1, $t2($t0) #wrong wrong very wrong

addi $t0, $t0, 1 #i++
j loop
EXIT:

li $v0, 10
syscall

我无法理解如何将“arr[i]”指向程序集。

正确的表达方式是什么?

我是否必须为阵列的每个数字进行另一个注册表?

最佳答案

感谢上面的 Jester,正确的代码如下:

.data
arr: .word 1, 12, 0, -3, 99, 48, -17, -9, 20, 15

.text
.globl main
main:

add $t0, $zero, $zero #counter i
add $t1, $zero, $zero #sum

la $t2, arr

loop:
slti $t3, $t0, 10 #i<10
beq $t3, $zero, EXIT

lw $t4, ($t2) #$t4 = arr[i]
addi $t2, $t2, 4

add $t1, $t1, $t4 #sum = sum + arr[i]

addi $t0, $t0, 1 #i++
j loop
EXIT:

add $a0, $zero, $t1 #moving the sum to $a0 register for printing

li $v0, 1
syscall

li $v0, 10
syscall

关于汇编 MIPS : Initializing and suming up an array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40493368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com