Assembly mov 0上的x86程序集存在Segfault,%eax
我正在尝试组装一小段x86代码。我在一台32位机器上,我已经编写了以下代码。它应该只将值添加到eax中,然后返回。我意识到不会有任何输出。当我使用Assembly mov 0上的x86程序集存在Segfault,%eax,assembly,x86,segmentation-fault,gnu-assembler,att,Assembly,X86,Segmentation Fault,Gnu Assembler,Att,我正在尝试组装一小段x86代码。我在一台32位机器上,我已经编写了以下代码。它应该只将值添加到eax中,然后返回。我意识到不会有任何输出。当我使用 gcc main.S-o main 它编译时没有错误。但当我运行它时,会出现seg故障(gdb声称它在第一条movl指令上出现seg故障)。main.S中包含以下代码。我做错了什么 .text .globl main main: pushl %ebp movl %esp, %ebp movl 0, %eax a
gcc main.S-o main
它编译时没有错误。但当我运行它时,会出现seg故障(gdb声称它在第一条movl指令上出现seg故障)。main.S中包含以下代码。我做错了什么
.text
.globl main
main:
pushl %ebp
movl %esp, %ebp
movl 0, %eax
addl $3, %eax
addl $3, %eax
leave
ret
不是你的第一部,而是你的第二部
movl 0,%eax
这是从绝对地址为0
的内存源操作数加载的,当然这是错误的
使用mov$0,%eax
将mov立即数写入寄存器。(或者具体地说,对于零,xor%eax,%eax
更有效地将寄存器归零。)