x32 ABI

✍ dations ◷ 2025-08-15 18:19:38 #Linux内核接口,X86架构

x32 ABI(英语:x32 Application Binary Interface)是一种ABI及Linux内核接口之一。它允许程序得到x86-64的优点(较大的CPU寄存器号码,更佳的浮点性能,更快的地址无关代码共享库,通过寄存器传递函数参数,更快的系统调用指令),而使用32位指针,从而避免了对64位指针的开销。

尽管x32 ABI限制了程序的虚拟地址为4 GB,它也减小了程序的内存占用量,且在某些情况下,能使它运行得更快。在181.mcf SPEC CPU 2000基准测试中,x32 ABI版本比x86-64版本最多能快40%。一般而言,x32在SPEC CPU整数基准比x86-64快5-8%。在SPEC CPU浮点基准上,x86-64则毫无速度优势。

大多数情况下执行以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中添加了相应支持。

相关

  • 锂电池锂电池是以锂金属或锂合金为阳极材料,使用非水电解质溶液的电池,锂电池与锂离子电池不一样的是,前者是一次电池,后者是充电电池。锂电池的发明者是爱迪生。由于锂金属的化学特性
  • 比鲁尼阿布·拉伊汗·穆罕默德·本·艾哈迈德·比鲁尼(波斯语:ابوریحان محمد بن احمد بیرونی‎,973年-1048年), 波斯学者,生于花剌子模(今中亚乌兹别克斯坦),卒
  • 罗塞林贡比涅的罗塞林(拉丁语:Roscellinus Compendiensis,Rucelinus ,法语:Roscelin de Compiègne,英语:Roscelin of Compiègne,Roscellinus,1050年-1125年),又译为络瑟林、洛色林、若瑟林,法
  • 蹦床蹦床是体操项目的支流之一,是奥运会的一个小项目,现时世界上蹦床最强的国家包括俄罗斯、乌克兰、日本与中华人民共和国。蹦床的存在历史约为200年左右,早于19世纪时,印第安就出
  • 软件质量软件质量,是指软件系统或系统中的软件部分的质量,即满足用户需求,包括功能需求和性能需求的程度。
  • 球 (数学)在数学里,球是指球面内部的空间。球可以是封闭的(包含球面的边界点,称为闭球),也可以是开放的(不包含边界点,称为开球)。球的概念不只存在于三维欧氏空间里,亦存在于较低或较高维度,以
  • 防震缝防震缝是将建筑物分成若干个结构单一、体型规整的单元,防止在地震波的作用下相互挤压、拉伸造成形变破坏的缝隙。与伸缩缝类似,一般基础可以不断开,但是在平面复杂、建筑物相连
  • 玉冰烧玉冰烧又名肉冰烧,是广东的一种米酒,为广东十大名酒之一,属豉香型白酒。在酿造米酒的过程中加入肥猪肉泡浸,令酒质更醇和。玉冰烧是佛山地区的酒,记载于《熙宁酒课》。传说是由清
  • 意大利最美的村庄意大利最美的村庄(意大利语:I borghi più belli d'Italia)是意大利的一个民间团体,由意大利的多个村庄组成。其目地是促进那些不在主要旅游路线上的村庄的旅游业发展,以防止这些
  • Basteria《》是一份由同侪评审的双月期刊,由荷兰贝类学会(英语:Netherlands Malacological Society)出版,涵盖所有软体动物研究的范畴,始创于1936年。现时本期刊文献主要以英语发表。本期