在x64中,gcc如何决定参数传递的顺序?

时间:2018-03-28 00:21:32

标签: gcc parameter-passing 64-bit

我知道寄存器用于在x64中在调用函数和被调用函数之间传递参数。第一个参数通过寄存器rdi传递。第二个参数通过寄存器rsi传递。然后是rdx,rcx,r8,r9。然而,我观察到的一个有趣的现象是,gcc对于首先应该传递哪个参数没有统一的想法。假设函数A和函数B将调用函数C,函数C具有三个参数c1,c2,c3。

在功能A中,您将看到:

mov rdi, c1
mov rsi, c2
mov rdx, c3
call C

但是,在功能B中,您将看到:

mov rsi c2
mov rdi c1
mov rdx c3
call C

所以,我的问题是gcc如何决定参数传递的顺序?非常感谢。

0 个答案:

没有答案