Jef*_*kin 43 linux assembly x86-64 abi calling-convention
x86-64 System V ABI(用于除Windows之外的所有内容)过去常常访问http://x86-64.org/documentation/abi.pdf,但该网站现已脱离互联网.
该文件是否有新的权威主页?
Pet*_*des 40
System V x86-64 psABI在GitHub上维护.HJ Lu的github页面有一个wiki,其中包含当前版本的x86-64和i386 SystemV psABI文档的链接,以及讨论更新的论坛.
有关最新版本的直接链接,请参阅x86 标记wiki.(这个答案可能已经过时了).
截至目前,x86-64的当前版本为r252(2016年4月草案0.99.8),i386的当前版本为1.1(包括AVX512).非正式地,需要将窄标志扩展为32位,因为clang依赖于它.希望未来的ABI修订版能够证明这一点.
x32 ABI(长模式下的32位指针)是x86-64 ABI doc的一部分.请参见第10章:ILP32编程模型.
请注意,特定于处理器的psABI文档旨在作为SCO网站上托管频率较低的System V gABI的补充.
相关:在i386和x86-64上UNIX和Linux系统调用的调用约定是什么描述了x86-64 SysV(以及i386 Linux与FreeBSD)的系统调用约定.
它还总结了整数args的函数调用约定.系统调用不会按值获取FP或SSE/AVX向量args或结构,因此函数调用约定更复杂.
Agner Fog有一个调用约定指南(涵盖Windows vs. Sys V,以及32位的各种约定,以及用于编写可在任一平台上使用的函数的提示/技巧).这是与他的优化和微体系结构指南和指令表(如果您关心性能,这是必不可少的阅读)的单独PDF.)
维基百科有一篇x86调用约定文章,它描述了各种约定,但大多数都没有足够详细地将它们用于除简单整数args以外的任何其他约定.(例如,没有结构包装规则的描述).
Linux标准基础
Linux Standard Base(可以被某些权威规范视为此事)有一个名为7.2 的部分。“函数调用顺序”指向2.1。“规范性参考文献部分”包含以下链接:
因此,我建议使用这些版本的规范作为规范版本,除非您有充分的理由不这样做。
| 归档时间: |
|
| 查看次数: |
15373 次 |
| 最近记录: |