单步的时候遇到TST总是忘记是什么意思,在这里详细记录一下。
TST W0, #1:
如果W0.bit_1 == 1,则将CPRF寄存器的Zero=0;否则W0.bit_1 == 0,Zero=1。
TST通常会配合B.EQ,CSEL指令一起使用,例如
TST W0, #1 + B.EQ LABEL:如果W0.bit_1 == 0 -> Z == 1 -> EQ -> 跳转到LABEL
TST W0, #1 + B.NE LABLE:如果W0.bit_1 == 1 -> Z == 0 -> NE -> 跳转到LABEL
TST W0, #1 + CSEL W0, W1, W2, EQ:W0.bit_1 == 0 ? W0 = W1 : W0 = W2
TST W0, #1 + CSEL W0, W1, W2, NE:W0.bit_1 == 1 ? W0 = W1 : W0 = W2
需要注意的是,bit_1,也就是第一位。没有第0位。上面的TST,可以同来判断W0的奇偶性。
TBZ W0, #0x80, LABEL:如果W0的第8位是0,跳转到LABEL
TBNZ X0, #0x80, LABEL:如果X0的第8位是1,跳转到LABEL
最后
以上就是欣喜斑马最近收集整理的关于ARM汇编 常见条件判断对应NZCV标识 以及 TST / TBZ / TBNZ 指令的全部内容,更多相关ARM汇编内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复