0

我正在尝试使用 mips32 将数字 0 到 10 按顺序存储在内存中。这是我的代码:

addi $s2, $zero, 10
addi $s1, $zero, 0
addi $t0, $zero, 0
addi $s6, $zero, 10
L1: 
  beq $s1, $s2, exit   
  sll $t0, $s1, 2           #multiply by the size of a word to get the cur address of $s6
  sw $t0, 0($s6)            
  addi $s1, $s1, 1
  j L1

exit:

我收到一个错误,sw $t0, 0($s6)在内存开头存储这个有什么问题?

4

1 回答 1

1

除非您在裸机上运行,​​否则操作系统(或模拟器)将为您的程序提供虚拟内存。您通常不会获得分配给程序的整个地址范围,您需要向操作系统询问内存块 - 通过系统调用或通过二进制格式本身,例如通过在.bss.data部分中保留空间。

PS.:可用的地址范围很少包括第一页,因此很容易捕获空指针。

于 2013-10-05T00:23:04.593 回答