armeabi-v7a armeabi arm64-v8a 参数的含义解释

严格意义上这个不是原创是从网上找的资源,理解后写成的,所有资料都注明了来源

armeabi是针对所有的arm cpu,只要支持arm的指令集就可以,
v7a,v8a是针对arm后来出的指令集版本制定的cpu如符合arm7指令集的cpu

armeabi-v7a是针对有浮点运算或高级扩展功能的arm v7 cpu。
armeabi-v7a(32位ARM设备),
arm64-v8a(64位ARM设备)

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。

ARM是一种指令集,X86也是一种指令集
ARM是一种指令集,知识产权属于(ARM公司),X86也是一种指令集,X86指令集的知识产权属于Intel公司,ARM是精简指令集(RISC),X86使用的是复杂指令集(CISC)。
ARM推出指令集的同时,也推出了指令集的实现形式叫Cortex-A等系统架构,
当然如果有实力可以不使用指导的系统架构来做CPU(简单地说是CPU,实际是上核心),可以自己做架构(如高通,三星),

Intel的使用X86的指令集,自己做架构然后做出CPU来叫(奔腾,酷睿,I3),使用ARM指令集同进也使用ARM公司的架构做出的CPU有海思,使用ARM指令集不使用ARM公司架构的有高通系列CPU,苹果的CPU

(可以不看,不要搞混了     
 ARM Cortex-A8处理器是首款基于ARMv7体系结构的产品
  Cortex-A8 高性能处理器目前已经非常成熟,从高端特色手机到上网本、DTV、打印机和汽车信息娱乐,Cortex-A8处理器都提供了可靠的高性能解决方案。
应用案例:TI OMAP3系列、苹果A4处理器(iPhone 4)、三星S5PC110(三星I9000)、瑞芯微RK2918、联发科MT6575等。另外,高通的MSM8255、MSM7230等也可看做是A8的衍生版本。
ARM Cortex-A7处理器隶属于Cortex-A系列,基于ARMv7-A架构,它的特点是在保证性能的基础上提供了出色的低功耗表现。
ARM Cortex-A5处理器隶属于Cortex-A系列,基于ARMv7-A架构,它是能效最高、成本最低的处理器。
)
  

 看到移动设备对64位计算的需求后,ARM于2011年发布了ARMv8 64位架构,这是为了下一代ARM指令集架构工作若干年后的结晶。为了基于原有的原则和指令集,开发一个简明的64位架构,ARMv8使用了两种执行模式,AArch32和AArch64。

 arm8,还有arm10,昙花一现,过度产品,高不成低不就,很快就被历史淹没了。
arm8和arm v4一起诞生,成为了arm7 tdmi和arm9 tdmi的垫脚石,主要技术数据都被arm7 ej给继承了。
arm10e碰上xsale大败,转而开发arm11。
arm8开发板偶尔还能遇上,完整性又比不上7ej-s,自然比较冷门。有个产品Acorn Risc PC prototype CPU card就是arm8。

在2011年11月,ARM公司发布了新一代处理器64位架构ARMv8的部分技术细节(也就是我们常说的Cortex-A57A53),代表着未来移动处理器迈入64位行列。我们得明确一点,ARM公司自己本身并没有64位芯片设计技术,他是通过了收购MIPS64处理器架构的部分技术使用权,再结合ARM的一些特性设计出来的。也就是说:MIPS、ARM、X86三大架构中,唯一没有64位技术的ARM,通过收购MIPS的形式得到了64位。
 
所谓的ARMv8架构,就是在MIPS64架构上增加了ARMv7架构中已经拥有的的TrustZone技术、虚拟化技术及NEON advanced SIMD技术等特性,研发成的。

作者:匿名用户
链接:https://www.zhihu.com/question/22705732/answer/22336022
来源:知乎

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

ARM与X86都是处理器的架构,ARM架构属于RISC指令集,X86构架属于典型的CISC指令集。
Intel处理器是基于x86(x64)指令集的处理器,主要用于PC端,除了英特尔,其他公司也有制造x86指令集的处理器,AMD就是Intel以外最成功的制造商。骁龙是基于ARM指令集的处理器,主要用于智能手机端,除了骁龙以外,有大量的公司制作ARM指令集的处理器,例如:三星、苹果等。
x86表示32位处理器,x64表示64位处理器。
关于ARM与x86的详细区别,可以参考下面的链接: 
http://mobile.hiapk.com/knowledge/common/130718/1438966.html

通过上面的比较,我们知道了ARM是属于RISC指令集的处理器架构,

 参考文章
 http://blog.csdn.net/u011983531/article/details/51514033

指令集
CPU执行计算任务时都需要遵从一定的规范,程序在被执行前都需要先翻译为CPU可以理解的语言。这种规范或语言就是指令集(ISA,Instruction Set Architecture)。程序被按照某种指令集的规范翻译为CPU可识别的底层代码的过程叫做编译(compile)。x86、ARM v8、MIPS都是指令集的代号。指令集可以被扩展,如x86增加64位支持就有了x86-64。厂商开发兼容某种指令集的CPU需要指令集专利持有者授权,典型例子如Intel授权AMD,使后者可以开发兼容x86指令集的CPU。

架构
CPU的基本组成单元即为核心(core)。多个核心可以同时执行多件计算任务,前提是这些任务没有先后顺序。

核心的实现方式被称为微架构(microarchitecture)。微架构的设计影响核心可以达到的最高频率、核心在一定频率下能执行的运算量、一定工艺水平下核心的能耗水平等等。此外,不同微架构执行各类程序的偏向也不同,例如90年代末期Intel的P6微架构就在浮点类程序上表现优异,但在整数类应用中不如同频下的对手。

