Assembly .MIPS程序集中的align指令(MARS)
我正在为我的大学做一个项目,在名为MARS的项目中使用MIPS汇编。 我在使用.align时遇到一些问题。我想我根本不明白这个指令是如何运作的 这是MARS给我的一个错误示例:“0x00400098处的运行时异常:地址未在双字边界0x1001017c上对齐” 尝试从名为“v”的双精度数组加载双精度时出错:Assembly .MIPS程序集中的align指令(MARS),assembly,alignment,mips,memory-alignment,mars-simulator,Assembly,Alignment,Mips,Memory Alignment,Mars Simulator,我正在为我的大学做一个项目,在名为MARS的项目中使用MIPS汇编。 我在使用.align时遇到一些问题。我想我根本不明白这个指令是如何运作的 这是MARS给我的一个错误示例:“0x00400098处的运行时异常:地址未在双字边界0x1001017c上对齐” 尝试从名为“v”的双精度数组加载双精度时出错: l.d$f12,($t1) 这是我的代码: .data msg1: .asciiz "### SETTE E MEZZO ###\n\n" msg2: .asciiz "car
l.d$f12,($t1)
这是我的代码:
.data
msg1: .asciiz "### SETTE E MEZZO ###\n\n"
msg2: .asciiz "carta estratta: "
.文本 格洛博梅因酒店 主要内容: la$a0,msg1A: .align 2 .word 1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10 s: .align 0 .byte 'c','c','c','c','c','c','c','c','c','c','q','q','q','q','q','q','q','q','q','q','f','f','f','f','f','f','f','f','f','f','p','p','p','p','p','p','p','p','p','p' v: .align 3 .double 1,2,3,4,5,6,7,0.5,0.5,0.5, 1,2,3,4,5,6,7,0.5,0.5,0.5, 1,2,3,4,5,6,7,0.5,0.5,0.5, 1,2,3,4,5,6,7,0.5,0.5,0.5
李$v0,4 syscall#打印stringa titolo我做错了什么? 如果有人能给我解释一下,我将不胜感激。 提前谢谢。在这一行mul $t0, $s4, 4 # $t0 <- index add $t1, $s0, $t0 # $t1 <- &A[index] lw $a0, 0($t1) #vado a prendere nell'array A una carta a caso in base al numero random che funge da incdice li $v0, 1 syscall # print del numero della carta sw $zero, 0($t1) # A[index] <- 0 in modo che non venga estratto due volte lo stesso numero add $t1, $s1, $s4 # $t1 <- &s[index] lb $a0, 0($t1) #vado a prendere nell'array s il seme li $v0, 11 syscall add $t1, $s2, $t0 # $t1 <- &v[index] l.d $f12, ($t1) li $v0, 3 #POP lw $s3, 0($sp) lw $s2, 4($sp) lw $s1, 8($sp) lw $s0, 12($sp) lw $ra, 16($sp) lw $fp, 20($sp) addi $sp, $sp, 20 #------------------ jr $ra
mul$t0,$s4,4#$t0在这行中
mul$t0,$s4,4#$t0要获得正确的初始对齐,应将
放置在标签之前。否则,标签可能位于(例如)地址0x01,但数据位于地址0x02(即间隙)。还有一些需要更多的调整。因此,请执行以下操作:.align
/.align 4a:
/.align 0s:
要获得正确的初始对齐,应将.align 8v:
放置在标签之前。否则,标签可能位于(例如)地址0x01,但数据位于地址0x02(即间隙)。还有一些需要更多的调整。因此,请执行以下操作:.align
/.align 4a:
/.align 0s:
.align 8v:
mul $t0, $s4, 4 # $t0 <- index add $t1, $s0, $t0 # $t1 <- &A[index] lw $a0, 0($t1) #vado a prendere nell'array A una carta a caso in base al numero random che funge da incdice li $v0, 1 syscall # print del numero della carta sw $zero, 0($t1) # A[index] <- 0 in modo che non venga estratto due volte lo stesso numero add $t1, $s1, $s4 # $t1 <- &s[index] lb $a0, 0($t1) #vado a prendere nell'array s il seme li $v0, 11 syscall add $t1, $s2, $t0 # $t1 <- &v[index] l.d $f12, ($t1) li $v0, 3 #POP lw $s3, 0($sp) lw $s2, 4($sp) lw $s1, 8($sp) lw $s0, 12($sp) lw $ra, 16($sp) lw $fp, 20($sp) addi $sp, $sp, 20 #------------------ jr $ra
mul $t0, $s4, 4 # $t0 <- index