- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
嵌入式系统概论—基于32位微处理器与实时操作系统第四讲ARM指令集与编程北京航空航天大学机器人研究所魏洪兴
指令集可以是以下任一种1bits长(ARM状态)2bits长(Thumb状态)3ARM7TDMI支持3种数据类型4字节(8-bit)5半字(16-bit)6字(32-bit)7字必须被排成4个字节边界对齐,半字必须被排列成2个字节边界对齐8指令长度
向后兼容:新版本增加指令,并保持指令向后兼容;Load-store结构*load/store–从存储器中读某个值,操作完后再将其放回存储器中只对存放在寄存器的数据进行处理;对于存储器中的数据,只能使用load/store指令进行存取ARM指令集的特点
指令格式指令格式指令格式3地址指令格式在ARM状态中使用例指令语法目标寄存器(Rd)源寄存器1(Rn)源寄存器2(Rm)ADDr3,r1,r2r3r1r2
数据处理指令–使用和改变寄存器的值1数据传送指令–把存储器的值拷贝到寄存器中(load)or把寄存器中的值拷贝到存储器中(store)2控制流指令分支分支和链接,保存返回的地址,以恢复最先的次序3软件中断指令4程序状态寄存器指令5协处理器指令6ARM指令分类
ARM指令编码格式说明Cond指令执行的条件编码Opcode指令操作符编码S决定指令的操作是否影响CPSR的值Rd操作目标寄存器编码Rn包含第一操作数的寄存器编码Shifter_operand表示第二操作数cond001opcodesRnRdShifter_operand31 28272524212019 16151211870
ARM指令集
数据处理指令的类别算术操作按位逻辑操作寄存器移位操作比较操作1操作数:32-bits宽;2有3种指定操作数的方式来自寄存器第二操作数可以是常数(立即数)移位寄存器操作数3结果:32-bits宽,放在寄存器中长乘法产生64位结果4数据处理指令-1
数据处理指令–2*移位寄存器长度cond00operand2#opcodeSRnRd312827262524212019161512110目的寄存器第一操作寄存器设置操作码算术/逻辑功能8-bit立即rotRshiftRm025118765430RsSh010Shimmediatealignmentimmediateshiftlengthshifttypesecondoperandregister
数据处理指令-3
数据处理指令-4ADDr0,r1,r2r0:=r1+r2ADCr0,r1,r2r0:=r1+r2+CSUBr0,r1,r2r0:=r1-r2SBCr0,r1,r2r0:=r1-r2+C-1RSBr0,r1,r2r0:=r2–r1RSCr0,r1,r2r0:=r2–r1+C-1算术操作按位逻辑操作ANDr0,r1,r2r0:=r1andr2ORRr0,r1,r2r0:=r1orr2EORr0,r1,r2r0:=r1xorr2BICr0,r1,r2r0:=r1and(not)r2寄存器移位MOVr0,r2r0:=r2MVNr0,r2r0:=notr2比较操作CMPr1,r2setcconr1-r2CMNr1,r2setcconr1+r2TSTr1,r2setcconr1andr2TEQr1,r2setcconr1xorr2
数据处理指令-MOVMOV指令是把一个数N送到目标寄存器中,N可以是寄存器,也可以是立即数。MOV指令语法:〈指令〉{〈cond}{S}Rd,N例:PREr0=5,r2=6MOVr0,r2POSTr0=6,r2=6MOVr0,r2r0:=r2MVNr0,r2r0:=notr2
桶形移位器桶形移位器Rd结果N预处理未预处理RmRn
01PREr0=8,r2=503POSTr0=20,r2=502MOVr0,r2,LSL#2(逻辑左移两位:r22=r5*4)桶形移位器的使用
移位操作数据处理指令在任何数据处理指令中,第二个寄存器操作数可以有应用该操作数的移位操作.LSL
文档评论(0)