2016-09-30 13 views
-1

配列を初期化するためにARMアセンブリコードを実行しています。私は、エラー「 」が未定義の「a」と言っています。私はここで をコンパイルするgccのを使用しています+ Notlikethat「」が存在していない、あなたの、示されたようにコード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

をだからここでA'が定義された '_is_:

あなたは、以下の例のように、それに応じて追加することができますか? (実際に定数0xaでないと仮定して) - あなたが持っているのは効果的です(C言語で) 'int ** addr_of_a =&a'なので、リンカはシンボル' a'の値) 'addr_of_a'で単語を初期化します。コードはあらかじめ 'addr_of_a'が実際に配列そのものであると仮定しているように見えますが、ここで何が起こっているのかは分かりません。 – Notlikethat

答えて

0

です。

.data 
     a:  .asciz "deadcode\n" 

または

.data 
     a:  .word 3,1,4,1,5,9 
関連する問題