Chinaunix首页 | 论坛 | 博客
  • 博客访问: 508395
  • 博文数量: 118
  • 博客积分: 2575
  • 博客等级: 大尉
  • 技术积分: 1263
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-27 09:37
文章分类

全部博文(118)

文章存档

2017年(11)

2016年(8)

2015年(1)

2014年(9)

2013年(7)

2012年(38)

2011年(14)

2010年(18)

2009年(12)

分类: 系统运维

2012-07-11 09:01:24

PPC汇编中的跳转指令如下
bc BO, BI, target
这里,BI比较容易理解,CR寄存器每四位一组,分别表示LT(小于), GT(大于), EQ(等于),SO(溢出)。一般而言,使用溢出的情况较少,多的还是小于、大于与等于。整个CR寄存器分共有8组,所以我们可以按照如下的情况简单记忆:
n + 0 : <
n + 1 : >
n + 2 : ==
n + 3 : SO
如反汇编代码中经常出现的
bc 6, 2, xxxx
就是表示要对是否相等进行判断。

真正难以记住的,反而是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) 无条件跳转
这样是不是就很好记忆了?
bc 12, 2, xxxx
就是如果相等,则跳转到xxxx



阅读(2574) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~