| |
ARM指令集总体分为以下6类:
数据处理指令;
程序状态寄存器与通用寄存器之间的传送指令;
Load/Store指令;
转移指令;
异常中断指令;
协处理器指令。
数据处理格式
ARM的数据处理指令主要完成寄存器中数据的算数和逻辑运算操作。ARM数据处理指令的基本原则为:
所有操作数都是32位宽,或来自寄存器,或在指令中定义的立即数。
如果数据操作有结果,则结果为32位宽,放在一个寄存器中(有一个例外——长乘指令产生64位的结果)。
ARM指令中使用“3地址模式”,即每一个操作数寄存器和和结果寄存器在指令中分别指定。
数据处理指令根据指令实现处理功能可分为以下6类:
数据传送指令;
算数运算指令;
逻辑运算指令;
比较指令;
测试指令;
二进制编码
前5类指令编码格式如图。乘法指令与这5类指令编码不同,后面做详细介绍。
说明
ARM数据处理指令使用2个操作源和1个目的寄存器的“3个地址模式”。1个源操作数总是寄存器,第二个被称为“灵活的第2操作数operand
当指令为仅需要一个源操作数的指令时,省略Rn;当指令为仅产生条件码输出的比较测试指令时,省略Rd。这些指令中不需要全部的可用操作数,这种不用的寄存器在寄存器在二进制编码中的寄存器域中应该设置为0.
通过设置S位,直接控制这些指令的执行是否影响处理器的条件码。当S位为0时,条件码不改变;当S位置位时;
如果结果为负,则N标志位置1;否则清0(也就是说,N等于结果的31位)。
如果结果为0,则Z标志位置位1;否则清0.
当操作定义为算数操作时,C标志位设置为ALU的进位输出;都则设置为移位器的进位输出。如果不需要移位,则C保持不变。
在非算数的操作中,V标志位保持原值。在算数操作中,如果有从30位到31位的溢出,则置1;不发生溢出,则清0.
凌阳教育,专注嵌入式人才培养多年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。想了解凌阳教育,或者获得更多嵌入式学习资料的免费下载,请点击www.sunplusedu.com访问凌阳教育官网