2016-09-30 70 views
-1

我正在运行ARM程序集来初始化数组a。我收到错误说 未定义的引用“a”。我使用GCC编译器 下面是代码ARM程序集错误未定义引用'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

那么,_is_'了'定义? (假设它实际上并不是常数0xa) - 你有什么有效的(在C中)'int ** addr_of_a =&a',所以链接器需要知道符号'a'的值(即它的地址),以便在'addr_of_a'处初始化单词。虽然预先的代码似乎认为'addr_of_a'实际上就是数组本身......但并不清楚这里应该发生什么。 – Notlikethat

回答

0

由于+ Notlikethat指出,您的“a”是不存在的。

您可以在下面的例子中添加它因此相同:

.data 
     a:  .asciz "deadcode\n" 

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