x32 ABI

✍ dations ◷ 2025-02-23 16:31:26 #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中添加了相应支持。

相关

  • 马拿瓜马那瓜(西班牙语:Managua)是尼加拉瓜的首都及第一大城市,也是中美洲地区第二大城市。位于尼加拉瓜的西部以及尼加拉瓜第二大湖-马那瓜湖的沿岸。该城在1855年被订为尼加拉瓜的首
  • 线性逻辑在数理逻辑中,线性逻辑是拒绝“弱化”和“收缩”的结构规则的一种亚结构逻辑。对此解释是“假设是资源”:在证明中所有假设必须被消费“精确一次”。这区别于平常的逻辑比如
  • 本吉拉凉流本格拉寒流是南大西洋东海岸沿南非和纳米比亚西海岸从南向北流动的寒冷的水流,最终汇入南赤道暖流。本格拉寒流构成南大西洋亚热带洋流的东部。水源包括印度洋和南大西洋亚热
  • 探热针医疗温度计,又称体温计、探热针,是拿来量测人体温度用的仪器。可用来量测口腔温度、腋下温度或是肛门内的直肠温度。传统的水银式医疗温度计工作方式与气象用最高温度计相同。
  • 丝甲藻目丝甲藻目(Dinotrichales)为藻类植物之一植物目。该植物于植物分类表上,归于甲藻门 (Pyrrophyta)横裂甲藻纲(Dinophyceae),同纲者尚有变形甲藻目(Dinamoebidiales)等等。
  • 克劳狄一世提贝里乌斯·克劳狄乌斯·凯撒·奥古斯都·日耳曼尼库斯(拉丁语:Tiberius Claudius Caesar Augustus Germanicus,简称克劳狄乌斯、克劳狄、革老丢、或模仿后来欧洲君主习惯冠以
  • 市道181号市道181号 月眉-高树,是位于台湾高雄市、屏东县两县市之间的南北向县道。北起高雄市杉林区月眉,南至屏东县高树乡,全长共计19.752公里(公路总局资料)。今日列表・1961年列表 注:灰
  • 日本贫穷问题日本,尽管是世界第三大经济体,但日本的贫困问题日益严重。由于其作为发达国家的声誉,日本很难找到贫困人口数字,人们普遍认为贫困程度相对较低。然而,一些媒体报导对比了这一情况
  • 打印维基百科打印维基百科(英语:Print Wikipedia),是由麦克·曼丁伯格(英语:Michael Mandiberg)创作的艺术项目。他尝试把《维基百科》这个网络百科全书中的1,150万条英文条目打印出来,为此他耗
  • 齐格蒙特一世齐格蒙特一世(波兰语:Zygmunt I Stary;立陶宛语:Žygimantas II Senasis;1467年1月1日—1548年4月1日),雅盖隆王朝成员,在1506年至1548年间为波兰国王与立陶宛大公。此前齐格蒙特一