Android开发之armeabi

来源:互联网 发布:wampserver绑定域名 编辑:程序博客网 时间:2024/04/30 00:46

说到ARM,首先有必要了解一下ARM、x86(x64)、Intel处理器、骁龙处理器的区别了。

  1. ARM与X86都是处理器的架构,ARM架构属于RISC指令集,X86构架属于典型的CISC指令集。
  2. Intel处理器是基于x86(x64)架构的处理器,主要用于PC端,除了英特尔,其他公司也有制造x86架构的处理器,AMD就是Intel以外最成功的制造商。骁龙是基于ARM架构的处理器,主要用于智能手机端,除了骁龙以外,有大量的公司制作ARM架构的处理器,例如:三星、苹果等。
  3. x86表示32位处理器,x64表示64位处理器。

关于ARM与x86的详细区别,可以参考下面的链接:
http://mobile.hiapk.com/knowledge/common/130718/1438966.html

通过上面的比较,我们知道了ARM是属于RISC指令集的处理器架构,那么EABI又是什么呢?

百度百科:
应用程序二进制接口(application binary interface,ABI) 描述了应用程序和操作系统之间,一个应用和它的库之间,或者应用的组成部分之间的低层接口。ABI不同于应用程序接口(API),API定义了源代码和库之间的接口,因此同样的代码可以在支持这个API的任何系统中编译,然而ABI允许编译好的目标代码在使用兼容ABI的系统中无需改动就能运行。

百度百科:
EABI,全称是Embedded application binary interface, 即嵌入式应用二进制接口,是描述“可连接目标代码、库目标代码、可执行文件影像”如何连接、执行和调试,以及目标代码生成过程,和c, c++语言接口的规范,是编译连接工具的基础规范,也是研究它们工作原理的基础,可惜arm的EABI迄今为止没有完全订好。作为EABI的组成部分有过程调用规范,可执行文件格式规范,c/c++ ABI规范和调试格式规范。

EABI ,说的是这样的一种新的系统调用方式
mov r7, #num
swi 0x0
原来的系统调用方式是这样,
swi (#num | 0x900000) (0x900000是个magic值)

简单的说,ABI规范了应用程序对寄存器的使用方法,Call procedure,以及如何进入trap。符合某一平台ABI规范的应用程序就可以在这一平台上运行。这一规范是针对binary,而不是source的。所以同样的高级语言代码,使用不同的toolchain,可以得到符合不同ABI规范的binary。
arm abi,非正式称呼为eabi,是一种规范,符合这种规范的编译器有arm-eabi-gcc。

1 0
原创粉丝点击