X32 ABI

历史

大多数情况下执行以ILP32模式编译的程序，但又能使用主要的64位CPU指令，这样的用户空间并非少见，特别是在“经典RISC”芯片领域中。例如，Solaris操作系统在SPARC和x86-64上就是这么做的。而对于Linux，SPARC和PowerPC上的Linux发行版，如Aurora SPARC Linux和Debian，也有ILP32用户空间。根本原因是LP64代码“更贵”，正如上文x86-64所述。就这方面而言，x32是“64位ILP32”概念在x86-64平台的延伸。
自从2003年Athlon 64发布以来，一些人就在讨论32位指针x86-64 ABI的好处，特别是2008年高德纳的研究。然而，在实现这种模式上，外界并没有看到有显著进展，直至2011年8月27日，汉斯·彼得·昂万在Linux内核邮件列表上宣布，他和H·J·鲁一直在x32-ABI上努力。
就在同一天，林纳斯·托瓦兹回应道，在x32 ABI中使用32位时间值，将来可能会导致问题。这是因为，使用32位时间值，将导致时间值在2038年溢出。根据这一要求，x32 ABI的开发者将时间值变为了64位。
2011年9月7日一个Linux Plumbers Conference上的演讲提及了x32 ABI。
x32 ABI于Linux 3.4起合并入内核，GNU C 库 2.16中添加了相应支持。