Chinaunix首页 | 论坛 | 博客
  • 博客访问: 580091
  • 博文数量: 65
  • 博客积分: 2844
  • 博客等级: 上尉
  • 技术积分: 996
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-02 12:01
文章分类

全部博文(65)

文章存档

2014年(7)

2012年(20)

2011年(35)

2010年(3)

分类: 嵌入式

2012-05-20 14:39:03

E500内核的指令长度都是32位。E500内核的指令采用大端编码方式,指令的第0位是MSBMost Significant Bit),第31位是LSBLeast Significant Bit)。

E500内核中,指令的高6位字段(第0~5位)被称为OPCD字段。根据OPCD字段的不同,PowerPC的指令集可以分为以下几大类。

1 I-Form类指令

E500内核中,无条件转移指令使用这个指令格式。I-Form类指令格式如下所示:

 

0~5

6~29

30

31

OPCD

LI

AA

LK

 

I-Form类指令共包含以下几种指令:

l  b       LI      // AA=0LK=0

l  ba     LI      // AA=1LK=0

l  bl      LI      // AA=0LK=1

l  bla    LI      // AA=1LK=1

这类指令格式支持AA位和LK位。

AA位用来表示当前跳转指令使用绝对地址还是相对地址进行跳转。该位为0表示LI中存放的是相对地址(该相对地址是有符号整数,用户分析机器码时需要注意),即将要跳转的指令地址是当前指令地址与LI*4的和;为1表示LI中存放的是绝对地址,即将要跳转的指令是LI*4AA位为1的无条件转移指令很少被用户使用。

LK位用来表示指令执行后是否修改LR寄存器。LK1时,表示转移指令执行后将当前指令的下一条指令的地址存放在LR寄存器中,如果LK0时,LR寄存器将不会被修改。

在汇编语言中,bl指令使用最多。bl指令可用作函数的调用指令,还可以用来获得下一条指令的有效地址。

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