arm 汇编指令中的 s 后缀如何工作?
how does s suffix in arm assembly instructions work?
我是汇编新手,想知道在arm汇编指令的操作码中添加的s后缀是如何工作的。我读过它用于根据操作结果更新条件标志。是否有根据操作结果更新条件标志的可能方法的摘要?基于结果的哪些属性,我应该更新哪个标志位?
我们以这条汇编代码指令为例
000080fa movs r1,#0
它在更新条件标志的上下文中究竟做了什么?
更新标志的方式因指令而异。但一般情况下,执行标志设置指令时会发生以下情况:
- 如果结果为负(即设置符号位),则设置 N 标志
- 如果结果为零,则设置 Z 标志
- 根据第三个操作数移位的进位设置C标志位
- V 标志不变
对于将第三个操作数移零或无法对移位进行编码的指令,进位标志也保持不变。对于作为加法变体的指令,C 和 V 标志将根据加法的进位和溢出设置。
我是汇编新手,想知道在arm汇编指令的操作码中添加的s后缀是如何工作的。我读过它用于根据操作结果更新条件标志。是否有根据操作结果更新条件标志的可能方法的摘要?基于结果的哪些属性,我应该更新哪个标志位?
我们以这条汇编代码指令为例 000080fa movs r1,#0
它在更新条件标志的上下文中究竟做了什么?
更新标志的方式因指令而异。但一般情况下,执行标志设置指令时会发生以下情况:
- 如果结果为负(即设置符号位),则设置 N 标志
- 如果结果为零,则设置 Z 标志
- 根据第三个操作数移位的进位设置C标志位
- V 标志不变
对于将第三个操作数移零或无法对移位进行编码的指令,进位标志也保持不变。对于作为加法变体的指令,C 和 V 标志将根据加法的进位和溢出设置。