Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly MIPS:跳转目标与指令pc 0x400014的高阶4位不同_Assembly_Mips - Fatal编程技术网

Assembly MIPS:跳转目标与指令pc 0x400014的高阶4位不同

Assembly MIPS:跳转目标与指令pc 0x400014的高阶4位不同,assembly,mips,Assembly,Mips,好的,我已经开始编写MIPS代码,将两个数组相乘。我想把目前为止我所掌握的东西放到QtSpim中,看看这些值是否会像我期望的那样发生变化 但是,当我尝试将文件加载到QtSpim中时,出现以下错误: 跳转目标与指令pc 0x400014的高阶4位不同 你知道我哪里出错了吗,或者对调试有什么好的想法吗?我不确定问题出在哪里 谢谢 编辑:这项工作: main: la $a2, array1 la $a3, array2 li $a1, 5 li

好的,我已经开始编写MIPS代码,将两个数组相乘。我想把目前为止我所掌握的东西放到QtSpim中,看看这些值是否会像我期望的那样发生变化

但是,当我尝试将文件加载到QtSpim中时,出现以下错误: 跳转目标与指令pc 0x400014的高阶4位不同

你知道我哪里出错了吗,或者对调试有什么好的想法吗?我不确定问题出在哪里

谢谢

编辑:这项工作:

main:
    la      $a2, array1
    la      $a3, array2
    li  $a1, 5
    li  $v0, 1
    add     $a0, $a1, $0
    syscall

    lw  $a0, 0($a2)
    syscall

    lw  $a0, 0($a3)
    syscall

    li  $v0, 10
    syscall
.data
array1: .word 10, 10, 10, 10, 5
array2: .word -10, -10, 10, 10, 5
完整代码:

.data
array1: .word 10, 10, 10, 10, 5
array2: .word -10, -10, 10, 10, 5

main:

li $a2, 5
addiu $15, $a2, 1
la $a0, array1
la $a1, array2
j MAC

MAC:

addiu $sp, $sp, -4
sw $ra, 4($sp)
li $v1, 0
li $s0, 0

loopInMAC:

beq $s0, $15, main2
j mult1
add $v1, $v1, $v0
addiu $s0, $s0, 1
j loopInMAC

mult1:

lw $s1, 0($a0)
lw $s2, 0($a1)
slt $s3, $s1, 0
slt $s4, $s2, 0
addiu $sp, $sp, -4
sw $ra 0($sp)
bne $s3, 1, skip1
sub $s1, $0, $s1

skip1:

bne $s4, 1, skip2
sub $s2, $0, $s2

skip2:

li $v0, 0

loopInMult:

beq $s1, $0, skip3
andi $t0, $s1, 1
beq $t0, $0, skipAdd
add $v0, $v0, $s2

skipAdd:

sll $s2, $s2, 1
srl $s1, $s1, 1
j loopInMult

skip3:

beq $s1, $s2, equalSign
sub $v0, $0, $v0

equalSign:
jr $ra
不要将代码放在.data部分。您应该在main:之前启动.text代码部分,即:

另外,您在main之前放置了两条指令:当前将永远不会执行这些指令。我怀疑这些应该放在main之后:

不要将代码放在.data部分。您应该在main:之前启动.text代码部分,即:


另外,您在main之前放置了两条指令:当前将永远不会执行这些指令。我怀疑这些应该放在主管道之后:

不,我不能放在主管道之前。它需要main位于第一行,除非我创建一个globl。梅因,这就是我的老师昨晚告诉我的。然而,他说最安全的方法是简单地将.data放在文件的末尾,这样我的代码就不会出错,因为我不能将它放在main之前。它需要在第一条线上,嗯,是的,你可以,而且,不,它不。文本不会生成任何代码/数据。它只是告诉汇编程序,您希望将下面的代码和数据放在.text部分。不,我不能将其放在main之前。它需要main位于第一行,除非我创建一个globl。梅因,这就是我的老师昨晚告诉我的。然而,他说最安全的方法是简单地将.data放在文件的末尾,这样我的代码就不会出错,因为我不能将它放在main之前。它需要在第一条线上,嗯,是的,你可以,而且,不,它不。文本不会生成任何代码/数据。它只是告诉汇编程序,您希望后面的代码和数据放在.text部分。
.text
main: