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

全部博文(65)

文章存档

2014年(7)

2012年(20)

2011年(35)

2010年(3)

分类: 嵌入式

2012-05-20 15:06:08

7 M-Form类指令

M-Form类指令的主要作用是对选定的字段进行循环左移并做一些相应的掩码操作。该类指令是PowerPC指令集的精华,包含了一组非常强大的指令集。

在这类指令中,rlwimi指令最为常用,该指令格式如下所示:

 

0~5

6~10

11~15

16~20

21~25

26~30

31

OPCD

RS

RA

SH

MB

ME

Rc

 

该指令的使用格式是:“rlwimi RARSSHMBME”,功能描述如下:

         n       <  SH

         r        <  ROTL32((RS32:63n

         m      <  MASKMB+32ME+32

         RA    <  r & m | RA & ~m

该段代码的详解如下:

l  rlwimi指令首先将存放在RS寄存器中的数据循环左移SH位,并将此结果赋予r

l  之后使用MASK函数计算掩码mMASKMB+32ME+32)表示将一个数据的32~63位中的第MB+32~ME+32字段置1,其他字段置0,然后再将此数值赋予m

l  如果ME的数值小于MB,则将第ME+32MB+32之间的字段置0(不包括ME+32MB+32位),其他字段置1。最后将r & m | RA & ~m的结果赋予RA

ME大于或者等于MB时,rlwimi指令的执行流程,即将RS寄存器中的阴影部分平移到RA寄存器中,RA寄存器不在阴影部分的字段保持不变。 

M-Form类指令还包含另一条重要的指令rlwimn。其指令格式,使用方法与rlwimi指令完全相同。这两条指令的主要区别在于指令运行结束后对RA寄存器的赋值不同。

rlwimn指令最后将RA寄存器赋值为r & m而不是r & m | RA & ~m 。该指令的主要作用是提取RS寄存器中的某些字段,然后将这一字段方法RA寄存器中的某个位置中。

M-Form类指令还包含一条指令rlwnm,该指令与rlwinm指令的区别自爱与该指令将左移位数保存在寄存器RB中而不是立即数SH中。

PowerPC体系结构中还定义了对双字进行操作的MD-FormMDS-Form类指令,但是这类指令没有在E500内核中实现。

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