首页 > 解决方案 > nasm 代码调用 scanf 崩溃取决于堆栈大小

问题描述

以下代码崩溃。buf i 常量 stack_size 更改为 40 或 56,不会发生崩溃。为什么是这样?

    ; nasm -f elf64 t.asm && gcc -no-pie t.o
    section .text
        global main
        extern printf, scanf

    stack_size equ 48
    main:
        sub     rsp, stack_size

        lea     rdi, [rel fmt_str]
        mov     rsi, rsp
        xor     eax, eax
        call    scanf

        add     rsp, stack_size
        ret

    fmt_str:  db "%ld",0

标签: assemblyscanfx86-64callstackabi

解决方案


推荐阅读