ARM指令集之乘法指令
文章目录
- 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指令集之乘法指令相关推荐
- ARM指令集复习 | 基本指令用法
文章目录 1.ARM指令集概述 2.ARM的寻址方式 2.1 立即寻址 2.2 寄存器寻址 2.3 多寄存器及块拷贝寻址 2.4 堆栈寻址 2.5 相对寻址 3.ARM指令集 3.1 存储器访问(L/ ...
- ARM 指令集跳转指令
一.跳转指令 跳转指令用于实现程序流程的跳转,在ARM 程序中有两种方法可以实现程序流程的跳转: Ⅰ.使用专门的跳转指令. Ⅱ.直接向程序计数器PC 写入跳转地址值. 通过向程序计数器PC 写入跳转地 ...
- ARM 指令集的基础指令
ARM 和汇编语言基础 ARM 基础 位.字节.字是计算机数据存储的单位. 位是最小的存储单位,每一个位存储一个1位的二进制码,一个字节由8位组成. 而字通常为16.32或64个位组成.ARM 处理器 ...
- ARM指令集与Thumb指令集--区别关联--汇编指令 BX LR ; 跳转回LR地址处,既可以是ARM模式也可以是Thumb模式
BX LR ; 跳转回LR地址处,既可以是ARM模式也可以是Thumb模式 A 一.现在先区分下ARM指令集与Thumb指令集 Thumb 指令可以看作是 ARM 指 ...
- ARM汇编:乘法指令集
ARM汇编:乘法指令集
- ARM学习笔记7——乘法指令
ARM乘法指令完成两个数据的乘法,两个32位二进制数相乘的结果是64位的4积. 其中: 1."RadHi:RdLo"是由RdHi(最高有效32位)和RdLo(最低有效32位)链接形 ...
- ARM体系架构—ARMv7-A指令集:协处理器指令
ARM体系架构-ARMv7-A指令集 一.ARMv7-A指令集 二.ARMv7-A协处理器 二.ARMv7-A协处理器指令 三.读懂Linux Kernel协处理器指令 一.ARMv7-A指令集 AR ...
- x86指令集和arm指令集部分对比
本文主题:本文主要对比了x86 ISA 和 arm ISA的部分区别. 目录 一.x86 ISA 1.指令组成 二.指令各部分解析 1.Instruction Prefixes(可选部分) 2.Opc ...
- MMX指令集系列之二----移位运算和乘法指令
4. 数据移位指令 4.1 16位并行左移指令 psllw MM,MM/m64 psllw MM,imm8 把目的寄存器按字由源存储器(或imm8 立即数)指定位数逻辑左移,移出的位丢失. ...
- ARM指令集 VS Thumb指令集
1 thumb指令集概述 为兼容数据总线宽度为16位的应用系统,ARM体系结构除了支持执行效率很高的32位ARM指令集以外,同时支持16位的Thumb指令集. Thumb指令集是ARM指令集的一个子集 ...
最新文章
- webdriver(python)学习笔记一
- 【分割模型解读】感受野与分辨率的控制术—空洞卷积
- java的圆周率_java学习日记,圆周率的打印
- cmake的使用--目标的编译附源码
- 【整洁之道】如何写出更整洁的代码(上)
- hdu 5374 Tetris(模拟)
- POJ 2287 - Tian Ji -- The Horse Racing(贪心)
- scrapy再学习与第二个实例
- mysql where 大小写_java – 使用select where where Mysql在Mysql中区分大小写
- StarkWare推出ZK Rollup扩容解决方案StarkNet
- PAT 乙级1014	福尔摩斯的约会(C语言)
- 重启apache下php,linux下apache重启并查看php环境
- 怪事总是发生我身上,铜证如山
- 【入门】求三个数的平均数
- 解决阿里云轻量应用服务器不能安装应用
- 10月国庆旅游好去处推荐|带上思维导图去旅行
- 51单片机---麻雀虽小,五脏俱全
- 爬取智联招聘(搜索含关键词职位)
- 根据url 在ensembl 网站爬取外显子等数据
- Excel解析easyexcel工具类
热门文章
- php地图找房代码,vue-baidu-map简单实现地图找房
- 开机需要手动启动无线
- 博客园8月份第3周51Aspx源码发布详情
- [Swift]添加暂无数据和暂无网络缺省页
- android 动态修改pdf,PDF编辑器安卓版,手机也能修改PDF文档
- spss因子分析结果解读_【SPSS数据分析】SPSS聚类分析(R型聚类)的软件操作与结果解读 ——【杏花开生物医药统计】...
- 解决矢量地图与卫星地图叠加有偏移的两种方法
- 软件测试简历,这一点你是否漏掉
- 兄弟,学点AI吗?2知识的确定性系统
- 二进制编码转ASCII字符与字符转二进制码的小解码器、编码器