/ / Tablica o zmiennej długości w języku asemblerowym MIPS - tablice, mipsy, deklaruj

Tablica o zmiennej długości w języku asemblerowym MIPS - tablice, mipsy, deklaruj

W MIPS wiem, że mogę zadeklarować tablicę jako:

list: .space 20

Co jednak, jeśli chcę utworzyć tablicę o różnej wielkości na podstawie danych wprowadzanych przez użytkownika? czy to możliwe?

Na przykład program poprosi użytkownika o wprowadzenie liczby całkowitej N i utworzenie tablicy o długości N.

Odpowiedzi:

2 dla odpowiedzi № 1

To dobre pytanie. W języku asemblera zmienne zadeklarowane jako gotowe są przydzielane statycznie, czyli są przydzielane w czasie montażu. Jeśli chcesz przydzielić zmienną w oparciu o dane wejściowe użytkownika w czasie wykonywania, masz co najmniej dwie opcje: przydzielanie miejsca na stosie (i obserwowanie przepełnienia stosu) lub przydzielanie z puli pamięci, zwykle zwanej stertą. W obu przypadkach alokacja odbywa się w czasie rumu, a nie w czasie montażu.


2 dla odpowiedzi nr 2

Możesz użyć wywołania systemowego 9, aby przydzielić pamięć na stercie

li $a0, numbytes
li $v0, 9
syscall

Adres jest zwracany w $v0