我是汇编程序编程的新手,并试图通过遵循别人的代码来学习。因此出现了一个问题,如果我们超出.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
答案 0 :(得分:1)
在实际程序中,通常您的代码将与其他也链接到.data
的代码链接,因此input+4
将是其他一些带有标签+保留空间的位置。
如果没有,.data
所在的内存映射可能是虚拟内存页面的总数,因此实际上存在未使用的填充,直到4096字节的倍数为止。 (但这仅适用于使用虚拟内存的系统;否则,其他部分可能会在此之后开始;链接后检查其他符号的地址)
特别是在MARS上,请参阅设置->内存配置以准确了解每个部分在内存映射中的开始位置。