Arrays 访问MIPS程序集中的数组时出错
我编写了这个代码来查找两个数字的LCM。这是有问题的起始块。我试图找出问题,但没能解决。当我试图加载单词或存储单词时,它给了我地址未对齐的错误和其他异常。代码如下:Arrays 访问MIPS程序集中的数组时出错,arrays,assembly,mips,Arrays,Assembly,Mips,我编写了这个代码来查找两个数字的LCM。这是有问题的起始块。我试图找出问题,但没能解决。当我试图加载单词或存储单词时,它给了我地址未对齐的错误和其他异常。代码如下: .data user: .asciiz "enter first number\n" user2: .asciiz "enter second number\n" array1: .space 500 array2: .space 500 array3: .space 500 .text main: la $a0,user
.data
user: .asciiz "enter first number\n"
user2: .asciiz "enter second number\n"
array1: .space 500
array2: .space 500
array3: .space 500
.text
main:
la $a0,user
li $v0,4
syscall
li $v0,5
syscall
move $s0,$v0
la $a0,user2
li $v0,4
syscall
li $v0,5
syscall
move $s1,$v0
li $t0,0
li $t1,0
li $t2,2
li $t3,3
li $t4,0
li $t5,5
li $t6,7
li $t7,0
li $t8,0
li $t9,0
li $s8,0
la $t8,array1
la $t9,array2
j Loop1
Loop1:
div $s0,$t2
mflo $s2
mfhi $s3 # remainder
beq $s2,1,Loop2
xor $s5,$s3,$0
beq $s5,1,Odd3
add $t4,$t7,$t8
sw $t2,0($t4) # error
addi $t7,$t7,4
j Loop1
关于如果它抱怨地址未对齐,那么你应该去看看它为什么未对齐。汇编程序通常足够聪明,可以根据需要对齐数据,但您使用的是
.space
指令,它没有任何类型(因此也没有对齐)信息。碰巧字符串使数组未对齐。您可以通过在array1
之前手动添加.align 2
指令来解决此问题。请提及并添加一个标记,说明您使用的汇编程序(可能是spim或gas)可以告诉我您的电子邮件地址吗?我的代码搞乱了,所以我想把它发给你。如果你想看到这里的代码,我会经过这里,但是代码很长