ARM中的CMP和TST指令之间有什么区别?

时间:2019-01-10 15:13:20

标签: assembly arm

我在理解ARM中这两条指令之间的区别时遇到了麻烦。据我了解,

@await Component.InvokeAsync("CustomCss")

将执行操作R1-R2,但不存储结果。然后它将在状态寄存器中设置标志,例如N(如果为R1,则为负)

我没有得到的是TST所做的不同。在我的笔记中,它表示TST不会更改其操作数的值..但我认为CMP也不会更改。两种说明有何不同?

怎么样

CMP R1, R2

不同
CMP R1, R2

?预先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

ccflags-y += $(FOO_CFLAGS) 计算TST R1, R2R1的按位与,然后丢弃结果,而R2将两者相减。 CMP R1, R2在ARM上主要用于确定给定的位是否设置为数字。例如,要检查TST是否为奇数,可以执行以下操作:

R1

如果TST R1, #1 @ is R1 odd? 为奇数,这会将Z标志设置为1。