织梦CMS - 轻松建站从此开始!

罗索

ARM上的汇编优化小方法

落鹤生 发布于 2015-04-13 18:08 点击:次 
1.加减法,逻辑操作占一个周期,目的地址是PC寄存器时增加一个周期。分支指令占3个周期。在cache命中的情况下,16位和8位的装载指令 (LDRH、LDRH等)占一个周期,但紧跟的2个周期不能使用装入的数据。32位装载指令占一个周期,紧跟的一个周期不能使用装载数据。如果装
TAG: 优化  ARM  

1. 加减法,逻辑操作占一个周期,目的地址是PC寄存器时增加一个周期。分支指令占3个周期。在cache命中的情况下,16位和8位的装载指令 (LDRH、LDRH等)占一个周期,但紧跟的2个周期不能使用装入的数据。32位装载指令占一个周期,紧跟的一个周期不能使用装载数据。如果装载入 PC,同样要增加2个周期。
             LDR    r1,[r2]        ADD  r1,r1,r3       ADD  r4,r4,r5    占4个周期
改变次序后
             LDR    r1,[r2]        ADD  r4,r4,r5        ADD  r1,r1,r3    占3个周期

2. load指令占时间比较长,在循环中可以使用预载的方法将load与跳转指令放在一起,减少流水线的断流。
例如:
loop
    LDRB   r2,[r1]
     ...............           //do
    B            loop
更改为
   LDRB   r2,[r1]
loop
    ..............            //do
    LDRB   r2,[r1]
    B          loop

3. 循环展开时,可以在计算i步时就加载i+1步的数据,在i步的结果还没准备好时执行i+1步计算。

4. ARM只有16个可见寄存器,其中14个通用寄存器,1个堆栈指针r13,1个程序计数器r15。在图像处理的应用中很多是8位的操作数,可以利用32为寄存器一次进行两组运算。
例如:加操作      100 + 50    和       2 + 3
    位                     24                16               8                 0
    操作数1           0                100              0                 2
    操作数2           0                 50                0                3
    结果                 0                 150              0                5

5. 寄存器数量不够时,可用32为寄存器保存两个16位变量和4个8位变量。

(guanchanghui)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201504/17277.html]
本文出处:CSDN博客 作者:guanchanghui 原文
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容