分类: 嵌入式
2012-05-20 14:54:04
E500内核中X-Form类指令的数量最多。D-Form类指令和DS-From类指令中的每一条指令对应一条在X-Form类指令中的指令。除此之外,X-Form类指令还有一些专用的指令。X-Form类指令格式如下:
0~5 |
6~10 |
11~15 |
16~20 |
21~30 |
31 |
OPCD |
RS/RT |
RA |
RB |
XO |
Rc |
RB和RS字段存放源操作数寄存器的索引,RT字段存放目的操作数的索引,而RA字段既可以存放源操作数寄存器的索引,也可以存放目的操作数寄存器的索引。XO字段存放X-Form类指令扩展的IPCD。Rc字段为1表示当前指令的运行结果将改变CR寄存器,具有“.”后缀的指令其Rc位为1。
X-Form类的典型指令如下:
(1)存储器访问指令。如lbzx,lhzx,lhax,stbx,sthx,stwx,lbzux,lhzux,lwzux,stbux,sthux,stwux等。
(2)字节序列交换指令。lhbrx,lwbrx,sthbrx,stwbrx指令。这一类指令主要作用是调整字节序列。如“lhbrx RT,RA,RB”指令是将RA+RB地址存放的16位数据的高8位和低8位进行交换,然后将结果存放入RT寄存器中。
(3)字符串操作指令。lswi,lswx,stswi和stswx指令。使用此类指令时需要注意,这些指令将隐士的使用一些连续的通用寄存器资源。
(4)比较类和Trap指令。如cmp,cmpl,tw指令。这些指令与D-Form类的同类指令对应。
(5)逻辑算术运算指令。and,or,xor,nand,nor,eqv等等。这些指令与D-Form类的同类指令对应。
(6)“cntlzw RA,RS”指令。该指令用来找出RS寄存器中第一个不是0的位,然后将此位的位序存入RA中。该指令可以用来实现LOG2N运算。
(7)“popcntb RA,RS”指令。该指令计算RS寄存器中存放的8个字节中每一个字节里有多少个去,并将相应的结果存放在RA的对应字节中。E500内核不支持该指令。
(8)移位类指令。如sld,slw指令等。注意D-Form类没有移位类指令。