bar*_*e82 4 parallel-processing assembly arm
有人可以解释何时使用并行加/减ARM指令ASX和/或SAX?在什么情况下/算法需要用来调出半字,然后加上AND减去上/下半字?以下是每个的解释:
ASX
- 交换半字
Rm,然后添加顶部半字和减去底部半字.SAX
- 交换半字
Rm,然后减去前半字和添加下半字.
Ros*_*dge 10
就像Russ Schultz在评论中所说的那样,用L + R和LR通道编码的音频很有用.它将使用类似于:
ldr r1, [r0] ; R1 = (L-R):(L+R)
shasx r1, r1, r1 ; R1 = ((L-R)+(L+R))/2:((L+R)-(L-R))/2
; = (2L/2):(2R/2)
; = L:R
ror r1, r1, #16 ; R1 = R:L
str r1, [r0]
Run Code Online (Sandbox Code Playgroud)
交换第三个操作数的顶部和底部半字是必要的,因此可以相互增加/减少两个不同的组件.没有你得到的交换((L-R)+(L-R))/2:((L+R)-(L+R))/2 = (2(L-R)/2):(0/2) = (L-R):0.
| 归档时间: |
|
| 查看次数: |
163 次 |
| 最近记录: |