MIPS:绘制位图时,存储地址未在字边界上对齐

时间:2017-06-24 19:38:04

标签: mips word

我有这段代码:

.data
FP: .space 1048576 #firstposition of a 16x16 (w/h in pixels), 512x512 bitmap
colorred: .word 0x007f0000

.text

lw $s1, colorred
la $s2, FP

li $v0, 42
la $a1, 62
syscall
move $t0, $a0  #get a random integer and place it in t

li $v0, 42
la $a1, 62
syscall
move $t1, $a0

mul $t1, $t0, $t1
sw  $s1, FP($t1)

li $v0, 10
syscall

我一直收到这个错误: 第21行:0x0040003c处的运行时异常:存储地址未在字边界上对齐0x1001020a

有时候它会起作用并在位图中画出一点点,但有时候它并没有

1 个答案:

答案 0 :(得分:1)

这是问题所在:

sw  $s1, FP($t1)

代码中没有任何内容可确保$t1在字边界上对齐。在使用之前,您需要清除$t1的低两位,如下所示:

li  $t2, 0xfffffffc
and $t1, $t1, $t2
sw  $s1, FP($t1)