凌阳教育的个人空间 https://blog.eetop.cn/204849 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

ARM指令详细介绍

已有 570 次阅读| 2015-12-25 18:06 |个人分类:linux技术

ARM指令集总体分为以下6类:

数据处理指令;

程序状态寄存器与通用寄存器之间的传送指令;

Load/Store指令;

转移指令;

异常中断指令;

协处理器指令。

数据处理格式

ARM的数据处理指令主要完成寄存器中数据的算数和逻辑运算操作。ARM数据处理指令的基本原则为:

所有操作数都是32位宽,或来自寄存器,或在指令中定义的立即数。

如果数据操作有结果,则结果为32位宽,放在一个寄存器中(有一个例外——长乘指令产生64位的结果)。

ARM指令中使用“3地址模式”,即每一个操作数寄存器和和结果寄存器在指令中分别指定。

数据处理指令根据指令实现处理功能可分为以下6类:

数据传送指令;

算数运算指令;

逻辑运算指令;

比较指令;

测试指令;

二进制编码

5类指令编码格式如图。乘法指令与这5类指令编码不同,后面做详细介绍。

说明

ARM数据处理指令使用2个操作源和1个目的寄存器的“3个地址模式”。1个源操作数总是寄存器,第二个被称为“灵活的第2操作数operand2,它可以是寄存器、移位后的寄存器或立即数。如果第2操作数是寄存器是寄存器Rm,则其移位可能是逻辑移位、算数移位或循环移位;移位的位数可以是立即数,也可以是寄存器的内容。

当指令为仅需要一个源操作数的指令时,省略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访问凌阳教育官网

 

 

 

      

 


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 1

    获赞
  • 3

    评论
  • 3815

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-27 01:25 , Processed in 0.020529 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部