.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)。 –