OABI 和 EABI

1。什麼是ABI
ABI,application binary interface (ABI),應用程序二進制接口。
既然是 接口,那就是某兩種東西之間的溝通橋樑,此處有這些種情況:
A。應用程序 <-> 操作系統;
B。應用程序 <-> (應用程序所用到的)庫
C 。應用程序各個組件之間

類似於API的作用是使得程序的代碼間的兼容,ABI目的是使得程序的二進制(級別)的兼容。

2。什麼是OABI 和 EABI
OABI中的O,表示“Old”,“Lagacy”,舊的,過時的,OABI就是舊的/老的ABI。
EABI中的E,表示“Embedded”,是一種新的ABI。
EABI有時候也叫做GNU EABI。
OABI和EABI都是專門針對ARM的CPU來說的。

3。EABI的好處 / 爲何要用EABI
A。支持軟件浮點和硬件實現浮點功能混用
B。系統調用的效率更高
C。後今後的工具更兼容
D。軟件浮點的情況下,EABI的軟件浮點的效率要比OABI高很多。

4。OABI和EABI的區別
兩種ABI在如下方面有區別:
A。調用規則(包括參數如何傳遞及如何獲得返回值)
B。系統調用的數目以及應用程序應該如何去做系統調用
C。目標文件的二進制格式,程序庫等
D。結構體中的 填充(padding/packing)和對齊。
E。

 

application binary interface (ABI):

應用二進制接口,描述了應用程序和操作系統之間,一個應用和它的之間,或者應用的組成部分之間的低層接口。ABI不同於應用程序接口(API),API定義了源代碼和庫之間的接口,因此同樣的代碼可以在支持這個API的任何系統中編譯,然而ABI允許編譯好的目標代碼在使用兼容ABI的系統中無需改動就能運行。

ABI掩蓋了各種細節,例如:調用約定(控制着函數的參數如何傳送以及如何接受返回值);系統調用的編碼和一個應用如何向操作系統進行系統調用;以及在一個完整的操作系統ABI中,目標文件的二進制格式、程序庫等等。一個完整的ABI,像Intel二進制兼容標準 (iBCS) ,允許支持它的操作系統上的程序不經修改在其他支持此ABI的操作體統上運行。其他的 ABI 標準化細節包括 C++ 名稱修飾 和同一個平臺上的編譯器之間的調用約定,但是不包括跨平臺的兼容性。

Unix風格的操作系統中,存在很多運行在同一硬件平臺上互相相關但是不兼容的操作系統(尤其是Intel 80386兼容系統)。有一些努力嘗試標準化ABI,以減少銷售商將程序移植到其他系統時所需的工作。然而,直到現在還沒有很成功的例子,雖然Linux標準化工作組正在爲Linux做這方面的努力。

 

 

http://www.eurotech-inc.com/embedded-eabi-linux.asp

What is EABI?

GNU EABI is a new application binary interface (ABI) for Linux. It is part of a new family of ABIs from ARM® Ltd. known in the ARM-Linux community as EABI (or sometimes Embedded ABI). Eurotech was the first to make available a port of Debian using this new ABI for ARM systems.

Why switch to EABI?

The new EABI:

  • Allows use of optimized hardfloat functions with the system's softfloat libraries
  • Uses a more efficient syscall convention
  • Will be more compatible with future tools

The ability to mix floating point code is the most important new feature. Like most root file systems for ARM computers, Debian has traditionally used hardfloat FPA instructions for floating point arithmetic. Very few ARM CPUs actually support FPA (a specific kind of floating point acceleration) but ARM-Linux kernels can emulate FPA instructions. They do this through illegal instruction faults which are rather inefficient. Emulating floating point instructions using softfloat (-msoftfloat) can be 4 to 10 times faster than kernel emulation. Prior to the introduction of EABI, the only way to use softfloat was to recompile the entire root file system with softfloat enabled. With EABI, softfloat instructions will be used by default and the root file system can have a mixture of softfloat and hardfloat executables. Now, if you have a system with floating point hardware -- it doesn't have to be FPA, it can be something else -- you can recompile critical software with the appropriate hardfloat instructions and run it on a system along with software that uses softfloat.

We have or will have systems that use VFP (Vector Floating Points), Maverick Crunch (Cirrus Logic), and iWMMXt (Intel) instructions. (The iWMMXt instructions are actually integer SIMD instructions but their opcodes overlap those for FPA.)

How do I use EABI?

To use EABI, you'll need to visit our support forums for installation details. The root file system includes an ARM-Linux-GNU EABI toolchain which you can use to recompile your own source code.

HOW CAN i USE eabi WITH vfp OPTIMIZATIONS?

Several of our systems support Vector Floating Point (VFP) instructions, which can be used to optimize software that makes intensive use of floating point math. We have benchmarked speed improvements of up to 400% for the libc math library, and 200% for the Mesa 3-D graphics library. We provide a page with instructions for using VFP with these libraries on EABI systems, as well as building your own software with VFP optimizations.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章