Что произойдет, если в MIPS будет превышен .space? - PullRequest
0 голосов
/ 01 апреля 2019

Я новичок в программировании на ассемблере и пытаюсь учиться, следуя чужому коду. Поэтому возник вопрос: что произойдет, если мы превысим пространство, зарезервированное .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

1 Ответ

1 голос
/ 01 апреля 2019

В реальной программе обычно ваш код будет связан с другим кодом, который также помещает вещи в .data, поэтому input+4 будет местоположением некоторой другой метки + зарезервированного пространства.

Если нет, то отображение памяти, в котором находится .data, может быть целым числом страниц виртуальной памяти, поэтому фактически не используется заполнение до кратных 4096 байт. (Но это применимо только к системам, использующим виртуальную память; в противном случае другой раздел может начаться сразу после; проверьте адреса других символов после связывания)

В частности, для MARS см. Настройки-> конфигурация памяти, чтобы точно определить, где начинается каждая секция на карте памяти.

...