ARM公司可以指导对于指令集的实现,但是用不用就是公司说了算了

ARM公司将自己研发的指令集叫做ARM指令集,同时它还研发具体的微架构如Cortex系列并对外授权。但是,一款CPU使用了ARM指令集不等于它就使用了ARM研发的微架构。Intel、高通、苹果、Nvidia等厂商都自行开发了兼容ARM指令集的微架构,同时还有许多厂商使用ARM开发的微架构来制造CPU。

作者:王强
链接:https://zhuanlan.zhihu.com/p/19893066
来源:知乎

时间: 2024-10-31 03:51:21

armeabi-v7a armeabi arm64-v8a 参数的含义解释的相关文章

图像处理-初学MATLAB,求各位老师解释下这段代码,及参数的含义

问题描述 初学MATLAB,求各位老师解释下这段代码,及参数的含义 function pushbutton3_Callback(hObject, eventdata, handles) global tu d=10; n=2; im=double(tu); [r,c,td]=size(im); fr=im(:,:,1); fg=im(:,:,2); fb=im(:,:,3); aftr=homofil(fr,d,r,c,n); aftg=homofil(fg,d,r,c,n); aftb=hom

PHP常见错误提示含义解释(实用!值得收藏)_php技巧

本文讲述了PHP常见错误提示含义解释.分享给大家供大家参考,具体如下: 在学习PHP的时候,经常遇到各种错误提示,今天看到这错误提示和解释感觉挺好,现转过来,供我们学习.呵呵..... 1.Notice: Undefined variable:  变量名 in 注:使用了一个没有被定义的变量 2.Parse error: syntax error, unexpected T_ELSE in  If () { }Else if () { } Echo $test; Else { } 注:是 if

linux中shell变量$#,$@,$0,$1,$2的含义解释

比如脚本名称叫start.sh 输入参数三个: 1 2 3 运行test.sh 1 2 3后 $*为"1 2 3"(一起被引号包住) $@为"1" "2" "3"(分别被包住) $#为3(参数数量) linux中shell变量$#,$@,$0,$1,$2的含义解释:  变量说明:  $$  Shell本身的PID(ProcessID)  $!  Shell最后运行的后台Process的PID  $?  最后运行的命令的结束代码

oracle中用Create Table创建表时,Storage中参数的含义!

oracle|创建 可用于:表空间.回滚段.表.索引.分区.快照.快照日志 参数名称缺省值最小值最大值说明INITIAL5(数据块)2(数据块)操作系统限定分配给Segment的第一个Extent的大小,以字节为单位,这个参数不能在alter语句中改变,如果指定的值小于最小值,则按最小值创建.NEXT5(数据块)1(数据块)操作系统限定第二个Extent的大小等于NEXT的初值,以后的NEXT值=前一NEXT大小乘以(1+PCTINCREASE/100),如果指定的值小于最小值,则按最小值创建.

关于NSJSONReadingOptions参数的含义

  AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];     [operation start];          NSLog(@"request======%@",request);          [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operat

arm64 v8a arm64 v7a-jar包与arm64-v8a、arm64-v7a文件夹下的so

问题描述 jar包与arm64-v8a.arm64-v7a文件夹下的so track代码发现引用的是stidcard.jar包里的,而且程序中并没有引用arm64-v8a或者arm64-v7a文件夹下的so库,为什么还要把so放在arm64-v8a.arm64-v7a文件夹下呢?另外arm64-v8a.arm64-v7a是什么东东?对于这两个概念还不清楚?别人在提到这块时,arm架构,就过了,或者我想了解这块东西,应该如何下手,或者大家可以用最通俗的语言,一两句话把这事说清楚,这样最好不过了.

apache ab工具页面压力测试返回结果含义解释_Linux

ab是apache自带的一个很好用的压力测试工具,当安装完apache的时候,就可以在bin下面找到ab 参数说明及示例 我们可以模拟100个并发用户,对一个页面发送1000个请求 输入命令:ab -n1000 -c100 http://www.jb51.net/ 其中-n代表请求数,-c代表并发数 返回结果: ##首先是apache的版本信息 This is ApacheBench, Version 2.3 <Revision:655654> Copyright 1996 Adam Twis

Windows API GetLastError()函数返回值含义解释_Delphi

[0]-操作成功完成. [1]-功能错误. [2]-系统找不到指定的文件. [3]-系统找不到指定的路径. [4]-系统无法打开文件. [5]-拒绝访问. [6]-句柄无效. [7]-存储控制块被损坏. [8]-存储空间不足,无法处理此命令. [9]-存储控制块地址无效. [10]-环境错误. [11]-试图加载格式错误的程序. [12]-访问码无效. [13]-数据无效. [14]-存储器不足,无法完成此操作. [15]-系统找不到指定的驱动器. [16]-无法删除目录. [17]-系统无法将

参数cursor_sharing的解释

这个参数的设置,oracle是为了满足一些以前开发的程序,里面有大量的similar statement,但是重写有不现实的情况下使用的一个参数.并且oracle也不建议使用这个参数. 什么时候需要修改这个参数呢?需要满足以下的条件.一个是由于大量的shared pool hit miss影响了用户的响应时间(就是当前的shared pool无法满足共享sql语句存储的需要,Alan:当前libary cache中没有我们所需要重用的explain和sql),如果没有这个问题,那么设置这个参数,