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 № 1To 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