ARM工具链中的概念——EABI

来源:互联网 发布:淘宝客提现时间 编辑:程序博客网 时间:2024/06/05 21:21
<div id="article_content" class="article_content"><p><span style="font-size: 12pt; font-family: Arial;" lang="EN-US"></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: Arial; font-size: small;"></span></p><p class="MsoNormal"><span lang="EN-US">EABI</span><span>(</span><span lang="EN-US">Embedded Application Binary Interface</span><span>),嵌入式</span><span>应用程序二进制接口。</span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><p class="MsoNormal"><strong><span lang="EN-US">ABI</span></strong><strong><span>的定义</span></strong></p><p class="MsoNormal"><span lang="EN-US">ABI</span><span>描述应用程序与操作系统、应用程序与库、应用程序的组成部分之间的低层接口。</span><span lang="EN-US">ABI</span><span>允许编译好的目标代码在使用兼容</span><span lang="EN-US">ABI</span><span>的系统中无需改动就能运行。</span></p><p><span lang="EN"> </span></p><p class="MsoNormal"><strong><span lang="EN-US">EABI</span></strong><strong><span>的具体定义</span></strong></p><p class="MsoNormal"><span lang="EN-US">Codesourcery</span><span>上有一个这样的</span><span lang="EN-US">QA</span><span>:</span></p><p class="MsoNormal"><span lang="EN-US"><a href="https://support.codesourcery.com/GNUToolchain/kbentry32">https://support.codesourcery.com/GNUToolchain/kbentry32</a></span></p><p class="MsoNormal"><strong><span lang="EN-US">Question</span></strong><strong></strong></p><p class="MsoNormal"><span lang="EN-US">Whatis the ABI for the ARM Architecture? Is it the same as the ARM EABI? </span></p><p class="MsoNormal"><strong><span lang="EN-US">Answer</span></strong><strong></strong></p><p class="MsoNormal"><span lang="EN-US">TheABI for the ARM Architecture is a standard developed by ARM and its partnersthat explains how compilers, assemblers, linkers, and other similar toolsshould generate object files and executable files.</span></p><p class="MsoNormal"><span lang="EN-US">Toolsthat correctly implement the ABI for the ARM Architecture can interoperate;i.e., object files built with one toolchain can be combined with object filesbuilt with another toolchain if both compilers use the ABI for the ARMArchitecture and provided that the code compiled observes certain conventions.</span></p><p class="MsoNormal"><span lang="EN-US">CodeSourcerywas an active participant in the design of the ABI for the ARM Architecture.(In fact, the C++ ABI used by ARM is derived from the Itanium C++ ABIco-designed by CodeSourcery.) CodeSourcery continues to work with ARM, Ltd. tovalidate interoperability between Sourcery G++ and ARM's proprietary tools.</span></p><p class="MsoNormal"><span lang="EN-US">The"ARM EABI" is an informal name for the ABI for the ARM Architecture.</span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><p class="MsoNormal"><strong><span lang="EN-US">The "ARM EABI" is aninformal name for the ABI for the ARM Architecture.</span></strong></p><p class="MsoNormal"><span>这里提到了<strong>所谓的</strong></span><strong><span lang="EN-US">ARM EABI</span></strong><strong><span>就是</span></strong><strong><span>针对</span></strong><strong><span lang="EN"> ARM </span></strong><strong><span>体系结构的应用程序二进制接口的非正式名称</span></strong><span>。</span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><p class="MsoNormal"><span>在</span><span lang="EN">arm</span><span>的</span><span lang="EN">infocenter</span><span>可以找到</span><span lang="EN-US">ABI for the ARM architecture</span><span>的相关文档</span><span>:</span></p><p class="MsoNormal"><span lang="EN-US"><a href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.subset.swdev.abi/index.html">http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.subset.swdev.abi/index.html</a></span></p><p class="MsoNormal"><span lang="EN-US">  </span></p><p class="MsoNormal"><em><span lang="EN-US">“</span></em><em><span>用于针对</span></em><em><span lang="EN-US">ARM</span></em><em><span>体系结构的应用程序二进制接口</span></em><em><span lang="EN-US">(ABI)</span></em><em><span>的</span></em><em><span lang="EN-US">ARM</span></em><em><span>文档集,这些接口包括</span></em><em><span lang="EN-US">ARM </span></em><em><span>过程调用标准</span></em><em><span lang="EN-US">(APCS)</span></em><em><span>、</span></em><em><span lang="EN-US">ARM ELF</span></em><em><span>、</span></em><em><span lang="EN-US">ARM DWARF</span></em><em><span>、基础平台</span></em><em><span lang="EN-US">ABI(BPABI)</span></em><em><span>、</span></em><em><span lang="EN-US">C++ ABI</span></em><em><span>、异常处理</span></em><em><span lang="EN-US">ABI</span></em><em><span>、运行时</span></em><em><span lang="EN-US">ABI</span></em><em><span>和</span></em><em><span lang="EN-US">C</span></em><em><span>库</span></em><em><span lang="EN-US">ABI</span></em><em><span>。</span></em><em><span lang="EN-US">”</span></em><span lang="EN"> </span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><p class="MsoNormal"><span>在文档的</span><span lang="EN-US">Terms and abbreviations</span><span>中有:</span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><p class="MsoNormal"><strong><span lang="EN-US">AEABI<span>  </span>(Embedded) ABI for the ARM architecture (thisABI…)</span></strong><span lang="EN-US"> </span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><p class="MsoNormal"><span>也证实了</span><span lang="EN-US">EABI</span><span>就是</span><span lang="EN-US">Application Binary Interface for the ARM Architecture</span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><p class="MsoNormal"><strong><span lang="EN-US">EABI</span></strong><strong><span>的内容</span></strong> </p><p class="MsoNormal"><span lang="EN">ABI for the ARM architecture</span><span>是很多规范的合集:</span></p><p class="MsoNormal"><span lang="EN-US">AADWARF<span>   </span><span>   </span>DWARFfor the ARM Architecture </span></p><p class="MsoNormal"><span lang="EN-US">AAELF<span>         </span>ELF for the ARM Architecture </span></p><p class="MsoNormal"><span lang="EN-US">AAPCS<span>        </span><span> </span>Procedure Call Standard for the ARMArchitecture </span></p><p class="MsoNormal"><span lang="EN-US">ADDENDA<span>   </span><span>   </span>Addendato, and errata in, the ABI for the ARM Architecture </span></p><p class="MsoNormal"><span lang="EN-US">BPABI<span>          </span>Base Platform ABI for the ARM Architecture</span></p><p class="MsoNormal"><span lang="EN-US">BSABI<span>          </span>ABI for the ARM Architecture (BaseStandard) </span></p><p class="MsoNormal"><span lang="EN-US">CLIBABI<span>        </span>C Library ABI for the ARM Architecture </span></p><p class="MsoNormal"><span lang="EN-US">CPPABI<span>        </span><span> </span>C++ABI for the ARM Architecture </span></p><p class="MsoNormal"><span lang="EN-US">EHABI<span>          </span>Exception Handling ABI for the ARMArchitecture </span></p><p class="MsoNormal"><span lang="EN-US">EHEGI<span>        </span><span>  </span>Exception handling component specimenimplementations </span></p><p class="MsoNormal"><span lang="EN-US">RTABI<span>            </span>Run-time ABI for the ARMArchitecture</span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><p class="MsoNormal"><strong><span lang="EN-US">EABI</span></strong><strong><span>的作用</span></strong></p><p class="MsoNormal"><span lang="EN-US">EABI</span><span>的目的是使不同的编译器编译出来的二进制文件可以互相使用(</span><span lang="EN-US">interoperability</span><span>),比如</span><span lang="EN-US">Codesourcery, RVCT,RVDS</span><span>这些编译器。符合</span><span lang="EN-US">EABI</span><span>标准编译器编译出的库可以相互链接,这样软件开发人员就可以混合使用不同厂商提供的符合</span><span lang="EN-US">EABI</span><span>标准的二进制库。</span></p><p><em><span lang="EN-US"> </span></em></p><p class="MsoNormal" align="left"><span>下面内容来自</span><span lang="EN"><a href="http://www.arm.com/community/software-enablement/linux.php?language=zh"><span>http://www.arm.com/community/software-enablement/linux.</span></a><a href="http://lib.csdn.net/base/36" class="replace_word" title="PHP知识库" target="_blank" style="color:#df3434; font-weight:bold;">PHP</a>?language=zh</span></p><p class="MsoNormal"><em><span lang="EN-US">“</span></em><em><span lang="EN-US">ARM </span></em><em><span>有助于</span></em><em><span lang="EN-US"> GNU </span></em><em><span>编译器项目,该项目跟踪</span></em><em><span lang="EN-US"> ARM </span></em><em><span>体系结构的发展,并确保为</span></em><em><span lang="EN-US"> ARM </span></em><em><span>提供高质</span></em><em><span lang="EN-US"> GNU </span></em><em><span>工具链。</span></em></p><p class="MsoNormal"><em><span>该工具链支持目前的所有</span></em><em><span lang="EN-US"> ARM </span></em><em><span>体系结构和处理器(包括</span></em><em><span> <span lang="EN-US"><a title="äÆSûӄ" href="https://free.megaproxy.com/go/http:/www.arm.com/products/processors/technologies/instruction-set-architectures.php" target="_self">Thumb-2 <span lang="EN-US"><span lang="EN-US">指令集和</span></span>ARM <span lang="EN-US"><span lang="EN-US">体系结构第</span></span> 7 <span lang="EN-US"><span lang="EN-US">版</span></span></a></span></span></em><em><span>),并计划支持将来的处理器和体系结构。</span></em></p><p class="MsoNormal"><em><span>该工具链符合最新的</span></em><em><span> <span lang="EN-US"><a href="https://free.megaproxy.com/go/http:/infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.subset.swdev.abi/index.html" target="_self">ARM <span lang="EN-US"><span lang="EN-US">应用程序二进制接口</span></span></a></span></span></em><em><span>,因此可与</span></em><em><span> <span lang="EN-US"><a href="https://free.megaproxy.com/go/http:/www.arm.com/products/tools/software-development-tools.php" target="_self">ARM RealView Development Suite</a> </span></span></em><em><span>或符合</span></em><em><span lang="EN-US"> ABI </span></em><em><span>的任何其他工具链交互工作。用户可以配合使用</span></em><em><span lang="EN-US">ARM </span></em><em><span>提供的商用、专业工具链的已优化代码大小与性能以及使用开源工具生成的代码。</span></em></p><p class="MsoNormal"><em><span>可从</span></em><em><span lang="EN-US"> CodeSourcery </span></em><em><span>访问</span></em><em><span lang="EN-US"> GNU </span></em><em><span>编译器的源代码和预置版本,网址为:</span></em><em><span lang="EN-US"><a title="CodeSourcery GNU åw" href="https://free.megaproxy.com/go/http:/www.codesourcery.com/gnu_toolchains/arm" target="mega_body">http://www.codesourcery.com/gnu_toolchains/arm</a>“</span></em></p><p><span lang="EN"> </span></p><p class="MsoNormal"><span>当然,</span><span lang="EN-US">EABI</span><span>相对于以前的</span><span lang="EN-US">ABI</span><span>性能也会改善。</span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><p class="MsoNormal"><strong><span lang="EN-US">EABI</span></strong><strong><span>相对于以前的</span></strong><strong><span lang="EN-US">ABI</span></strong><strong><span>的改进</span></strong></p><p class="MsoNormal"><span lang="EN-US">Differencesbetween v1 and v2 of the ABI for the ARM Architecture</span><span>列出了</span><span lang="EN-US">ABI for the ARM Architecture V1</span><span>和</span><span lang="EN-US">V2</span><span>两个版本的不同,这里的</span><span lang="EN-US">ABI for the ARM Architecture V2</span><span>就是</span><span lang="EN-US">EABI</span><span>,</span><span lang="EN-US">V1</span><span>也被称作</span><span lang="EN-US">OldABI </span><span>或者</span><span lang="EN-US">Lagacy ABI</span><span>。</span><strong><span lang="EN-US">EABI</span></strong><strong><span>是</span></strong><strong><span lang="EN-US">2005</span></strong><strong><span>年推出的,新是相对于以前的</span></strong><strong><span lang="EN-US">“</span></strong><strong><span>老</span></strong><strong><span lang="EN-US">”</span></strong><strong><span>而言,从时间上看其实已经很</span></strong><strong><span lang="EN-US">“</span></strong><strong><span>老</span></strong><strong><span lang="EN-US">”</span></strong><strong><span>了</span></strong><strong><span lang="EN-US">——</span></strong><strong><span>所以很多这些所谓的</span></strong><strong><span lang="EN-US">“</span></strong><strong><span>改变</span></strong><strong><span lang="EN-US">”</span></strong><strong><span>,其实现在已经是标准做法了</span></strong><span>,</span><span>例如</span><span lang="EN">ExceptionHandling ABI</span><span>的改进使浮点数的</span><span>性能的改善,堆栈的</span><span lang="EN-US">8</span><span>字节对齐,</span><span lang="EN-US">structure packing</span><span>的改变等等。</span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><p class="MsoNormal"><strong><span lang="EN-US">GNU EABI</span></strong><span lang="EN-US"> </span></p><p class="MsoNormal"><span>在很多地方有</span><span lang="EN-US">GNU EABI</span><span>的说法,这是一个不同的</span><span lang="EN-US">ABI</span><span>吗?</span></p><p class="MsoNormal"><span>还是</span><span lang="EN-US">Codesourcery</span><span>上的</span><span lang="EN-US">QA</span><span>:</span></p><p class="MsoNormal"><span lang="EN-US"><a href="http://www.codesourcery.com/sgpp/lite/arm/portal/kbentry38">http://www.codesourcery.com/sgpp/lite/arm/portal/kbentry38</a></span></p><p class="MsoNormal"><strong><span lang="EN-US">Question</span></strong><strong></strong></p><p class="MsoNormal"><span lang="EN-US">Why is the configuration name forGNU/Linux arm-none-linux-gnueabi instead of just arm-none-linux-eabi? Is therea GNU variant of the EABI?</span></p><p class="MsoNormal"><strong><span lang="EN-US">Answer</span></strong><strong></strong></p><p class="MsoNormal"><span lang="EN-US">TheFree Software Foundation prefers that configuration names for GNU/Linux containboth the string linux and the string gnu. The configuration arm-none-linux-gnurefers to the legacy ARM ABI for GNU/Linux. Some tools depend on the fact thatconfiguration names have at most three hyphens, so gnu and eabi were combinedinto a single word. </span></p><p class="MsoNormal"><span lang="EN-US">TheABI used on GNU/Linux is not a special GNU variant of the EABI; it is just theEABI. </span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><p class="MsoNormal"><span lang="EN-US">GNUEABI</span><span>就是</span><span lang="EN-US">EABI</span><span>,</span><span lang="EN-US">ABI for the ARM architecture</span><span>。</span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><p class="MsoNormal"><strong><span>相关资料</span></strong></p><p class="MsoNormal"><span lang="EN-US">Debian Wiki: </span><span lang="EN-US">ArmEabiPort</span></p><p class="MsoNormal"><span lang="EN-US"><a href="http://wiki.debian.org/ArmEabiPort/">http://wiki.debian.org/ArmEabiPort/</a></span></p><p class="MsoNormal"><span lang="EN-US">Codesourcery</span><span>上的</span><span lang="EN-US">ARM</span><span><a href="http://lib.csdn.net/base/16" class="replace_word" title="大型网站架构知识库" target="_blank" style="color:#df3434; font-weight:bold;">架构</a></span><span lang="EN-US">FAQ</span></p><p class="MsoNormal"><span lang="EN-US"><a href="http://www.codesourcery.com/sgpp/lite/arm/portal/target_arch?@action=faq&target_arch=arm">http://www.codesourcery.com/sgpp/lite/arm/portal/target_arch?@action=faq&target_arch=arm</a></span></p><p class="MsoNormal"><span lang="EN-US">Wikipedia</span><span>上的</span><span lang="EN-US">ABI</span></p><p class="MsoNormal"><span lang="EN-US"><a href="http://en.wikipedia.org/wiki/Application_binary_interface">http://en.wikipedia.org/wiki/Application_binary_interface</a></span></p><p class="MsoNormal"><span lang="EN-US">CSDN hongjiujing</span><span>的总结:</span><span lang="EN-US">ABI/EABI/OABI</span></p><p class="MsoNormal"><span lang="EN-US"><a href="http://blog.csdn.net/hongjiujing/archive/2008/07/21/2686556.aspx">http://blog.csdn.net/hongjiujing/archive/2008/07/21/2686556.aspx</a></span></p><p class="MsoNormal"><span lang="EN-US">EABI</span><span>对浮点数性能的改善:</span><span lang="EN-US">Why ARM's EABI Matters</span></p><p class="MsoNormal"><span lang="EN-US"><a href="http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/Why-ARMs-EABI-matters/">http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/Why-ARMs-EABI-matters/</a></span></p><p> </p><p> </p>   </div>

0 0