Массив переменной длины на ассемблере MIPS - PullRequest
2 голосов
/ 09 февраля 2012

В MIPS я знаю, что могу объявить массив как:

list: .space 20

Однако, что если я захочу создать массив другого размера на основе пользовательского ввода? Возможно ли это?

Например, программа попросит пользователя ввести целое число N и создать массив длиной N.

Ответы [ 2 ]

2 голосов
/ 09 февраля 2012

Вы можете использовать системный вызов 9 для выделения памяти в куче

li $a0, numbytes
li $v0, 9
syscall

Адрес возвращается в $v0

2 голосов
/ 09 февраля 2012

Хороший вопрос. На языке ассемблера переменные, объявленные как вы, статически размещаются, то есть они выделяются во время сборки. Если вы хотите выделить переменную на основе пользовательского ввода во время выполнения, у вас есть как минимум два варианта: выделить пространство в стеке (и следить за переполнением стека) или выделить из пула памяти, обычно называемого кучей. В любом случае распределение выполняется во время рома, а не во время сборки.

...