Как я могу предотвратить перезапись переменных моего раздела MIPS .data? - PullRequest
0 голосов
/ 14 декабря 2018

В разделе .data моей MIPS-программы я определяю две переменные char: d и h.

.data
d:  .word   
h:  .word

В разделе .text я пытаюсь установить значение d в i изначение от h до 'k'.

.text

#setting d = to 'i'
la $s0, d
li $s1, 'i'
sb $s1, 0($s0)

#setting h =  to 'x'
la $s0, h
li $s1, 'x'
sb $s1, 0($s0)

Однако, когда я распечатываю значение d и значение h впоследствии, они оба равны 'x'.

#printing d
lb $a0, d
li $v0, 11
syscall

#printing h
lb $a0, h
li $v0, 11
syscall

Кажется, я перезаписываю значение «я».Что я делаю неправильно?

1 Ответ

0 голосов
/ 14 декабря 2018

Вы никогда не дадите начальные значения d и h, поэтому для них не зарезервировано пространство, следовательно, они оба имеют одинаковый адрес.

Это можно увидеть, посмотрев на используемые адресапосле того, как вы соберетесь в MARS.В QtSPIM это даже не будет собираться, потому что для этого потребуется указать начальное значение.

Чтобы исправить это, измените эти два объявления переменных на

d:  .word 0  
h:  .word 0
...