x32 ABI

✍ dations ◷ 2025-06-07 22:17:39 #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中添加了相应支持。

相关

  • 尼纳纳尼纳纳(英语:Nenana),是美国阿拉斯加州的一座城市。该市的人口在2000年为402人,2010年有378人。人口在阿拉斯加州排行第74。1924年底至1925年初,诺姆爆发白喉疫情,为控制疫情,在严寒
  • 让·保罗让·保罗(德语:Jean Paul,1763年3月21日-1825年11月14日),原名Johann Paul Friedrich Richter,德国作家,德国浪漫主义文学的先驱。
  • 东安子鸡东安子鸡也叫东安鸡、官保鸡,是东安县著名的湘菜,被誉为八大湘菜之首。东安子鸡具有浓郁的香味而不浑浊,略微带有湘菜的辣味,十分酥软,白、红、绿、黄四色相映,视觉上也略胜一筹。
  • 古丈古丈县是中华人民共和国湖南省湘西土家族苗族自治州下辖的一个县,辖域面积1297.45平方公里,国内生产总值39,071万元(公元2004年),总人口为137,637人(公元2004年),少数民族人口117,06
  • 国家社会主义 (消歧义)国家社会主义可以指:
  • 八甲田雪中行军遭难事件八甲田雪中行军遭难事件是在1902年(明治35年)1月发生于日本青森县八甲田山的山难事件。当时的日本帝国陆军第8师团的步兵第5连队,为了进行寒冷天气的军事训练,由青森县青森市出
  • 盖革-马斯登实验盖革-马斯登实验(英语:Geiger-Marsden experiment),又称卢瑟福散射实验,是1909年汉斯·盖革和欧内斯特·马斯登在欧内斯特·卢瑟福指导下于英国曼彻斯特大学做的一个著名散射实验
  • 兰道尔·佛来格兰道尔·佛来格(Randall Flagg)是史蒂芬·金笔下的虚构人物,出现于至少九本史蒂芬·金的著作中,大多都以“法力高强的魔法师”及“黑暗君王的仆人”的身份出现。佛来格拥有许多
  • 高木贞治高木贞治(1875年4月21日-1960年2月28日),日本数学家,研究代数数论、类域论。他是类域论的开创者。高木贞治生于日本岐阜县大野郡数屋村(现本巢市),亲生父亲姓木野村,高木是他母亲的姓
  • 中央省 (斯里兰卡)中央省是斯里兰卡九个省份之一,位于该国中部。面积5674平方公里,人口2,423,966人。首府康提。下分3区。