2016-09-30 1 views
-1

Ich führe ARM-Assembly-Code aus, um Array a zu initialisieren. Ich bekomme den Fehler undefinierten Verweis auf `a '. Ich bin mit gcc hier zu kompilieren ist der CodeARM-Assembly-Fehler undefinierter Verweis auf `a '

.text 
.global main 
main: 
     ldr r0, addr_of_a // r1 = *a 
     mov r1, #0   // Index i 
loop: str r1, [r0]   // a[i] = i 
     add r0, r0, r0, lsl #2 // Increment address by 4 bytes 
     add r1, r1, #1  // r1 = r1 + 1 
     cmp r1, #100 
     bne loop 
end: 
     mov r0, r1 
     bx lr 
addr_of_a: .word a 
+2

Wo _is_ 'a' definiert? (vorausgesetzt, es ist eigentlich nicht die Konstante 0xa) - Was Sie dort haben, ist effektiv (in C) 'int ** addr_of_a = & a', so dass der Linker den Wert des Symbols 'a' (dh seine Adresse) kennen muss) um das Wort an "addr_of_a" zu initialisieren. Obwohl der Code im Voraus davon ausgeht, dass "addr_of_a" tatsächlich das Array selbst ist ... ist nicht klar, was hier eigentlich passieren soll. – Notlikethat

Antwort

0

As + Notlikethat angegeben, Ihr 'a' ist nicht vorhanden.

Sie können es hinzufügen, entsprechend wie in den folgenden Beispielen:

.data 
     a:  .asciz "deadcode\n" 

oder

.data 
     a:  .word 3,1,4,1,5,9 
Verwandte Themen