Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.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程序集中的align指令(MARS)_Assembly_Alignment_Mips_Memory Alignment_Mars Simulator - Fatal编程技术网

Assembly .MIPS程序集中的align指令(MARS)

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

我正在为我的大学做一个项目,在名为MARS的项目中使用MIPS汇编。 我在使用.align时遇到一些问题。我想我根本不明白这个指令是如何运作的

这是MARS给我的一个错误示例:“0x00400098处的运行时异常:地址未在双字边界0x1001017c上对齐”

尝试从名为“v”的双精度数组加载双精度时出错:
l.d$f12,($t1)

这是我的代码: .data msg1: .asciiz "### SETTE E MEZZO ###\n\n" msg2: .asciiz "carta estratta: "

A:
.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
.文本 格洛博梅因酒店

主要内容: la$a0,msg1
李$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要获得正确的初始对齐,应将
.align
放置在标签之前。否则,标签可能位于(例如)地址0x01,但数据位于地址0x02(即间隙)。还有一些需要更多的调整。因此,请执行以下操作:
.align 4a:
/
.align 0s:
/
.align 8v:
要获得正确的初始对齐,应将
.align
放置在标签之前。否则,标签可能位于(例如)地址0x01,但数据位于地址0x02(即间隙)。还有一些需要更多的调整。因此,请执行以下操作:
.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