Obecnie uczę się montażu ARM dla klasy i natknąłem się na problem, w którym potrzebuję użyć "tablicy". Jestem świadomy, że nie ma czegoś takiego jak tablica w ARM, więc muszę przydzielić przestrzeń i traktować to jako tablicę. Mam dwa pytania.Jak prawidłowo utworzyć tablicę w złożeniu ARM?
- Czy poprawnie dodaję nowe wartości do tablicy, czy tylko nadpisuję poprzednią wartość? Jeśli nadpisuję wartości, w jaki sposób mogę dodawać nowe wartości?
- Jak przejść do pętli z różnymi wartościami tablicy? Wiem, że muszę używać
loop:
, ale nie wiem, jak z niego korzystać, aby uzyskać dostęp do różnych "indeksów".
Do tej pory otrzymałem to od zapoznania się z dokumentacją ARM, którą zebrałem z zasobów online.
.equ SWI_Exit, 0x11
.text
.global _start
_start: .global _start
.global main
b main
main:
ldr R0, =MyArray
mov R1, #42
str R1, [R0], #4
mov R1, #43
str R1, [R0], #4
swi SWI_Exit
MyArray: .skip 20 * 4
.end
Na marginesie, używam ARMSim# wymagane przez mojego profesora, więc niektóre polecenia rozpoznawanych przez narzędzia GNU nie zostanie rozpoznany przez ARMSim #, a przynajmniej uważam, że jest to przypadek. Proszę popraw mnie jeżeli się mylę.
Dlaczego głosowanie w dół? Tak, jest to częściowo związane z pracą domową, ale widzę, że ta informacja jest przydatna dla innych i nie pytam, jak wykonać zadanie. – allejo
Jeśli chcesz wyrazić to w ten sposób, nie ma czegoś takiego jak tablica w rodzinie procesorów, a nie tylko ramię. Tablice właściwie nie istnieją, są tylko kroplą pamięci, która zaczyna się gdzieś. Wiele zestawów instrukcji, zdecydowanie uzbrojonych, obsługuje tryb adresowania z przesunięciem rejestru, który pozwala uzyskać czystą atmosferę tablicy. Byłbym ostrożny składając oświadczenie, które złożyłeś w przyszłości. –
@dwelch Ach, dziękuję za wiadomość, bardzo mi pomogłeś z moim zrozumieniem. Będę również pamiętać, aby nie nazywać ich tablicą – allejo