PPC汇编中的跳转指令如下
这里,BI比较容易理解,CR寄存器每四位一组,分别表示LT(小于), GT(大于), EQ(等于),SO(溢出)。一般而言,使用溢出的情况较少,多的还是小于、大于与等于。整个CR寄存器分共有8组,所以我们可以按照如下的情况简单记忆:
n + 0 : <
n + 1 : >
n + 2 : ==
n + 3 : SO
如反汇编代码中经常出现的
真正难以记住的,反而是BO,如果反汇编没有使用助记的条件跳转指令,要想记住,需要进行总结。我把它们按照所处理的条件进行分组:
第一组:表示处理counter是否为0,共分为三种情况
0x00 ctr <> 0
0x02 ctr == 0
0x04 无所谓
第二组,表示条件(即CR中由BI指定的条件),一样分为三种情况
0x00 条件为false
0x08 条件为true
0x10 无所谓
这样,3*3的矩阵,就一共所以产生9种条件跳转,BO就是两组条件相加的值。
0x00(00) ctr <> 0 && false
0x02(02) ctr == 0 && false
0x04(04) false
0x08(08) ctr == 0 && true
0x0a(10) ctr == 0 && true
0x0c(12) true
0x10(16) ctr <> 0
0x12(18) ctr == 0
0x14(20) 无条件跳转
这样是不是就很好记忆了?
就是如果相等,则跳转到xxxx
阅读(2629) | 评论(0) | 转发(0) |