.text
.global main
// code for main
main:
push %r13
push %r14
push %r15
pushq $2
call show
pop %r15
pop %r14
pop %r13
mov $0,%rax
ret
// code for show
show:
popq x
pushq x
popq gen
lea genfmt_(%rip),%rdi
movq gen(%rip),%rsi
.extern printf
call printf
ret
.data
gen: .quad 0
genfmt_: .byte '%','u',10,0
x: .quad 0
标题几乎总结了它。我不知道为什么这会产生分段错误错误。根据我的理解,当我按r15,r14,r13时,堆栈指针对齐,然后在调用print f之前保持对齐。我是新来的装配,所以任何帮助表示赞赏!分割故障基本程序集
哪些指令可以导致段错误?在调试器中运行并查看。 (请参阅[x86标记wiki](http://stackoverflow.com/tags/x86/info)。 –