0
レジスタからメモリ位置に値を移動する際に問題が発生しました。それはかなり簡単です。まず、フォーマット文字列と値abc
を正しい場所に移動し、printf
を呼び出します。次のブロックは問題がある場所です。私はadr r1, abc
に電話し、abc
の位置をr1
に取得します。私はその後、レジスタr4
を10に初期化します。r4
の値をr1
(これはabc
です)の場所に格納しようとすると、segfaultが発生します。私は真剣に何が起こっているのか分からない。私はabc
のアドレスが間違っているように感じます、それはsegfaultingだからですが、わかりません。 コードは以下の通りです:ARMでSTRコマンドを使用する際のエラー
.section .text
.global main
main:
push {lr}
ldr r1, abc
ldr r0, =print_str
bl printf
adr r1, abc
mov r4, #10
str r4, [r1]
ldr r1, abc
ldr r0, =print_str
bl printf
pop {lr}
bx lr
print_str: .asciz "%d\n"
abc: .word 400
.text'が書き込み可能ではありません 'としてあなたは、' .data'セクションにデータを配置する必要があります。 – Jester
ですが、.textへの書き込みが問題になっている可能性があります。あなたはアームが私たちにほとんど何も知らない、チップやコアを知る必要があること、そしてこのコードがどのようなアドレス空間(RAMやROM /フラッシュなのかなど)を指定するのに十分な情報を与えていない。あなたが値を書き込むことができないことを意味するフラッシュではない、それは...(チップ/状況上)。 –