gpt4 book ai didi

C 到 MIPS 转换

转载 作者:太空狗 更新时间:2023-10-29 15:06:34 25 4
gpt4 key购买 nike

尝试将此 c 代码转换为 MIPS 并在 SPIM 中运行。

int A[100], B[100];
for(i=1; i<100; 1++){
A[i] = A[i-1] + B[i];
}

到目前为止,这就是我所拥有的。

    # comments are delimted by has marks

.data
A: .word 0:100 # array of 12 integers
B: .word 0:100 # array of 12 integers


.text
main:
li $v0, 1 # load the value "1" into register $v0
li $t0, 1 # load the value "1" into register $t0
li $t1, 100 # load the value "100" into register $t1
blt $t0, $t1, loop # branches to Loop if $t0 < 100
la $t9, B
la $t8, A

loop:
sll $t0, $t0, 2
add $t2, $t9, $t0
lw $s4, 0($t9)
add $t3, $t0, -1
add $t4, $t8, $t3
lw $s5, 0($t4)
add $t5, $t2, $s5
add $t6, $s0, $t0
sw $t7, 0($t5)
addi $t0, $t0, 1
li $v0, 1 # system call for print_int
move $a0, $t0 # the sum to print
syscall # print the sum

在 SPIM 中运行时出现以下错误:

Exception occurred at PC=0x00400040  Bad address in data/stack read: 0x00000004Exception occurred at PC=0x0040004c  Unaligned address in inst/data fetch: 0x00000003Exception occurred at PC=0x00400058  Bad address in data/stack read: 0x00000000Attempt to execute non-instruction at 0x0040006c

一些方向会很好。谢谢

最佳答案

在初始化指向 A 的指针之前,您正在分支到 loop (blt $t0, $t1, loop) B。您需要将 blt $t0, $t1, loop 移动到代码的末尾,而不是放在开头。

我讨厌这样做,但是错误的地方太多了,无法一一列举。试试这个:

.data 
A: .word 0:100 # array of 100 integers
B: .word 0:100 # array of 100 integers


.text
main:
li $t0, 4 # load the value "1" into register $t0
li $t1, 400 # load the value "100" into register $t1
la $t9, B
la $t8, A

loop:
add $t2, $t9, $t0 # $t2 = B + i
lw $s4, 0($t9) # $s4 = B[i]
add $t3, $t0, -4 # $t3 = i - 1
add $t4, $t8, $t3 # $t4 = A + i - 1
lw $s5, 0($t4) # $s5 = A[i - 1]
add $t5, $t8, $t0 # $t5 = A + i
add $t6, $s4, $s5 # $t6 = B[i] + A[i - 1]
sw $t6, 0($t5) # A[i] = $t6
addi $t0, $t0, 4 # i++

li $v0, 1 # system call for print_int
move $a0, $t6 # the sum to print
syscall # print the sum

blt $t0, $t1, loop # branches to Loop if $t0 < 100

关于C 到 MIPS 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2350178/

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