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

全部博文(65)

文章存档

2014年(7)

2012年(20)

2011年(35)

2010年(3)

分类: 嵌入式

2012-05-19 21:09:34

    5 XER寄存器

XER寄存器存放整数运算操作的进位、溢出信息以及特殊的加载和存储指令,lswxstswx指令中传输的字节数。XER寄存器共有3个有效位和一个有效字段,分别为SOSummary Overflow,第32位),OVOverflow,第33位),CACarry,第34位)和No. of Bytes字段(第57~63位)。

其中,SO位为1表示某条算术运算指令曾经将OV位置1CR寄存器中的SO位就是复制了XER寄存器的SO位,SO位一旦被设置为有效,将不会被清除,直到程序使用mtspr或者mcrxr指令进行清除。

OV位为1表示有符号数的算术运算出现溢出。PowerPC处理器使用补码表示有符号数,并且使用双符号位(对应PowerPC处理器Carry out3233位)表示算术运算的结果是正数还是负数。如果双符号位为00表示算术运算的结果是正数;为11表示算术运算的结果是负数;01表示算术运算的结果出现正溢出;10表示算术运算的结果出现负溢出。当计算结果出现正溢出或负溢出时,OV位被置1;如果计算结果没有出现溢出,OV位被置0

CA位为1(即Carry out32位为1)表示无符号算术运算产生了进位。

Note:进位与溢出是完全不同的概念。进位标志表示无符号数的运算结果超出了范围,但是运算结果依然正确;而溢出标志表示有符号数的运算结果超出了范围,运算结果已经不正确了。具体地说,如果参加算术运算的操作数是无符号数,程序员应该关心进位位;如果参加算术运算的操作数是有符号数,程序员应该关心溢出位。

No. of Byte字段用来存放lswxstswx指令中传送的字节数。

6 ACC寄存器

该寄存器是一个4位寄存器,用来保存E500内核SPE指令的乘加指令MACMultiply Accumulate)的计算结果。

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