1 つのコースでアーム アセンブリ言語を学習しています。始めるのに少し問題があります。私は簡単なCコードを書きました:
int main()
{
int a = 10;
int b = 20;
int c = a+b;
}
次に、次のコマンドを使用して、gnu arm を使用してアセンブリ コードに変換しました。
arm-elf-gcc -S first.c
これにより、アセンブリ コードを含むファイル first.s が生成されました。
.file "first.c"
.text
.align 2
.global main
.type main, %function
main:
@ args = 0, pretend = 0, frame = 12
@ frame_needed = 1, uses_anonymous_args = 0
mov ip, sp
stmfd sp!, {fp, ip, lr, pc}
sub fp, ip, #4
sub sp, sp, #12
mov r3, #10
str r3, [fp, #-16]
mov r3, #20
str r3, [fp, #-20]
ldr r2, [fp, #-16]
ldr r3, [fp, #-20]
add r3, r2, r3
str r3, [fp, #-24]
mov r0, r3
sub sp, fp, #12
ldmfd sp, {fp, sp, pc}
.size main, .-main
.ident "GCC: (GNU) 3.4.3"
次に、次のコマンドを使用してアセンブリ コードをコンパイルしました。
arm-elf-gcc -g first.s
これにより、.out バイナリ ファイルが生成されました。次に、コマンドを使用してqemuでa.outを実行しようとしました:
qemu-arm a.out
しかし、これは出力を生成します
Segmentation fault
間違いが見つからないのですが、何が間違っているのでしょうか?