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

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

1. 分支指令性能

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

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

在代码中大量使用分支指令会降低性能,可能使程序速度减慢至原来的三分之一。此外,过多分支会导致代码像意大利面一样混乱,难以维护。早期高级编程语言依赖 goto 语句,导致代码难以理解,现代高级语言采用结构化编程避免了这个问题。虽然 ARM 64 没有结构化编程结构,但我们仍需结构化代码,以提高效率和可读性。

2. 更多比较指令

除了主要的比较指令 CMP ,还有另外两条比较指令:
- CMN Xn, Operand2 :使用加法而非减法, N 表示它是 CMP 的反向操作。
- TST Xn, Operand2 :对 Xn Operand2 执行按位与操作,并根据结果更新标志位。

汇编器能在这三条比较指令间切换,以处理一些特殊的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值