arm 汇编指令中的 s 后缀如何工作?

how does s suffix in arm assembly instructions work?

我是汇编新手,想知道在arm汇编指令的操作码中添加的s后缀是如何工作的。我读过它用于根据操作结果更新条件标志。是否有根据操作结果更新条件标志的可能方法的摘要?基于结果的哪些属性,我应该更新哪个标志位?

我们以这条汇编代码指令为例 000080fa movs r1,#0

它在更新条件标志的上下文中究竟做了什么?

更新标志的方式因指令而异。但一般情况下,执行标志设置指令时会发生以下情况:

  • 如果结果为负(即设置符号位),则设置 N 标志
  • 如果结果为零,则设置 Z 标志
  • 根据第三个操作数移位的进位设置C标志位
  • V 标志不变

对于将第三个操作数移零或无法对移位进行编码的指令,进位标志也保持不变。对于作为加法变体的指令,C 和 V 标志将根据加法的进位和溢出设置。