fbpx
维基百科

x32 ABI

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

细节 编辑

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

ABI比较
特性 i386 x32 x86-64
进程最大内存 4 GiB 128 TiB
整数寄存器 6 (PIC) 16
浮点寄存器 8 16
指针 4位 8位
64位元运算
浮点数 x87 SSE
调用约定 内存 寄存器
PIC序言 2-3 insn

历史 编辑

大多数情况下执行以ILP32模式编译的程序,但又能使用主要的64位CPU指令,这样的用户空间并非少见,特别是在“经典RISC”芯片领域中。例如,Solaris操作系统SPARC和x86-64上就是这么做的。而对于Linux,SPARC和PowerPC上的Linux发行版,如Aurora SPARC Linux和Debian,也有ILP32用户空间。根本原因是LP64代码“更贵”[6],正如上文x86-64所述。就这方面而言,x32是“64位ILP32”概念在x86-64平台的延伸。

自从2003年Athlon 64发布以来,一些人就在讨论32位指针x86-64 ABI的好处,特别是2008年高德纳的研究[7]。然而,在实现这种模式上,外界并没有看到有显著进展,直至2011年8月27日,汉斯·彼得·昂万在Linux内核邮件列表上宣布,他和H·J·鲁一直在x32-ABI上努力[8]

就在同一天,林纳斯·托瓦兹回应道,在x32 ABI中使用32位时间值,将来可能会导致问题[9][10]。这是因为,使用32位时间值,将导致时间值2038年溢出[9][10]。根据这一要求,x32 ABI的开发者将时间值变为了64位[11]

2011年9月7日一个Linux Plumbers Conference上的演讲提及了x32 ABI[2]

x32 ABI于Linux 3.4起合并入内核,GNU C 函式庫 2.16中添加了相应支持。

参考 编辑

  1. ^ 1.0 1.1 Thorsten Leemhuis. . www.h-online.com. 2011-09-13 [2011-11-01]. (原始内容存档于2011-10-28). 
  2. ^ 2.0 2.1 2.2 . linuxplumbersconf.org. [2012-06-12]. (原始内容存档于2012-05-05). 
  3. ^ 3.0 3.1 3.2 . Google Sites. [2011-11-01]. (原始内容存档于2011-10-30). 
  4. ^ . Standard Performance Evaluation Corporation. 1999-10-14 [2011-11-01]. (原始内容存档于2018-09-08). 
  5. ^ H.J. Lu, H Peter Anvin, Milind Girkar. . September 2011 [2015-02-16]. (原始内容存档于2017-03-11). 
  6. ^ Tony Bourke. . 2004-01-22 [2014-03-25]. (原始内容存档于2018-04-16). 
  7. ^ Donald Knuth. Recent News: A Flame About 64-bit Pointers. February 2008 [15 May 2012]. (原始内容存档于2012-09-26). 
  8. ^ H. Peter Anvin. RFD: x32 ABI system call numbers. 27 August 2011 [15 May 2012]. (原始内容存档于2012-09-26). 
  9. ^ 9.0 9.1 Jonathan Corbet. . LWN.net. 2011-08-29 [2011-11-01]. (原始内容存档于2022-05-07). 
  10. ^ 10.0 10.1 Linus Torvalds. . LWN.net. 2011-08-26 [2011-11-01]. (原始内容存档于2017-12-01). 
  11. ^ H.J. Lu. . 2011-11-24 [2015-02-16]. (原始内容存档于2015-09-24). 

外部链接 编辑

