第3章 ARM指令集第5课Word文档下载推荐.docx
- 文档编号:21375406
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:10
- 大小:369.41KB
第3章 ARM指令集第5课Word文档下载推荐.docx
《第3章 ARM指令集第5课Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第3章 ARM指令集第5课Word文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。
语法格式及伪码:
使用:
用于提取寄存器内容的某些位(用一个掩码和寄存器中值做与操作,掩码中对应寄存器中要提取的位设为1,其余位设置为0)。
c-2.ORR
将两个源操作数按位作逻辑或操作,将结果保存到目标寄存器中,可能会更新条件标志位。
用于将寄存器中的某些位设置为1(设计一个掩码和寄存器做或操作,掩码中对应寄存器中欲设置的位置为1,其余设置为0)。
举例(将R2的高8位传送到R3的低8位)
c-3.EOR
将两个源操作数按位作逻辑异或操作,将结果保存到目标寄存器中,可能会更新条件标志位。
用于将寄存器中某些位取反(将掩码中对应于寄存器要取反的位设置为1,其余设置为0)。
d.比较指令
d-1.CMP
将两个源操作数相减,并更新条件标志位(后续指令可根据条件标志位决定是否被执行)。
不保存操作结果,只用来修改条件标志位。
d-2.CMN
将两个源操作数相加,并更新条件标志位(后续指令可根据条件标志位决定是否被执行)。
当OP2=0或0x80000000(负零)时,CMP和CMN的操作结果不同。
e.测试指令
e-1.TST
将两个操作数按位做逻辑与操作,根据结果更新条件标志位(和比较指令一样只能修改,结果被丢弃)。
用于测试寄存器中某个/些位是1还是0(测试多个位时,可以一个一个测试;
测试是利用“Z”条件标志位的取值来实现的)。
e-2.TEQ
将两个操作数按位做逻辑异或操作,根据结果更新条件标志位(和比较指令一样只能修改,结果被丢弃)。
用于比较两个操作数是否相同(利用“Z”实现)或两个操作数的符号是否相同(利用“N”实现)。
f.乘法指令
ARM有两类乘法指令:
1.32位的乘法指令;
2.64位的乘法指令。
细分下来共有6条指令:
f-1.MUL
实现两个32位数(有符号/无符号均可)的乘积,将结果放入一个32位寄存器中,可以更新条件标志位。
只保存结果的低32位,对于有/无符号数而言执行结果相同;
对于ARMv5版本及以上,指令不影响C位(以前版本中指令执行后C值不确定);
Rm、Rs和Rd为R15时指令的执行结果不可预测(不能使用R15)。
f-2.MLA
实现两个32位数(有符号/无符号均可)的乘积,再加上第三个操作数,将结果放入一个32位寄存器中,可以更新条件标志位。
同MUL(MLAR0,R1,R2,R3)。
f-3.SMULL
实现两个32位有符号数的乘积,64位的结果存放在两个寄存器中,可能修改条件标志位。
Rm、Rs和RdHi/RdLo为R15时指令的执行结果不可预测(不能使用R15)。
//SMULLR1,R2,R3,R4R2=(R3×
R4)[63:
32],R1=(R3×
R4)[31:
0]
f-4.SMLAL
实现两个32位有符号数的乘积,并与目的寄存器中的值相加,64位的结果存放在目的寄存器中,可能修改条件标志位。
同SMULL。
f-5.UMULL
实现两个32位无符号数的乘积,64位的结果存放在两个寄存器中,可能修改条件标志位。
f-6.UMLAL
实现两个32位无符号数的乘积,并与目的寄存器中的值相加,64位的结果存放在目的寄存器中,可能修改条件标志位。
g.其它----位清除指令(BIC)
将寄存器的值和OP2的反码做逻辑与操作,将结果保存到Rd,可能更新条件标志位。
用于将寄存器中某些位设置为0(将掩码中对应位的值设置为1)。
h.补充----前导0个数计数指令(CLZ)
用于计算操作数最高端0的个数(ARMv5及以上版本包含)。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 ARM指令集第5课 ARM 指令
![提示](https://static.bdocx.com/images/bang_tan.gif)