查看: 64|回复: 0

ARM CortexM 系列处理器汇编指令执行条件梳理

[复制链接]

10

主题

20

帖子

95

积分

注册会员

Rank: 2

积分
95
发表于 2024-11-9 20:33:38 | 显示全部楼层 |阅读模式
本帖最后由 andeyqi 于 2024-11-17 21:15 编辑

简介:
      工作中我们有时会查看反汇编代码,查看代码时经常会看到指令后面回带着EQ/NE,CS/HS,MI/PL 等后缀,这些后缀通常在跳转指令的后面,对应这些后缀的条件说明如下。  



这些跳转指令会根据执行指令时的NZCV状态寄存器的状态来作为条件判定的依据,对应的条件和NZCV状态位的关系上表已有对应关系。
这些跳转后缀的指令通常配合CMP,或者 带S 的指令更新APSR 的NZCV 标志来执行条件跳转。以下是CMP 和 带S条件更新的指令说明。

以下是带S指令的条件跳转。

其中16552 行加载数据16553计算更新NZCV标志,16554行判断条件为负数跳转跟if(!(flags & LEFT)) 代码也是吻合的。
以上16622 行回使用cmp 质量更新NZCV 标志,然后执行条件指令。
其他使用场景也是跟上述类似,先更新NZCV 标志,然后更具更新的状态执行条件跳转。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

用户排行榜

RA助手

主题: 116帖子:134精华:0

RA_Lance

主题: 93帖子:136精华:9

lugl

主题: 52帖子:150精华:1

xujiwei263

主题: 18帖子:86精华:0

Juggernaut

主题: 12帖子:118精华:0

books咦

主题: 11帖子:11精华:2
快速回复 返回顶部 返回列表