linux主题, 英語, application, binary, interface, 是一种abi及linux内核接口之一, 它允许程序得到x86, 64的优点, 较大的cpu寄存器号码, 更佳的浮点性能, 更快的地址无关代码共享库, 通过寄存器传递函数参数, 更快的系统调用指令, 而使用32位指针, 从而避免了对64位指针的开销, 目录, 细节, 历史, 参考, 外部链接细节, 编辑尽管限制了程序的虚拟地址为4, 它也减小了程序的内存占用量, 且在某些情况下, 能使它运行得更快, 在181, spec, 20. Linux主题 x32 ABI 英語 x32 Application Binary Interface 是一种ABI及Linux内核接口之一 它允许程序得到x86 64的优点 较大的CPU寄存器号码 更佳的浮点性能 更快的地址无关代码共享库 通过寄存器传递函数参数 更快的系统调用指令 而使用32位指针 从而避免了对64位指针的开销 1 2 3 目录 1 细节 2 历史 3 参考 4 外部链接细节 编辑尽管x32 ABI限制了程序的虚拟地址为4 GB 它也减小了程序的内存占用量 且在某些情况下 能使它运行得更快 1 2 3 在181 mcf SPEC CPU 2000基准测试中 x32 ABI版本比x86 64版本最多能快40 3 4 一般而言 x32在SPEC CPU整数基准比x86 64快5 8 在SPEC CPU浮点基准上 x86 64则毫无速度优势 5 ABI比较 特性 i386 x32 x86 64进程最大内存 4 GiB 128 TiB整数寄存器 6 PIC 16浮点寄存器 8 16指针 4位 8位64位元运算 否 是浮点数 x87 SSE调用约定 内存 寄存器PIC序言 2 3 insn 无历史 编辑大多数情况下执行以ILP32模式编译的程序 但又能使用主要的64位CPU指令 这样的用户空间并非少见 特别是在 经典RISC 芯片领域中 例如 Solaris操作系统在SPARC和x86 64上就是这么做的 而对于Linux SPARC和PowerPC上的Linux发行版 如Aurora SPARC Linux和Debian 也有ILP32用户空间 根本原因是LP64代码 更贵 6 正如上文x86 64所述 就这方面而言 x32是 64位ILP32 概念在x86 64平台的延伸 自从2003年Athlon 64发布以来 一些人就在讨论32位指针x86 64 ABI的好处 特别是2008年高德纳的研究 7 然而 在实现这种模式上 外界并没有看到有显著进展 直至2011年8月27日 汉斯 彼得 昂万在Linux内核邮件列表上宣布 他和H J 鲁一直在x32 ABI上努力 8 就在同一天 林纳斯 托瓦兹回应道 在x32 ABI中使用32位时间值 将来可能会导致问题 9 10 这是因为 使用32位时间值 将导致时间值在2038年溢出 9 10 根据这一要求 x32 ABI的开发者将时间值变为了64位 11 2011年9月7日一个Linux Plumbers Conference上的演讲提及了x32 ABI 2 x32 ABI于Linux 3 4起合并入内核 GNU C 函式庫 2 16中添加了相应支持 参考 编辑 1 0 1 1 Thorsten Leemhuis Kernel Log x32 ABI gets around 64 bit drawbacks www h online com 2011 09 13 2011 11 01 原始内容存档于2011 10 28 2 0 2 1 2 2 x32 a native 32 bit ABI for x86 64 linuxplumbersconf org 2012 06 12 原始内容存档于2012 05 05 3 0 3 1 3 2 x32 abi Google Sites 2011 11 01 原始内容存档于2011 10 30 181 mcf SPEC CPU2000 Benchmark Description File Standard Performance Evaluation Corporation 1999 10 14 2011 11 01 原始内容存档于2018 09 08 H J Lu H Peter Anvin Milind Girkar X32 A Native 32bit ABI For X86 64 September 2011 2015 02 16 原始内容存档于2017 03 11 Tony Bourke Are 64 bit Binaries Really Slower than 32 bit Binaries 2004 01 22 2014 03 25 原始内容存档于2018 04 16 Donald Knuth Recent News A Flame About 64 bit Pointers February 2008 15 May 2012 原始内容存档于2012 09 26 H Peter Anvin RFD x32 ABI system call numbers 27 August 2011 15 May 2012 原始内容存档于2012 09 26 9 0 9 1 Jonathan Corbet The x32 system call ABI LWN net 2011 08 29 2011 11 01 原始内容存档于2022 05 07 10 0 10 1 Linus Torvalds Re RFD x32 ABI system call numbers LWN net 2011 08 26 2011 11 01 原始内容存档于2017 12 01 H J Lu X32 project status update 2011 11 24 2015 02 16 原始内容存档于2015 09 24 外部链接 编辑X32 ABI开发网站 页面存档备份 存于互联网档案馆 Linux Plumbers Conference上的X32 ABI演示幻灯片 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title X32 ABI amp oldid 71703921, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。