gpt4 book ai didi

assembly - mov 0,%eax上具有x86组件的Segfault

转载 作者:行者123 更新时间:2023-12-03 16:08:58 25 4
gpt4 key购买 nike

我正在尝试汇编一小段x86代码。我在32位计算机上,并且编写了以下代码。它应该只是将值添加到eax中,然后返回。我意识到将不会有任何输出。当我使用
gcc main.S -o main
它编译没有错误。但是,当我运行它时,seg会出错(gdb声称它在第一个movl指令上存在segfaults)。 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直接移动到寄存器中。 (或者特别是对于零, xor %eax, %eax可以更有效地将一个寄存器归零。)

关于assembly - mov 0,%eax上具有x86组件的Segfault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5834222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com