0

为什么我会从以下代码中得到分段错误?

.text
        .globl  start
start:
        pushq   %rbp
        movq    %rsp, %rbp
        movq    $0xBEEFF00DBEEFF00D, %rax
        pushq   %rax
        movq    $0xF00DBEEFF00DBEEF, %rax
        pushq   %rax
        movq    %rbp, %rsp
        popq    %rbp
        ret

错误:

Segmentation fault: 11
4

1 回答 1

4

如果start是你程序的入口点,你就不能ret进入操作系统;你应该_exit

在您可能正在使用的 Linux (x86-64) 上,执行此操作而不是ret

    movq $60, %rax # %rax = _exit() system call
    xorq %rdi, %rdi # %rdi = 0 normal program return code
    syscall
于 2013-01-25T17:12:55.203 回答