-
arm32和64的区别
- 作者:杨凯珠 分类:U盘 发布时间:2023-06-11 12:00:04
最近三个月的时间,都在进行解码库的arm架构汇编优化,包括arm32位汇编优化和arm64位汇编优化。在arm32位入门之后,只要掌握了两种架构的寄存器和指令集差异之后,就可以很快上手编写arm64位汇编代码了。下面就arm32位和arm64位架构、寄存器和指令差异进行分析总结。 架构差异 ARM是RISC(精简指令集)处理器,不同于x86指令集(CISC,复杂指令集)。 Arm32位是ARMV7架构,32位的,对应处理器为Cortex-A15等; iphone5以前均是32位的; 需要注意:ARMV7-A和ARMV7-R系列支持neon指...
最近三个月的时间,都在进行解码库的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位操作长度,对应处理器有Cortex-A53、Cortex-A57、Cortex-A73、iphones的A7和A8等,苹果手机从iphone 5s开始使用64位的处理器。
寄存器差异
4.1 ARM通用寄存器
ARM32位通用寄存器和ARM64位通用寄存器差异详见:ARM寄存器及其说明
4.2 NEON寄存器
ARM32位neon寄存器和ARM64位neon寄存器差异:
32位下 NEON寄存器:
包括:
32个S寄存器,S0~S31,(单字,32bit)
32个D寄存器,D0~D31,(双字,64bit)
16个Q寄存器,Q0~Q15,(四字,128bit)
使用注意:
1、NEON寄存器将每个寄存器均视为一个向量,该向量又包含1,2,4,8或16个大小和类型均相同的元素。也可以将各个元素当做标量访问。
NEON的这三种寄存器是重叠的,物理地址是一样的。
2、NEON寄存器在使用时,如果用到d8~d15寄存器,需要先入栈保存vpush {d8-d15},使用完之后要出栈vpop {d8-d15}。
64位下NEON寄存器:
包括:
32个B寄存器(B0~B31),8bit
32个H寄存器(H0~H31),半字 16bit
32个S寄存器(S0~S31) ,单字 32bit
32个D寄存器(D0~D31),双字 64bit
32个Q寄存器(V0~V31),四字 128bit
不同位数下寄存器之间的关系如下图所示:
其中S0是D0的低半部分,D0是V0的低半部分 。
猜您喜欢
- Win11传统桌面设置技巧:让你轻松找回..2024-04-29
- 轻松掌握!Win11设置还原点的五大技巧..2024-04-27
- Win11电脑图标丢失?找回你的桌面小助..2024-04-26
- Win11耳机无声?一招轻松解决,让你的..2024-04-26
- Win11远程协助灰色无法勾选?一招解决..2024-04-25
- Win11电话激活,简单易懂的全程指导!..2024-04-24
相关推荐
- 小米手环5官方正确充电方法 小米手环..2023-05-26
- 游戏王决斗链接帕伽索斯怎么获得 游..2023-04-11
- vc6.0怎么在官网下载 vc6.0怎么下载..2023-03-02
- Windows11无声却显示正常?这5招帮你轻..2024-03-21
- iphone11一直跳出无法验证服务器 iphon..2023-05-17
- 如何进入wifi管理界面 手机如何进入..2023-06-12