前6个参数分别位于寄存器rdi,rsi,rdx,rcx,r8,r9中。我的理解是,如果有第七个或更多的参数,它们应该被推到堆栈上。以下代码有效:
mov rdi, format_string
mov rsi, 1
mov rdx, 2
mov rcx, 3
mov r8, 4
mov r9, 5
call printf
但是当我添加第七个论点时:
mov rdi, format_string
mov rsi, 1
mov rdx, 2
mov rcx, 3
mov r8, 4
mov r9, 5
push 6
call printf
add rsp, 8
代码生成分段错误。我做错了什么?