x86コードの小さな部分を組み立てようとしています。私は 32 ビット マシンを使用しており、次のコードを記述しました。値を eax に追加してから返す必要があります。出力がないことを認識しています。これを使用してコンパイルすると
gcc main.S -o main
エラーなしでコンパイルされます。しかし、それを実行すると、セグメンテーション違反が発生します (gdb は、最初の movl 命令でセグメンテーション違反が発生すると主張しています)。main.S には次のコードが含まれています。私は何を間違っていますか?
.text
.globl main
main:
pushl %ebp
movl %esp, %ebp
movl 0, %eax
addl $3, %eax
addl $3, %eax
leave
ret