.space在mips中有什么作用?

1 arrays assembly mips mips32

我遇到了一个分配问题,在该分配中,我们已将这些数字放入数组中,并在不使用循环的情况下将它们添加了。我已经解决了这个问题,但是.space使我感到困惑。通过设置.space 20,我可以为5个单词腾出空间还是在做其他事情。

 .data
  array: .space 20
 .text
addi $s0, $zero, 2
addi $s1, $zero, 12
addi $s2, $zero, -5
addi $s3, $zero, 7
addi $s4, $zero, 4
  addi $t0, $zero,0  #index initialized at 0
sw $s0,array($t0) 
addi $t0, $t0, 4
sw $s1,array($t0) 
addi $t0, $t0, 4
sw $s2,array($t0) 
addi $t0, $t0, 4
sw $s3,array($t0) 
addi $t0, $t0, 4
sw $s4,array($t0) 
addi $t0, $t0, 4
Run Code Online (Sandbox Code Playgroud)

gus*_*bro 5

.space Len指令指示汇编程序保留Len字节。由于每个字都有4个字节,因此当Len为20时,您将指示汇编程序保留5个字。

例如,如果您有

.data
array: .space 20
other_data: .asciiz 'This is other data'
Run Code Online (Sandbox Code Playgroud)

然后other_data将是array地址后的20个字节。

由于MIPS中的体系结构限制,.align 2如果要逐字访问(在您的特定示例中,您不需要它,则可能还需要指示汇编器在数组标签之前对齐保留的内存())。应该已经对齐)。