x32 ABI

✍ dations ◷ 2025-06-29 15:04:37 #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中添加了相应支持。

相关

  • 粪壳菌纲粪壳菌纲(学名:Sordariomycetes)是真菌界子囊菌门盘菌亚门的一个纲,其下包括有15个目、64个科、1119个属及 10564个品种。粪壳菌纲物种一般都会产生子囊。以下各科由于其归属关
  • 肾上腺增生症先天性肾上腺增生症是一种由于缺乏羟化酵素而导致脑下垂体的过度刺激,最后引起的肾上腺增生肥大疾病。美国每年有20万人罹此症。此会造成荷尔蒙过度分泌,引致部分男婴性早熟而
  • 右江壮语右江壮语是壮语的一种,属北部台语支(英语:Northern Tai languages),通行于中国广西壮族自治区的田东、田阳、百色一带,使用人数大约有90万人左右。
  • 沧州市沧州市,简称沧,别称狮城,是中华人民共和国河北省下辖的地级市,位于河北省东部偏南。北界天津市、廊坊市,西北接保定市,西南连衡水市,东南邻山东省德州市、滨州市,东临渤海。地处华北
  • 阴蒂切除术阴蒂切除术,指切除阴蒂的手术。在目前,阴蒂切除术极少用于临床。常见的阴蒂切除通常发生在非洲地区的女性割礼上。在历史上,阴蒂切除术曾用于抑制女性自慰。19世纪欧美的妇科医
  • 戈尔孔达 (绘画)戈尔孔达(法语:Golconde)是由比利时超现实主义画家雷内·弗朗索瓦·吉兰马格利特于1953年创作的画作。此画的尺寸的尺寸是长80.7公分,宽100.6公分,现藏于墨西哥德尔帕拉西奥博物
  • 马尔科姆·格雷泽马尔科姆·埃尔温·格雷泽(Malcolm Irving Glazer,1928年5月25日-2014年5月28日),出生于纽约州罗切斯特),美国商人和运动队老板。他是第一联盟集团(英语:First Allied Corporation)(Fi
  • 应氏奇美拉蛛应氏奇美拉蛛()是蛛形纲下的一员,为目前奇美拉蛛属()下已知唯一的一种。本种发现于约1亿年前(白垩纪中期)的缅甸琥珀之中。目前关于该物种所属的高阶分类群尚有争议,可能属于乌拉尔
  • 蔡以台蔡以台(1729年-?),字季实,号兰圃。枫泾南镇(今上海金山)人。是枫泾两状元之一。清朝雍正七年(1729年)出生,蔡以台自幼记识过人、勤奋异常,乡塾曾亲向其父请求为其免费授学。15岁时,便通过
  • 网络操作系统网络操作系统 ,是一种能代替操作系统的软件程序,借由网络达到互相传递数据与各种消息,分为服务器(Server)及客户端(Client)。而服务器的主要功能是管理服务器和网络上的各种资源和