-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
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