我有非常在汇编中编写代码的经验。
我有以下代码:
.globl main
.type main, @function
main:
movq $0, %rax
pushq %rax
运行生成的程序时出现seg错误。在GDB中,某些东西似乎试图访问0x0
,这当然不是bueno。
Program received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
我认为这是因为当我尝试%rsp
时pushq
没有指向有效地址,但是 - 我没有运气找到如何初始化堆栈在x86中,或者即使我需要 - 如果不是,那么这里出了什么问题。