不愧是 X86 ,连 ABI 都存在多个标准,所以这个就看个乐呵就好了。

32 Bit

C 语言标准 cdel 规定参数在堆栈上传递(从右到左压栈,最后一个参数首先压入),返回值放在 eax 中,其中 eax, ecx, edx 由被调用者保存

64 Bit

对于 64 位系统,存在 MicrosoftSystem V(适用于 Linux/MacOS/FreeBSD)两套标准。微软标准用 RCX、RDX、R8、R9 4 个寄存器传参,而 SystemV 标准用 RDI、RSI、RDX、RCX、R8、R9 6 个寄存器。他们都用 RAX 来传递 64 位的返回值,用 RDX:RAX 来传递 128 位返回值。