我在之前提出的问题中看到了此示例代码。我int add(int a, int b)
对esi和edi中的参数如何自动感到困惑?这是默认的调用约定吗?我在哪里可以找到更多这些信息。
.globl _add // make it global so that others can find this symbol
....
_add: // int add(int a, int b)
movl %esi, %eax
addl %edi, %eax
ret
Solaris,Linux,FreeBSD,OS X,[16]遵循System V AMD64 ABI的调用约定,并且是Unix和类Unix操作系统中的事实上的标准。前六个整数或指针参数在寄存器RDI,RSI,RDX,RCX(Linux内核接口中的R10 [17]:124),R8和R9中传递,而XMM0,XMM1,XMM2,XMM3,XMM4,XMM5, XMM6和XMM7用于某些浮点参数。
资料来源:https : //en.wikipedia.org/wiki/X86_calling_conventions
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句