`
ericbaner
  • 浏览: 173514 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ABI是什么?

 
阅读更多

http://computer.yourdictionary.com/abi

 

(Application Binary Interface) A specification for a specific hardware platform combined with the operating system. It is one step beyond the application program interface (API), which defines the calls from the application to the operating system. The ABI defines the API plus the machine language for a particular CPU family. An API does not ensure runtime compatibility, but an ABI does, because it defines the machine language, or runtime, format.

 


 


ABI,application binary interface,應用程式和作業系統的"low-level interface"。意思是,ABI有一套規則,如果遵循這個規則產生出的object,就能在相對應的系統上正確的運作。這個規則包括了data type的size,alignment,calling convention,function參數傳遞與回傳值,system call的調用等。很明顯的,這跟平台很有關係。比如說,不管用哪一個compiler,只要能生出符合ELF格式的binary,就可以在Linux上跑,或呼叫其library。


而EABI,embedded-application binary interface則規定了embedded software program的規則。跟一般的作業系統的主要差異為: 應用程式可以使用privileged instruction,dynamic linking不是required,更簡潔的stack frame用以省下memory。


而arm 的EABI有些改進,特別是floating point的運算。現在的arm應該都有實作FPA(Floating Point Accelerator),但如果compiler使用了FPU來做floting的運算,且CPU沒有FPU時,就會產生exception。其panelty會是將指令轉為software的floating運算,當然系統也就變慢了。所以支援EABI的kernel與Cross-compiler,加上支援有實作FPA的arm,performance就會好很多。


在lenny之後,就多了armel這個字,其與以前的arm差別就在於EABI這個interface。如前述,這個interface與硬體(CPU)的設計是很有關係的,對於arm不同的版本就會產生限制,因此EABI都常是建議在armv4t以後的版本。


在lenny之後,就多了armel這個字,其與以前的arm差別就在於EABI這個interface。如前述,這個interface與硬體(CPU)的設計是很有關係的,對於arm不同的版本就會產生限制,因此EABI都常是建議在armv4t以後的版本。

 

Why ARM's EABI matters

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

 

ABI wiki:

http://en.wikipedia.org/wiki/Application_binary_interface

 

 

  • 大小: 15 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics