第3章ARM指令集第5课.docx

上传人:b****5 文档编号:11570514 上传时间:2023-03-19 格式:DOCX 页数:10 大小:369.43KB
下载 相关 举报
第3章ARM指令集第5课.docx_第1页
第1页 / 共10页
第3章ARM指令集第5课.docx_第2页
第2页 / 共10页
第3章ARM指令集第5课.docx_第3页
第3页 / 共10页
第3章ARM指令集第5课.docx_第4页
第4页 / 共10页
第3章ARM指令集第5课.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

第3章ARM指令集第5课.docx

《第3章ARM指令集第5课.docx》由会员分享,可在线阅读,更多相关《第3章ARM指令集第5课.docx(10页珍藏版)》请在冰豆网上搜索。

第3章ARM指令集第5课.docx

第3章ARM指令集第5课

c.逻辑运算指令

c-1.AND

·功能:

将两个源操作数按位作逻辑与操作,将结果保存到目标寄存器中,可能会更新条件标志位。

·语法格式及伪码:

·使用:

用于提取寄存器内容的某些位(用一个掩码和寄存器中值做与操作,掩码中对应寄存器中要提取的位设为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位的结果存放在两个寄存器中,可能修改条件标志位。

·语法格式及伪码:

·使用:

对于ARMv5版本及以上,指令不影响C位(以前版本中指令执行后C值不确定);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位的结果存放在两个寄存器中,可能修改条件标志位。

·语法格式及伪码:

·使用:

同SMULL。

f-6.UMLAL

·功能:

实现两个32位无符号数的乘积,并与目的寄存器中的值相加,64位的结果存放在目的寄存器中,可能修改条件标志位。

·语法格式及伪码:

·使用:

同SMULL。

g.其它----位清除指令(BIC)

·功能:

将寄存器的值和OP2的反码做逻辑与操作,将结果保存到Rd,可能更新条件标志位。

·语法格式及伪码:

·使用:

用于将寄存器中某些位设置为0(将掩码中对应位的值设置为1)。

h.补充----前导0个数计数指令(CLZ)

·功能:

用于计算操作数最高端0的个数(ARMv5及以上版本包含)。

·语法格式及伪码:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1