Assembly 提取地址在字边界0x00000002上未对齐
我试图从一个结构中加载一个.word,但当我试图运行该程序时,它显示了错误“fetchaddress not aligned on word boundary 0x00000002”。我不明白,因为我看到一个朋友的代码也是一样的,这对她很有用。代码使用以下结构:Assembly 提取地址在字边界0x00000002上未对齐,assembly,mips,Assembly,Mips,我试图从一个结构中加载一个.word,但当我试图运行该程序时,它显示了错误“fetchaddress not aligned on word boundary 0x00000002”。我不明白,因为我看到一个朋友的代码也是一样的,这对她很有用。代码使用以下结构: .data pantalla: .word 0 .word 0 .space 1024 campo: .word 0 .word 0 .space 1
.data
pantalla:
.word 0
.word 0
.space 1024
campo:
.word 0
.word 0
.space 1024
pieza_actual:
.word 0
.word 0
.space 1024
pieza_actual_x:
.word 0
pieza_actual_y:
.word 0
imagen_auxiliar:
.word 0
.word 0
.space 1024
pieza_jota:
.word 2
.word 3
.ascii "\0#\0###\0\0"
.space 1016
pieza_ele:
.word 2
.word 3
.ascii "#\0#\0##\0\0"
.space 1016
pieza_barra:
.word 1
.word 4
.ascii "####\0\0\0\0"
.space 1016
pieza_zeta:
.word 3
.word 2
.ascii "##\0\0##\0\0"
.space 1016
pieza_ese:
.word 3
.word 2
.ascii "\0####\0\0\0"
.space 1016
pieza_cuadro:
.word 2
.word 2
.ascii "####\0\0\0\0"
.space 1016
pieza_te:
.word 3
.word 2
.ascii "\0#\0###\0\0"
.space 1016
(它们不是我的,这些是老师们创造的结构)。这是显示错误的函数,更具体地说是粗体
imagen_copy:
addiu $sp,$sp,-4
sw $ra,0($sp)
move $t6,$a0 #figura 1
move $t7,$a1 #figura 2
**lw $t0,0($t6) #anchura pieza 1
lw $t1,0($t6) #altura pieza 1
lw $t2,0($t7) #anchura pieza 2
lw $t3,0($t7) #altura pieza 2**
li $t4,0 #variable y=0
For_1_copy:
bge $t4,$t3,fin_for_1_copy
li $t5,0 #variable x=0
For_2_copy:
bge $t5,$t2,fin_for_2_copy
move $a0,$t7
move $a1,$t5
move $a2,$t4 #entradas de la función
addiu $sp,$sp,-36 #9*4=36
sw $t0,0($sp)
sw $t1,4($sp)
sw $t2,8($sp)
sw $t3,12($sp)
sw $t4,16($sp)
sw $t5,20($sp)
sw $t6,24($sp)
sw $t7,28($sp)
sb $t8,32($sp)
jal imagen_get_pixel
lw $t0,0($sp)
lw $t1,4($sp)
lw $t2,8($sp)
lw $t3,12($sp)
lw $t4,16($sp)
lw $t5,20($sp)
lw $t6,24($sp)
lw $t7,28($sp)
lb $t8,32($sp)
addiu $sp,$sp,36
move $a0,$t6
move $a1,$t5
move $a2,$t4
move $a3,$t8
addiu $sp,$sp,-36
sw $t0,0($sp)
sw $t1,4($sp)
sw $t2,8($sp)
sw $t3,12($sp)
sw $t4,16($sp)
sw $t5,20($sp)
sw $t6,24($sp)
sw $t7,28($sp)
sb $t8,32($sp)
jal imagen_set_pixel
lw $t0,0($sp)
lw $t1,4($sp)
lw $t2,8($sp)
lw $t3,12($sp)
lw $t4,16($sp)
lw $t5,20($sp)
lw $t6,24($sp)
lw $t7,28($sp)
lb $t8,32($sp)
addiu $sp,$sp,36
addiu $t5,$t5,1
j For_2_copy
fin_for_2_copy:
addiu $t4,$t4,1
j For_1_copy
fin_for_1_copy:
lw $ra,0($sp)
addiu $sp,$sp,4
jr $ra
这只是意味着数据未与正确的“组”大小对齐,请尝试将所有
.space 1016
更改为.space 1024
。您可能在需要指针的地方使用了一个小整数<代码>2不太可能是地址,除非您将MARS配置为将.data节从地址0开始。即使是这样,你也有一个<代码>。Word 0 首先,所以地址在你的第一个单词的中间。单词是正确的。调整,直到它们对齐。