文章目录

  • MUL
  • MLA
  • SMULL
  • SMLAL
  • UMULL
  • UMLAL

ARM有两类乘法指令:一类指令的操作结果为32位,所以叫32位乘法指令;另一类的操作结果位64位,所以叫64位乘法指令。

为了运算高效,乘法指令要求所有操作数都位于寄存器中,所以ARM乘法指令无需指定寻址方式。

ARM共有如下乘法指令:

助记符 说明 实现逻辑
MUL 32位乘法指令 Rd = Rm * Rs
MLA 32位带加数的乘法指令 Rd = Rm * Rs + Rn
SMULL 64位有符号数乘法指令 RdHi = (Rm * Rs)[63:32];
RdLo = (Rm * Rs)[31:0];
SMLAL 64位带加数的有符号数乘法指令 RdLo = (Rm * Rs)[31:0] + RdLo;
RdHi = (Rm * Rs)[63:32] + RdHi + CarryFrom((Rm * Rs)[31:0] + RdLo);
UMULL 64位无符号数乘法指令 RdHi = (Rm * Rs)[63:32];
RdLo = (Rm * Rs)[31:0];
UMLAL 64位带加数的无符号数乘法指令 RdLo = (Rm * Rs)[31:0] + RdLo;
RdHi = (Rm * Rs)[63:32] + RdHi + CarryFrom((Rm * Rs)[31:0] + RdLo);

MUL

MUL{<cond>}{S} <Rd>, <Rm>, <Rs>if ConditionPassed(cond) thenRd = (Rm * Rs)[31:0]if S == 1 thenN Flag = Rd[31]Z Flag = if Rd == 0 then 1 else 0C Flag = unaffectedV Flag = unaffected

MLA

MLA{<cond>}{S} <Rd>, <Rm>, <Rs>, <Rn>if ConditionPassed(cond) thenRd = (Rm * Rs + Rn)[31:0]if S == 1 thenN Flag = Rd[31]Z Flag = if Rd == 0 then 1 else 0C Flag = unaffectedV Flag = unaffected

SMULL

SMULL{<cond>}{S} <RdLo>, <RdHi>, <Rm>, <Rs>, <Rn>if ConditionPassed(cond) thenRdHi = (Rm * Rs)[63:32] // 计算结果的高32位RdLo = (Rm * Rs)[31:0] // 计算结果的低32位if S == 1 thenN Flag = RdHi[31]Z Flag = if RdHi == 0 and RdLo == 0 then 1 else 0C Flag = unaffectedV Flag = unaffected

SMLAL

SMLAL{<cond>}{S} <RdLo>, <RdHi>, <Rm>, <Rs>, <Rn>if ConditionPassed(cond) thenRdLo = (Rm * Rs)[31:0] + RdLoRdHi = (Rm * Rs)[63:32] + RdHi + CarryFrom((Rm * Rs)[31:0] + RdLo)if S == 1 thenN Flag = RdHi[31]Z Flag = if RdHi == 0 and RdLo == 0 then 1 else 0C Flag = unaffectedV Flag = unaffected

UMULL

UMULL{<cond>}{S} <RdLo>, <RdHi>, <Rm>, <Rs>, <Rn>if ConditionPassed(cond) thenRdHi = (Rm * Rs)[63:32]RdLo = (Rm * Rs)[31:0]if S == 1 thenN Flag = RdHi[31]Z Flag = if RdHi == 0 and RdLo == 0 then 1 else 0C Flag = unaffectedV Flag = unaffected

UMLAL

UMLAL{<cond>}{S} <RdLo>, <RdHi>, <Rm>, <Rs>, <Rn>if ConditionPassed(cond) thenRdLo = (Rm * Rs)[31:0] + RdLoRdHi = (Rm * Rs)[63:32] + RdHi + CarryFrom((Rm * Rs)[31:0] + RdLo)if S == 1 thenN Flag = RdHi[31]Z Flag = if RdHi == 0 and RdLo == 0 then 1 else 0C Flag = unaffectedV Flag = unaffected

