8、ARM汇编编程:分支指令性能与内存操作解析

ARM汇编编程:分支指令性能与内存操作解析

1. 分支指令性能

ARM 64位指令集在指令流水线中执行,单条指令执行需三个时钟周期:
1. 从内存将指令加载到CPU。
2. 解码指令。
3. 执行指令。

不过,CPU可同时处理三条处于不同步骤的指令,平均每个时钟周期执行一条指令。但当执行分支指令时,后续指令的解码和预加载工作将被丢弃,需重新开始,这意味着分支后的指令需三个时钟周期执行。较新的ARM处理器有更复杂的长流水线,有时可通过猜测分支走向继续执行,但仍可能导致流水线停顿。

在代码中大量使用分支指令会带来性能损失,可能使程序速度减慢约三倍。此外,过多分支会导致代码像意大利面一样混乱,难以维护。早期高级编程语言依赖 goto 语句,导致代码难以理解,现代高级语言采用结构化编程避免了这一问题。虽然ARM 64没有结构化编程结构,但我们仍需按此思路组织代码,使用一些好的设计模式,使代码更高效、易读。

2. 更多比较指令

主要的比较指令是 CMP ,它将 Operand2 Xn 中减去并相应设置条件标志,减法结果会被丢弃。此外,还有另外两种比较指令:
- CMN Xn, Operand2 :使用加法而非减法, N 表示它是 CMP 的反向操作。
- TST Xn, Operand2 :对 Xn Opera

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值