我的程序集将两个数字分配给int并要打印它。但是运行时会显示细分错误?

时间:2019-05-27 07:16:31

标签: assembly segmentation-fault printf x86-64 calling-convention

这是代码

我尝试插入subq $ 8。 %rsp在调用printf @ PLT之前,它运行良好。但是我想知道为什么会这样吗? (我使用gcc进行编译)

.text
.section .rodata
.LC0:
.string "%d\n"
.text
.globl main
.type main, @function
main:
pushq %rbp
movq %rsp, %rbp
subq $8, %rsp
movq $5,-8(%rbp)
leaq .LC0(%rip),%rdi
movq -8(%rbp),%rsi
call printf@PLT
leave
ret

我希望输出5,但它是分段错误(核心已转储)

0 个答案:

没有答案