我正在尝试组装一小段 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