我无法理解 ARM 中这两条指令之间的区别。据我了解,
CMP R1, R2
Run Code Online (Sandbox Code Playgroud)
将执行操作 R1-R2,但不存储结果。然后它会在状态寄存器中设置标志,例如 N(负,如果 R1
我不明白的是 TST 的做法有所不同。在我的笔记中,它说 TST 不会改变其操作数的值......但我认为 CMP 也没有。这两个指令有何不同?
怎么
CMP R1, R2
Run Code Online (Sandbox Code Playgroud)
不同于
TST R1, R2
Run Code Online (Sandbox Code Playgroud)
? 在此先感谢您的帮助!
TST R1, R2计算的位与R1和R2,然后丢弃的结果,而CMP R1, R2减去两个。 TST主要在 ARM 上用于确定给定位是否设置在数字中。例如,要检查是否R1为奇数,您可以执行以下操作:
TST R1, #1 @ is R1 odd?
Run Code Online (Sandbox Code Playgroud)
如果R1是奇数,则将 Z 标志设置为 0 。
| 归档时间: |
|
| 查看次数: |
7747 次 |
| 最近记录: |