ARM指令集之乘法指令相关推荐

  1. ARM指令集复习 | 基本指令用法

    文章目录 1.ARM指令集概述 2.ARM的寻址方式 2.1 立即寻址 2.2 寄存器寻址 2.3 多寄存器及块拷贝寻址 2.4 堆栈寻址 2.5 相对寻址 3.ARM指令集 3.1 存储器访问(L/ ...

  2. ARM 指令集跳转指令

    一.跳转指令 跳转指令用于实现程序流程的跳转,在ARM 程序中有两种方法可以实现程序流程的跳转: Ⅰ.使用专门的跳转指令. Ⅱ.直接向程序计数器PC 写入跳转地址值. 通过向程序计数器PC 写入跳转地 ...

  3. ARM 指令集的基础指令

    ARM 和汇编语言基础 ARM 基础 位.字节.字是计算机数据存储的单位. 位是最小的存储单位,每一个位存储一个1位的二进制码,一个字节由8位组成. 而字通常为16.32或64个位组成.ARM 处理器 ...

  4. ARM指令集与Thumb指令集--区别关联--汇编指令 BX LR ; 跳转回LR地址处,既可以是ARM模式也可以是Thumb模式

    BX        LR    ; 跳转回LR地址处,既可以是ARM模式也可以是Thumb模式 A 一.现在先区分下ARM指令集与Thumb指令集        Thumb 指令可以看作是 ARM 指 ...

  5. ARM汇编:乘法指令集

    ARM汇编:乘法指令集

  6. ARM学习笔记7——乘法指令

    ARM乘法指令完成两个数据的乘法,两个32位二进制数相乘的结果是64位的4积. 其中: 1."RadHi:RdLo"是由RdHi(最高有效32位)和RdLo(最低有效32位)链接形 ...

  7. ARM体系架构—ARMv7-A指令集:协处理器指令

    ARM体系架构-ARMv7-A指令集 一.ARMv7-A指令集 二.ARMv7-A协处理器 二.ARMv7-A协处理器指令 三.读懂Linux Kernel协处理器指令 一.ARMv7-A指令集 AR ...

  8. x86指令集和arm指令集部分对比

    本文主题:本文主要对比了x86 ISA 和 arm ISA的部分区别. 目录 一.x86 ISA 1.指令组成 二.指令各部分解析 1.Instruction Prefixes(可选部分) 2.Opc ...

  9. MMX指令集系列之二----移位运算和乘法指令

    4. 数据移位指令   4.1 16位并行左移指令 psllw MM,MM/m64 psllw MM,imm8 把目的寄存器按字由源存储器(或imm8 立即数)指定位数逻辑左移,移出的位丢失.     ...

  10. ARM指令集 VS Thumb指令集

    1 thumb指令集概述 为兼容数据总线宽度为16位的应用系统,ARM体系结构除了支持执行效率很高的32位ARM指令集以外,同时支持16位的Thumb指令集. Thumb指令集是ARM指令集的一个子集 ...

最新文章

  1. webdriver(python)学习笔记一
  2. 【分割模型解读】感受野与分辨率的控制术—空洞卷积
  3. java的圆周率_java学习日记,圆周率的打印
  4. cmake的使用--目标的编译附源码
  5. 【整洁之道】如何写出更整洁的代码(上)
  6. hdu 5374 Tetris(模拟)
  7. POJ 2287 - Tian Ji -- The Horse Racing(贪心)
  8. scrapy再学习与第二个实例
  9. mysql where 大小写_java – 使用select where where Mysql在Mysql中区分大小写
  10. StarkWare推出ZK Rollup扩容解决方案StarkNet
  11. PAT 乙级1014 福尔摩斯的约会(C语言)
  12. 重启apache下php,linux下apache重启并查看php环境
  13. 怪事总是发生我身上,铜证如山
  14. 【入门】求三个数的平均数
  15. 解决阿里云轻量应用服务器不能安装应用
  16. 10月国庆旅游好去处推荐|带上思维导图去旅行
  17. 51单片机---麻雀虽小,五脏俱全
  18. 爬取智联招聘(搜索含关键词职位)
  19. 根据url 在ensembl 网站爬取外显子等数据
  20. Excel解析easyexcel工具类

热门文章

  1. php地图找房代码,vue-baidu-map简单实现地图找房
  2. 开机需要手动启动无线
  3. 博客园8月份第3周51Aspx源码发布详情
  4. [Swift]添加暂无数据和暂无网络缺省页
  5. android 动态修改pdf,PDF编辑器安卓版,手机也能修改PDF文档
  6. spss因子分析结果解读_【SPSS数据分析】SPSS聚类分析(R型聚类)的软件操作与结果解读 ——【杏花开生物医药统计】...
  7. 解决矢量地图与卫星地图叠加有偏移的两种方法
  8. 软件测试简历,这一点你是否漏掉
  9. 兄弟,学点AI吗?2知识的确定性系统
  10. 二进制编码转ASCII字符与字符转二进制码的小解码器、编码器