C 在程序集中调用符号时如何传递函数参数?

C 在程序集中调用符号时如何传递函数参数?,c,assembly,x86,C,Assembly,X86,我在前面的问题中看到了这个示例代码。我很困惑intadd(inta,intb)的参数是如何在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 System V AMD64 ABI的

我在前面的问题中看到了这个示例代码。我很困惑
intadd(inta,intb)
的参数是如何在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

System V AMD64 ABI的调用约定在Solaris、Linux、FreeBSD、OS X[16]上得到遵守,并且是Unix和类Unix操作系统中事实上的标准。前六个整数或指针参数在寄存器RDI、RSI、RDX、RCX(Linux内核接口[17]:124中的R10)、R8和R9中传递,而XMM0、XMM1、XMM2、XMM3、XMM4、XMM5、XMM6和XMM7用于某些浮点参数


来源:

在Solaris、Linux、FreeBSD、OS X[16]上遵循System V AMD64 ABI的调用约定,是Unix和类Unix操作系统中的事实标准。前六个整数或指针参数在寄存器RDI、RSI、RDX、RCX(Linux内核接口[17]:124中的R10)、R8和R9中传递,而XMM0、XMM1、XMM2、XMM3、XMM4、XMM5、XMM6和XMM7用于某些浮点参数


来源:

默认值是什么意思?如果您有二十种不同的默认设置,那么默认设置有什么好处?“我在哪里可以找到更多信息”@Michael谢谢您的帮助,无法找到自动加载到esi和edi中的参数的答案。您可以向我们显示传递的代码吗?@Downvoter这是我获取代码的地方。“默认设置”是什么意思?如果你有20个不同的默认值,默认值有什么用?“我在哪里可以找到更多信息”@Michael谢谢你的帮助,找不到自动加载到esi和edi中的参数的答案。你能告诉我们传递的代码吗?@Downvoter这是我获取代码的地方。中详细ABI文档的更具体链接。中还有一个更详细的ABI文档链接的不太详细的摘要。还有一个不太详细的总结