如果在MIPS中超过.space会发生什么?

时间:2019-04-01 16:36:20

标签: arrays assembly mips mars-simulator

我是汇编程序编程的新手,并试图通过遵循别人的代码来学习。因此出现了一个问题,如果我们超出.space保留的空间,将会发生什么? MARS 4.5会在运行时为我们分配额外的空间,还是保留后再覆盖字节?

.data
input:  .space 4
.text
li $v0, 8
li $a1, 6 #intentionally, allows to read more than 4 bytes.
la $a0, input
syscall

1 个答案:

答案 0 :(得分:1)

在实际程序中,通常您的代码将与其他也链接到.data的代码链接,因此input+4将是其他一些带有标签+保留空间的位置。

如果没有,.data所在的内存映射可能是虚拟内存页面的总数,因此实际上存在未使用的填充,直到4096字节的倍数为止。 (但这仅适用于使用虚拟内存的系统;否则,其他部分可能会在此之后开始;链接后检查其他符号的地址)

特别是在MARS上,请参阅设置->内存配置以准确了解每个部分在内存映射中的开始位置。