我在理解ARM中这两条指令之间的区别时遇到了麻烦。据我了解,
@await Component.InvokeAsync("CustomCss")
将执行操作R1-R2,但不存储结果。然后它将在状态寄存器中设置标志,例如N(如果为R1,则为负)
我没有得到的是TST所做的不同。在我的笔记中,它表示TST不会更改其操作数的值..但我认为CMP也不会更改。两种说明有何不同?
怎么样
CMP R1, R2
与
不同CMP R1, R2
?预先感谢您的帮助!
答案 0 :(得分:1)
ccflags-y += $(FOO_CFLAGS)
计算TST R1, R2
和R1
的按位与,然后丢弃结果,而R2
将两者相减。 CMP R1, R2
在ARM上主要用于确定给定的位是否设置为数字。例如,要检查TST
是否为奇数,可以执行以下操作:
R1
如果TST R1, #1 @ is R1 odd?
为奇数,这会将Z标志设置为1。