Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly mov 0上的x86程序集存在Segfault,%eax_Assembly_X86_Segmentation Fault_Gnu Assembler_Att - Fatal编程技术网

Assembly mov 0上的x86程序集存在Segfault,%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

我正在尝试组装一小段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  
addl $3, %eax  
addl $3, %eax  
leave 
ret

不是你的第一部,而是你的第二部

movl  0,%eax
这是从绝对地址为
0
的内存源操作数加载的,当然这是错误的

使用
mov$0,%eax
将mov立即数写入寄存器。(或者具体地说,对于零,
xor%eax,%eax
更有效地将寄存器归零。)