传递参数

i386

通过栈传递参数,而且是按照参数顺序从右向左依次入栈 old_rbp ret_addr <----- call function fill arg1 arg2

x86_64

linux user mode:

rdi rsi rdx rcx r8 r9 第七个及之后的按照参数顺序从右向左依次入栈

linux syscall:

rdi rsi rdx r10 r8 r9

WgcQv.png

Windows x64:

RCX, RDX, R8, R9, stack

x64 calling convention | Microsoft Learn

arm

参数 1 ~ 4 分别保存到 r0 ~ r3 寄存器中, 剩下的参数从右向左依次入栈, 被调用者实现栈平衡, 返回值存放在 r0 中