Attualmente sto imparando l'assembly ARM per una classe e ho riscontrato un problema in cui avrei dovuto utilizzare un "array". Sono consapevole del fatto che non esiste un array in ARM, quindi devo allocare lo spazio e trattarlo come un array. Ho due domande.Come creare correttamente una matrice nell'assemblaggio ARM?
- Sto aggiungendo correttamente nuovi valori all'array o sto semplicemente sovrascrivendo il valore precedente? Se sto sovrascrivendo i valori, come faccio ad aggiungere nuovi valori?
- Come faccio a fare il giro dei diversi valori dell'array? So che devo usare
loop:
ma non so come usarlo per accedere a diversi "indici".
Finora, questo è quello che ho ottenuto leggendo la documentazione ARM come ho raccolto dalle risorse 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
Come nota a margine, sto usando ARMSim# come richiesto dal mio professore, in modo da alcuni comandi riconosciuti da strumenti GNU non saranno riconosciuti da ARMSim #, o almeno credo che sia il caso. Per favore correggimi se sbaglio.
Perché il voto negativo? Sì, questo è parzialmente correlato ai compiti a casa, ma posso vedere queste informazioni essere utili agli altri e non sto chiedendo come fare il mio incarico. – allejo
Se si desidera indicarlo in questo modo, non esiste una matrice in una famiglia di processori, non solo un braccio. Gli array in realtà non esistono, sono solo una massa di memoria che inizia da qualche parte. Molti set di istruzioni, sicuramente arm, supportano una modalità di indirizzamento offset del registro che consente di ottenere una sensazione pura di un array. Farei attenzione a rendere la dichiarazione che hai fatto in futuro. –
@dwelch Ah grazie per la nota, mi ha aiutato molto con la mia comprensione. Ricorderò anche di non chiamarli array – allejo