无符号有符号乘法_刘帅嵌入式系统-乘法指令
ARM有两类乘法指令:一类为32位的乘法指令,即乘法操作的结果为32位;另一类为64位的乘法指令,即乘法操作的结果为64位。两类指令共有以下6条。
- MUL:32位乘法指令
- MLA:32位带加数的乘法指令
- SMULL:64位有符号数乘法指令
- SMLAL:64位带加数的有符号数乘法指令
- UMULL:64位无符号数乘法指令
- UMLAL:64位带加数的无符号数乘法指令
MUL
MUL指令实现两个32位的数(可以为无符号,也可以为有符号)的乘积,并将结果存放到一个32位的寄存器中,同时可以根据运算结果设置CPSR寄存器中相应的条件标志位。考虑指令执行的效率,指令中所有操作数都存放在寄存器中。
指令的编码格式
指令的语法格式
MUL{< cond >} {S} < Rd >, < Rm >, < Rs >
其中:
- < cond >为指令执行的条件码。当忽略< cond >时,指令为无条件执行。
- S决定指令的操作是否影响CPSR中的条件标志位N位和Z位的值。当有S时,指令更新CPSR中的条件标志位的值;当没有S时,指令不更新CPSR中的条件标志位的值。
- < Rd >寄存器为目标寄存器。
- < Rm >寄存器为第1个乘数所在的寄存器。
- < Rs >为第2个乘数所在的寄存器。
指令操作的伪代码
if ConditionPass(cond) then Rd=(Rm * Rs)[31:0] if S==1 then N Flag=Rd[31] Z Flag=if Rd == 0 then 1 else 0 C Flag=unaffected /*See "C flag" note*/ V Flag=unaffected
指令的使用
由于两个32位的数相乘的结果位64位,而MUL指令仅仅保存了64位结果的低32位,所以对于带符号的和无符号的操作数来说,MUL指令执行的结果相同。
对于ARMv5及以上的版本,MULS指令不影响CPSR寄存器中的C条件标志位。对于以前的版本,MULS指令执行后,CPSR寄存器中的C条件标志位数值是不确定的。
寄存器< Rm >、< Rn >及< Rd >为 R15时,指令执行的结果不可预期。
示例
MUL R0, R1, R2 ;R0 = R1 * R2MULS R0, R1, R2 ;R0 = R1 * R2 同时设置CPSR中N位和Z位
无符号有符号乘法_刘帅嵌入式系统-乘法指令相关推荐
- 刘帅嵌入式系统-BLX(1)
第一种格式的BLX指令记作BLX(1),BLX(1)指令从ARM指令集跳转到指定的目标地址,并将程序状态切换为Thumb状态,同时将PC寄存器的内容复制到LR寄存器中. 本指令属于无条件执行的指令(即 ...
- 刘帅嵌入式系统-CMN基于相反数的比较指令
CMN指令将寄存器Rn中的值加上< shifter_operand > 表示的数值,根据操作的结果更新CPSR中相应的条件标志位,后面的指令就可以根据CPSR中相应的条件标志位来判断是否执 ...
- 刘帅嵌入式系统-BLX(2)
第二种格式的BLX指令记作BLX(2).BLX(2)指令从ARM指令集跳转到指定的目标地址,目标地址的指令可以是ARM指令,也可以是Thumb指令.目标地址放在指令中的寄存器中,该地址的bit[0]值 ...
- 刘帅嵌入式系统-EOR逻辑异或操作指令
EOR指令将< shifter_operand > 表示的数值与寄存器< Rn >值按位做逻辑异或操作,并把结果保存到目标寄存器< Rd > 中,同时根据操作的结果 ...
- 刘帅嵌入式系统-SUB减法指令
SUB指令从寄存器< Rn >中减去< shifter_operand > 表示的数值,并把结果保存到目标寄存器< Rd > 中,同时根据操作的结果更新CPSR中相 ...
- java蓝桥杯加法变乘法_蓝桥杯-加法变乘法-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- python中怎么用乘法_如何在python中乘法函数?
def sub3(n): return n - 3 def square(n): return n * n 在python中编写函数非常简单: >>> my_list [0, 1, ...
- c语言之无符号/有符号数加减法运算
c语言之无符号/有符号数加减法运算 转自:http://www.360doc.com/content/12/1129/15/1317564_250977880.shtml 1.加减运算指令是不区分有符 ...
- 焊接符号标注图解示例_【干货】焊接图纸符号汇总 ,学习收藏!!
基本坡口符号 坡口符号 (注:图中"破"应为"坡") 焊接图纸符号标注图解示例 焊接符号标注实例及方法 在焊接结构图样上,焊接方法可按国家标准GB5185-85 ...
最新文章
- Java管理Cookie增删改查操作
- HttpModule httpHandle 执行顺序
- 【报告分享】2021大社交趋势观察报告.pdf(附下载链接)
- javascript 经常会用到的东西
- mysql mvcc 并发update_关于mysql的InnoDB多版本并发控制(MVCC)与事务隔离级别的疑问?...
- Product Key Algorithm
- matlab rf建模实例,[程序源代码]MATLAB在射频电路设计中的应用
- android 项目交接文档,产品交付规范文档
- 串口服务器通讯协议,串口服务器的组成和应用实例
- 科来数据包生成器使用方法
- Idea 文件定位图标显示与关闭 -- idea ver:2020.1
- 如何在Chrome中自定义新标签页
- 日了。这个竟然还不让发
- 虾皮店铺优化有哪几个要点?
- IDEA: 全局搜索 、全局查找
- 腾讯6大核心业务打造坚固护城河
- k8s学习-CKA考试必过宝典
- Intel8086处理器使用NASM汇编语言实现操作系统08-关于负数的相关处理idiv/cbw/cwde/cdqu/cwd/cdq/cdo/
- 怎样的婚恋网站,才能符合单身的交友信息呢。
- 枚举类 Enum使用
热门文章
- OpenCV学习笔记(十七):查找并绘制轮廓:findContours(),drawContours(),approxPolyDP()
- OpenCV的数据类型——辅助对象
- Smarty模板技术学习
- Android之自定义属性
- ❤JavaScript系列6部曲:语法篇(万字长文)❤
- displaytag 相关
- 外设驱动库开发笔记13:MLX90614红外温度传感器驱动
- shiro的集群动态权限更新
- NSOperationQueue简介
- 高并发服务器开源项目,百万级高并发WebRTC流媒体服务器设计与开发(示例代码)...