在linux下的x86 / 64程序集中调用一个包含6个以上参数的函数

时间:2017-05-26 17:21:45

标签: linux assembly nasm x86-64 glibc

前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

代码生成分段错误。我做错了什么?

0 个答案:

没有答案