2012-02-09 2 views
2

В MIPS, я знаю, что я могу объявить массив как:массив переменной длины в MIPS ассемблере

list: .space 20 

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

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

ответ

2

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

2

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

li $a0, numbytes 
li $v0, 9 
syscall 

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

+0

Спасибо, это было полезно тоже. – Dan14021

Смежные вопросы