The x86-64 System V ABI (used on everything except Windows) used to live at http://x86-64.org/documentation/abi.pdf, but that site has now fallen off the internet.
x86-64系统V ABI(除了Windows之外的所有系统都使用)曾经存在于http://x86-64.org/documentation/abi.pdf中,但是现在这个站点已经脱离了互联网。
Is there a new authoritative home for the document?
文件有新的权威机构吗?
1 个解决方案
#1
21
The System V x86-64 psABI is maintained on GitHub. H.J. Lu's github page has a wiki with links to the current versions of the x86-64 and i386 SystemV psABI documents, and to the forums where updates are discussed.
系统V x86-64 psABI在GitHub上维护。H.J. Lu的github页面上有一个wiki,链接到x86-64和i386 SystemV psABI文档的当前版本,以及讨论更新的论坛。
See the x86 tag wiki for direct links to the latest versions. (This answer may be out of date).
请参阅x86标记wiki以获得到最新版本的直接链接。(这个答案可能已经过时了)。
As of now, the current version for x86-64 is r252 (Draft 0.99.8 April 2016), and the current version for i386 is 1.1 (includes AVX512). Unofficially, sign-extending narrow args to 32-bit is required, because clang depends on it. Hopefully a future ABI revision will document that.
到目前为止,x86-64的当前版本是r252(2016年4月0.99.8草案),i386的当前版本为1.1(包括AVX512)。非正式地,需要将信号扩展到32位,因为clang依赖于它。希望未来的ABI修订将记录这一点。
The x32 ABI (32-bit pointers in long mode) is part of the x86-64 ABI doc. See Chapter 10: ILP32 Programming Model.
x32 ABI(长模式的32位指针)是x86-64 ABI doc的一部分。参见第10章:ILP32编程模型。
Note that the Processor-Specific psABI docs are designed as a supplement to the less-frequently-updated System V gABI, hosted on SCO's website.
请注意,特定处理器的psABI文档是作为上海合作组织网站上不太频繁更新的System V gABI的补充。
Related: What are the calling conventions for UNIX & Linux system calls on i386 and x86-64 describes the system-call calling convention for x86-64 SysV (as well as i386 Linux vs. FreeBSD).
相关:在i386和x86-64上UNIX和Linux系统调用的调用约定是什么?描述了x86-64 SysV的系统调用约定(以及i386 Linux和FreeBSD)。
It also summarizes the function calling conventions for integer args. System calls don't take FP or SSE/AVX vector args, or structs by value, so the function-calling convention is more complicated.
它还总结了整数args的函数调用约定。系统调用不采用FP或SSE/AVX向量args或按值结构,因此函数调用约定更加复杂。
Agner Fog has a calling conventions guide (covering Windows vs. Sys V, and the various conventions for 32-bit, and tips/tricks for writing functions you can use on either platform). This is a separate PDF from his optimization and microarchitecture guides and instruction tables (which are essential reading if you care about performance.)
Agner Fog有一个调用约定指南(包括Windows vs. Sys V,以及32位的各种约定,以及可以在任何平台上使用的编写函数的提示/技巧)。这是一个独立的PDF,与他的优化、微体系结构指南和指令表(如果您关心性能,这是必要的阅读)。
Wikipedia has an x86 calling conventions article which describes various conventions, but mostly not in enough detail to use them for anything other than simple integer args. (e.g. no description of struct-packing rules).
Wikipedia有一篇x86调用约定的文章,描述了各种约定,但大部分都没有足够的细节来将它们用于除了简单的整数args之外的任何东西。(例如,没有说明结构包装规则)。
#1
21
The System V x86-64 psABI is maintained on GitHub. H.J. Lu's github page has a wiki with links to the current versions of the x86-64 and i386 SystemV psABI documents, and to the forums where updates are discussed.
系统V x86-64 psABI在GitHub上维护。H.J. Lu的github页面上有一个wiki,链接到x86-64和i386 SystemV psABI文档的当前版本,以及讨论更新的论坛。
See the x86 tag wiki for direct links to the latest versions. (This answer may be out of date).
请参阅x86标记wiki以获得到最新版本的直接链接。(这个答案可能已经过时了)。
As of now, the current version for x86-64 is r252 (Draft 0.99.8 April 2016), and the current version for i386 is 1.1 (includes AVX512). Unofficially, sign-extending narrow args to 32-bit is required, because clang depends on it. Hopefully a future ABI revision will document that.
到目前为止,x86-64的当前版本是r252(2016年4月0.99.8草案),i386的当前版本为1.1(包括AVX512)。非正式地,需要将信号扩展到32位,因为clang依赖于它。希望未来的ABI修订将记录这一点。
The x32 ABI (32-bit pointers in long mode) is part of the x86-64 ABI doc. See Chapter 10: ILP32 Programming Model.
x32 ABI(长模式的32位指针)是x86-64 ABI doc的一部分。参见第10章:ILP32编程模型。
Note that the Processor-Specific psABI docs are designed as a supplement to the less-frequently-updated System V gABI, hosted on SCO's website.
请注意,特定处理器的psABI文档是作为上海合作组织网站上不太频繁更新的System V gABI的补充。
Related: What are the calling conventions for UNIX & Linux system calls on i386 and x86-64 describes the system-call calling convention for x86-64 SysV (as well as i386 Linux vs. FreeBSD).
相关:在i386和x86-64上UNIX和Linux系统调用的调用约定是什么?描述了x86-64 SysV的系统调用约定(以及i386 Linux和FreeBSD)。
It also summarizes the function calling conventions for integer args. System calls don't take FP or SSE/AVX vector args, or structs by value, so the function-calling convention is more complicated.
它还总结了整数args的函数调用约定。系统调用不采用FP或SSE/AVX向量args或按值结构,因此函数调用约定更加复杂。
Agner Fog has a calling conventions guide (covering Windows vs. Sys V, and the various conventions for 32-bit, and tips/tricks for writing functions you can use on either platform). This is a separate PDF from his optimization and microarchitecture guides and instruction tables (which are essential reading if you care about performance.)
Agner Fog有一个调用约定指南(包括Windows vs. Sys V,以及32位的各种约定,以及可以在任何平台上使用的编写函数的提示/技巧)。这是一个独立的PDF,与他的优化、微体系结构指南和指令表(如果您关心性能,这是必要的阅读)。
Wikipedia has an x86 calling conventions article which describes various conventions, but mostly not in enough detail to use them for anything other than simple integer args. (e.g. no description of struct-packing rules).
Wikipedia有一篇x86调用约定的文章,描述了各种约定,但大部分都没有足够的细节来将它们用于除了简单的整数args之外的任何东西。(例如,没有说明结构包装规则)。