ARM Core指令现在越来越强大,同时又因此能耗低,现在越来越广泛地应用于移动设备中。随着3G时代的到来,各种移动终端设备中都有多媒体功能,而且是功能越多且性能越优.很多smartphone上都能播放高清的视频了。在这就把ARM assembly instruction sets 进行次总结,也好让自己对相关的指令更加地灵活应用。

目前由指令集来看,主要有以下几种:ARMv4, ARMv5E, ARMv6 and Neon.

各种ARM CPU core都有其对应的指令集,其体的型号可查ARM 公司资料(在公司主页可以找到很有用的infos),如:ARM7TDMI, ARM720T,ARM920T等用ARMv4 ISA; ARM7EJ-S, AMR926EJ-S, ARM1020E 等用ARMv5E, ARM1036J-S, ARM1136J-S等用ARMv6 ISA, Cortex-A8 等用Neon. 所有的ARM core都有向下兼容性。

 本文基于ARMv4,来对ARMv5E, ARMv6 和Neon ISAs增加部分进行汇总,并分析新增指令会带来什么样的性能提升。

ARMv5E 扩展提供了许多新的指令。

(1) CLZ  Rd, Rm    ---- 零计数指令用于计算最高符号位与第一个1之间的零的个数

这个指令在Speech/Audio codec 归一化运算中很有用,如用ARMv4 ISA实现前向零计数会有用到好几第指令来实现。

(2) QADD Rd, Rm, Rn   --- Rd = Sat(Rm + Rn)

QDADD Rd, Rm, Rn  ---- Rd = Sat(Rm + Rn << 1)

QSUB    Rd, Rm, Rn  ---- Rd = Sat(Rm - Rn)

QDSUB  Rd, Rm, Rn  ---- Rd = Sat(Rm - Rn << 1)

由于代码的定点化过程中,对很多运算都有饱和保护,用C或ARMv4 ISA来实现这个功能效率会很低。但用ARMv5只照一条指令就行了。

(3) 乘累加指令

ARMv5E在音频算法方面的optimization效果会很好,主要是有新增加了16bits*16bits,32bits*16bits乘累加指令。而音频很多源数据是16bits,同时也有可能一些filter coefs 是32bits,这时ARMv5E指令就能很好的发挥其威力.

SMLAxy    Rd, Rm, Rs, Rn    --- Rd = (Rm.x * Rs.y) + Rn

SMLALxy   RdHi, RdLo, Rm, Rs --- [RdHi, RdLo] += Rm.x * Rs.y

SMLAWy    Rd, Rm, Rs, Rn    ---- Rd = ((Rm*Rs.y) >> 16) + Rn

SMULxy     Rd, Rm, Rs          ---- Rd = Rm.x + Rs. y

SMULWy    Rd, Rm, Rs          ---- Rd = ((Rm*Rs.y) >> 16)

转载于:https://www.cnblogs.com/huaping-audio/archive/2010/07/31/1789062.html

ARM assembly instruction set 汇总(一)相关推荐

  1. ARM机器码的操作码汇总

    ARM机器码的操作码汇总 阿梾 工作日志 2015/02/25 11:19 阅读数 2.8K v is immed_value n is Rn m is Rm s is Rs r is registe ...

  2. ARM汇编常用指令汇总

    文章目录 ARM常见汇编指令的汇总 1.EQU 2.AREA 3.DCD 4. ENTRY 5. START 6. LDR 7. STR 8.BEQ 9.MSR/MRS 10.B/BL/BX 11.P ...

  3. 【嵌入式】ARM技术博客汇总

    00. 目录 文章目录 00. 目录 01. 开发环境 02. ARM汇编 03. ARM裸板 04. 内核驱动 05. 项目实践 06. 问题专区 07. 参考链接 08. 附录 01. 开发环境 ...

  4. ARM Compiler相关资料汇总

    Arm compiler user guide V6.6用户使用手册,告诉用户如何去使用RM. https://developer.arm.com/documentation/dui1093/d Ar ...

  5. ARM base instruction -- 简单三级流水线

    /*  * 简单三级流水线  */     IF        Instruction fetch                                            取指      ...

  6. ARM base instruction -- ldm

    /*  * ldm  *  * 批量访问内存,内存中批量读取数据到寄存器  */ LDM|STM {type} 基址寄存器{!}, 寄存器列表{^} ldm{cond} {!} < regist ...

  7. ARM base instruction -- cmn

    /*  * CMN : 比较取负的值  */       (Compare Negative)       CMN{条件}{P}  <op 1>, <op 2>         ...

  8. ARM base instruction -- b bl bx blx

    'B{cond}  <target_address> '分支指令 - 类似于goto {} 代表可有可无,<>代表缺少就报错,cond为指令执行的条件码,target_addr ...

  9. ARM base instruction -- mul

    /*  * MUL : 乘法  */     (Multiplication)       MUL{条件}{S}  <dest>, <op 1>, <op 2>   ...

最新文章

  1. 小鹏高管:高速自动驾驶明年实现量产
  2. IBM---Java 多线程与并发编程专题
  3. Intel VT学习笔记(七)—— EPT物理地址转换
  4. hbase的集群搭建
  5. css样式子绝父相,子绝父相_HTML+CSS前端基础知识教程_腾讯视频
  6. Swiftfox:极速的冲浪体验
  7. linux libmpi.so.12,单机安装vasp5.4.4,系统SUSE 12 SP3,编译器Intel_Parallel_Studio_XE_2019_Linux...
  8. 用户故事与敏捷方法—编写故事
  9. 数据库索引失效与判断是否命中索引
  10. vue2项目封装百度地图3.0拾取坐标控件
  11. 打破双亲委派么,怎么打破_打破统一垃圾收集规则
  12. echarts加载世界地图并展示个人数据
  13. Tik Tok月活12亿 Tiktok和抖音有什么不同 ?
  14. PXC 避免加入集群时发生SST
  15. yum clean all的作用
  16. 对图片进行等比例压缩
  17. 理光打印机MP 3054 SP苹果电脑MAC驱动
  18. oracle 分区表好处,Oracle表分区的相关概念及其优点(转)
  19. 【访问控制-安全标记】自主访问控制和强制访问控制
  20. 你想把书出到第七版么?

热门文章

  1. socket缓冲区以及阻塞模式
  2. 7添加静态路由 hat red_两个不同网段的路由器,如何互通?
  3. 芦溪中学2021高考成绩查询,三台县芦溪中学2021年招生简章
  4. 怎样取消无线配置服务器,如何 去掉无线配置服务器
  5. element 修改分页样式_如何给wordpress网站的文章列表,添加分页效果?可以通过2种方式...
  6. matplotlib 旋转刻度_Matplotlib数据可视化:文本与坐标轴
  7. java https jasonrpc_以太坊 ethereum JSON-RPC java 调用示例
  8. lsof查看占用高_查看端口占用情况lsof,并关闭对应进程kill
  9. python基础开发环境_Python基础教程,第一讲,开发环境搭建
  10. java 用户日志_2020年阿里巴巴最全Java、架构师、大数据、算法PPT技术栈图册