环球门户网

arm32和ARM 64的区别

更新时间:2023-09-13 20:02:01

导读 在日常生活中,当我们使用数字设备时,我们会遇到各种不同的问题,其中一些确实令人头疼。所以遇到问题,自然要解决。今天3D小杨给大...

在日常生活中,当我们使用数字设备时,我们会遇到各种不同的问题,其中一些确实令人头疼。所以遇到问题,自然要解决。今天3D小杨给大家介绍一下arm32和ARM 64的区别。

最近三个月,我们一直在优化解码库的arm架构汇编,包括arm32位汇编优化和arm64位汇编优化。使用arm32位后,只要知道两种架构的寄存器和指令集的区别,就可以快速编写arm64位汇编代码。以下是对arm32位和arm64位架构、寄存器和指令之间差异的分析和总结。

建筑差异

是ARM RISC(精简指令集)处理器,不同于x86指令集(CISC)。

Arm32位是ARMV7架构,32位,对应的处理器是Cortex-A15等。Iphone5以前是32位的;

注意:ARMV7-A和ARMV7-R系列支持neon指令集,而ARMv7-M系列不支持neon指令集。

ARM64位采用ARMv8架构,64位运算长度。对应的处理器有iphones的Cortex-A5Cortex-A5Cortex-A7AA8等。从iphone 5s开始,苹果手机就一直使用64位处理器。

记录差异

1 ARM通用寄存器

ARM32位通用寄存器和ARM64位通用寄存器的区别可以在ARM寄存器及其描述中找到。

2 NEON寄存器

1ARM32位neon寄存器和ARM64位neon寄存器之间的区别:

小于32位的NEON寄存器:

包括:

32个S寄存器,S0~S31,(单个字,32位)

32个D寄存器,D0~D31,(双字,64位)

16个Q寄存器,Q0~Q15,(四个字,128位)

1使用注意事项:

1NEON寄存器将每个寄存器视为一个向量,包含8或16个大小和类型相同的元素。您也可以将每个元素作为标量来访问。

1NEON的这三个寄存器重叠,它们的物理地址相同。

20.使用NEON寄存器时,如果使用d8~d15寄存器,需要先堆栈vpush {d8-d15},使用后再堆栈vpop {d8-d15}。

64位以下的NEON寄存器:

包括:

32个B寄存器(B0~B31),8位

32个H寄存器(H0~H31),半字,16位

32个S寄存器(S0~S31),单个字32位

32个D寄存器(D0~D31),双字64位

32个Q寄存器(V0~V31),4个字和128位

2不同位的寄存器之间的关系如下图所示:

2其中S0是D0的下半部分,D0是V0的下半部分。

版权声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢您的支持与理解。