小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

ARM工具鏈中的概念

 黃南山 2017-07-11

EABIEmbedded Application Binary Interface),嵌入式應(yīng)用程序二進(jìn)制接口。

 

ABI的定義

ABI描述應(yīng)用程序與操作系統(tǒng)、應(yīng)用程序與庫、應(yīng)用程序的組成部分之間的低層接口。ABI允許編譯好的目標(biāo)代碼在使用兼容ABI的系統(tǒng)中無需改動(dòng)就能運(yùn)行。

 

EABI的具體定義

Codesourcery上有一個(gè)這樣的QA

https://support./GNUToolchain/kbentry32

Question

What is the ABI for the ARM Architecture? Is it the same as the ARM EABI?

Answer

The ABI for the ARM Architecture is a standard developed by ARM and its partners that explains how compilers, assemblers, linkers, and other similar tools should generate object files and executable files.

Tools that correctly implement the ABI for the ARM Architecture can interoperate; i.e., object files built with one toolchain can be combined with object files built with another toolchain if both compilers use the ABI for the ARM Architecture and provided that the code compiled observes certain conventions.

CodeSourcery was 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++ ABI co-designed by CodeSourcery.) CodeSourcery continues to work with ARM, Ltd. to validate interoperability between Sourcery G++ and ARM's proprietary tools.

The "ARM EABI" is an informal name for the ABI for the ARM Architecture.

 

The "ARM EABI" is an informal name for the ABI for the ARM Architecture.

這里提到了所謂的ARM EABI就是針對 ARM 體系結(jié)構(gòu)的應(yīng)用程序二進(jìn)制接口的非正式名稱。

 

arminfocenter可以找到ABI for the ARM architecture的相關(guān)文檔:

http://infocenter./help/index.jsp?topic=/com.arm.doc.subset.swdev.abi/index.html

  

用于針對ARM體系結(jié)構(gòu)的應(yīng)用程序二進(jìn)制接口(ABI)ARM文檔集,這些接口包括ARM 過程調(diào)用標(biāo)準(zhǔn)(APCS)、ARM ELF、ARM DWARF、基礎(chǔ)平臺ABI(BPABI)、C++ ABI、異常處理ABI、運(yùn)行時(shí)ABICABI。 

 

在文檔的Terms and abbreviations中有:

 

AEABI  (Embedded) ABI for the ARM architecture (this ABI…) 

 

也證實(shí)了EABI就是Application Binary Interface for the ARM Architecture

 

EABI的內(nèi)容 

ABI for the ARM architecture是很多規(guī)范的合集:

AADWARF      DWARF for the ARM Architecture

AAELF         ELF for the ARM Architecture

AAPCS         Procedure Call Standard for the ARM Architecture

ADDENDA      Addenda to, and errata in, the ABI for the ARM Architecture

BPABI          Base Platform ABI for the ARM Architecture

BSABI          ABI for the ARM Architecture (Base Standard)

CLIBABI        C Library ABI for the ARM Architecture

CPPABI         C++ ABI for the ARM Architecture

EHABI          Exception Handling ABI for the ARM Architecture

EHEGI          Exception handling component specimen implementations

RTABI            Run-time ABI for the ARM Architecture

 

EABI的作用

EABI的目的是使不同的編譯器編譯出來的二進(jìn)制文件可以互相使用(interoperability),比如Codesourcery, RVCT, RVDS這些編譯器。符合EABI標(biāo)準(zhǔn)編譯器編譯出的庫可以相互鏈接,這樣軟件開發(fā)人員就可以混合使用不同廠商提供的符合EABI標(biāo)準(zhǔn)的二進(jìn)制庫。

 

下面內(nèi)容來自http://www./community/software-enablement/linux.php?language=zh

ARM 有助于 GNU 編譯器項(xiàng)目,該項(xiàng)目跟蹤 ARM 體系結(jié)構(gòu)的發(fā)展,并確保為 ARM 提供高質(zhì) GNU 工具鏈。

該工具鏈支持目前的所有 ARM 體系結(jié)構(gòu)和處理器(包括 Thumb-2 指令集和 ARM 體系結(jié)構(gòu)第 7 ),并計(jì)劃支持將來的處理器和體系結(jié)構(gòu)。

該工具鏈符合最新的 ARM 應(yīng)用程序二進(jìn)制接口,因此可與 ARM RealView Development Suite 或符合 ABI 的任何其他工具鏈交互工作。用戶可以配合使用 ARM 提供的商用、專業(yè)工具鏈的已優(yōu)化代碼大小與性能以及使用開源工具生成的代碼。

可從 CodeSourcery 訪問 GNU 編譯器的源代碼和預(yù)置版本,網(wǎng)址為:http://www./gnu_toolchains/arm

 

當(dāng)然,EABI相對于以前的ABI性能也會(huì)改善。

 

EABI相對于以前的ABI的改進(jìn)

Differences between v1 and v2 of the ABI for the ARM Architecture列出了ABI for the ARM Architecture V1V2兩個(gè)版本的不同,這里的ABI for the ARM Architecture V2就是EABI,V1也被稱作Old ABI 或者Lagacy ABI。EABI2005年推出的,新是相對于以前的而言,從時(shí)間上看其實(shí)已經(jīng)很——所以很多這些所謂的改變,其實(shí)現(xiàn)在已經(jīng)是標(biāo)準(zhǔn)做法了,例如Exception Handling ABI的改進(jìn)使浮點(diǎn)數(shù)的性能的改善,堆棧的8字節(jié)對齊,structure packing的改變等等。

 

GNU EABI 

在很多地方有GNU EABI的說法,這是一個(gè)不同的ABI嗎?

還是Codesourcery上的QA

http://www./sgpp/lite/arm/portal/kbentry38

Question

Why is the configuration name for GNU/Linux arm-none-linux-gnueabi instead of just arm-none-linux-eabi? Is there a GNU variant of the EABI?

Answer

The Free Software Foundation prefers that configuration names for GNU/Linux contain both the string linux and the string gnu. The configuration arm-none-linux-gnu refers to the legacy ARM ABI for GNU/Linux. Some tools depend on the fact that configuration names have at most three hyphens, so gnu and eabi were combined into a single word.

The ABI used on GNU/Linux is not a special GNU variant of the EABI; it is just the EABI.

 

GNU EABI就是EABIABI for the ARM architecture。

 

相關(guān)資料

Debian Wiki: ArmEabiPort

http://wiki./ArmEabiPort/

Codesourcery上的ARM架構(gòu)FAQ

http://www./sgpp/lite/arm/portal/target_arch?@action=faq&target_arch=arm

Wikipedia上的ABI

http://en./wiki/Application_binary_interface

CSDN hongjiujing的總結(jié):ABI/EABI/OABI

http://blog.csdn.net/hongjiujing/archive/2008/07/21/2686556.aspx

EABI對浮點(diǎn)數(shù)性能的改善:Why ARM's EABI Matters

http://www./c/a/Linux-For-Devices-Articles/Why-ARMs-EABI-matters/

 

 

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多