gpt4 book ai didi

assembly - mov 0、%eax 上的 x86 程序集出现段错误

转载 作者:太空宇宙 更新时间:2023-11-04 05:06:47 25 4
gpt4 key购买 nike

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

最佳答案

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

movl  0,%eax

这是从绝对地址 0 的内存源操作数加载,这当然会出现段错误。

使用mov $0, %eax将mov-immediate转移到寄存器中。 (或者具体来说,对于零,xor %eax, %eax 可以更有效地将寄存器归零。)

关于assembly - mov 0、%eax 上的 x86 程序集出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60595628/

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