Mips 32将顺序数组存储到内存中

时间:2013-10-04 19:01:05

标签: memory assembly mips32

我正在尝试使用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)将此内容存储在内存开头有什么问题?

1 个答案:

答案 0 :(得分:1)

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

PS。:可用的地址范围很少包含第一页,因此可以轻松捕获空指针。