四、ARM指令集

四、ARM指令集

ID:44779715

大小:1.08 MB

页数:106页

时间:2019-10-28

四、ARM指令集_第1页
四、ARM指令集_第2页
四、ARM指令集_第3页
四、ARM指令集_第4页
四、ARM指令集_第5页
资源描述:

《四、ARM指令集》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、嵌入式系统设计与实例开发—基于32位微处理器与实时操作系统第四讲ARM指令集与编程主讲教师:罗子波副教授指令长度指令集可以是以下任一种32bits长(ARM状态)16bits长(Thumb状态)ARM7TDMI支持3种数据类型字节(8-bit)半字(16-bit)字(32-bit)字必须被排成4个字节边界对齐,半字必须被排列成2个字节边界对齐ARM指令集的特点向后兼容:新版本增加指令,并保持指令向后兼容;Load-store结构*load/store–从存储器中读某个值,操作完后再将其放回存储器中只对存放在寄存器的数据进行处理;对于存储器中的数据,只能使用load/store指令进行存取

2、指令格式指令格式3地址指令格式在ARM状态中使用例指令语法目标寄存器(Rd)源寄存器1(Rn)源寄存器2(Rm)ADDr3,r1,r2r3r1r2ARM指令分类数据处理指令–使用和改变寄存器的值数据传送指令–把存储器的值拷贝到寄存器中(load)or把寄存器中的值拷贝到存储器中(store)控制流指令分支分支和链接,保存返回的地址,以恢复最先的次序软件中断指令程序状态寄存器指令协处理器指令ARM指令编码格式说明Cond指令执行的条件编码Opcode指令操作符编码S决定指令的操作是否影响CPSR的值Rd操作目标寄存器编码Rn包含第一操作数的寄存器编码Shifter_operand表示第二操

3、作数cond001opcodesRnRdShifter_operand312827252421201916151211870ARM指令集数据处理指令-1数据处理指令的类别算术操作按位逻辑操作寄存器移位操作比较操作操作数:32-bits宽;有3种指定操作数的方式来自寄存器第二操作数可以是常数(立即数)移位寄存器操作数结果:32-bits宽,放在寄存器中长乘法产生64位结果数据处理指令–2*cond00operand2#opcodeSRnRd312827262524212019161512110目的寄存器第一操作寄存器设置操作码算术/逻辑功能8-bit立即数12511870#rotRm117

4、65430#shiftRm025118765430RsSh010Shimmediatealignmentimmediateshiftlengthshifttypesecondoperandregister移位寄存器长度数据处理指令-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,r

5、2r0:=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

6、,r2r0:=r2MVNr0,r2r0:=notr2桶形移位器ALU桶形移位器Rd结果N预处理未预处理RmRn桶形移位器的使用PREr0=8,r2=5MOVr0,r2,LSL#2(逻辑左移两位:r2<<2=r5*4)POSTr0=20,r2=5数据处理指令移位操作在任何数据处理指令中,第二个寄存器操作数可以有应用该操作数的移位操作.逻辑移位LSL:逻辑左移字的最小位空位清零LSR:逻辑右移字的最大位空位清零.桶形移位器操作LSL:逻辑左移(LogicalShiftLeft)。寄存器中字的低端空出的位补0。LSR:逻辑右移(LogicalShiftRight)。寄存器中字的高端空出的位补0

7、。ASR:算术右移(ArithmeticShiftRight)。算术移位的对象是带符号数,在移位过程中必须保持操作数的符号不变。若源操作数为正数,则字的高端空出的位补0。若源操作数为负数,则字的高端空出的位补1。ROR:循环右移(RotateRight)。从字的最低端移出的位填入字的高端空出的位。RRX:扩展为1的循环右移(RotateRightExtendedby1place)。操作数右移一位,空位(位[31])用原C标志填充。数

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。