SPARC V8指令集综述(二)

标签:
saprcv8架构嵌入式it |
分类: 架构论坛 |
4
SPARC V8 架构处理器具有精简的指令格式,SPARC V8中所有指令都是32位宽和以32为分界对齐排列的。只有3种基本指令格式,并且只有load和store指令访问memory和I/O,使得编程更简单、高效。
|
图1
由上图,我们可以知道,在SPARC V8指令集中,大部分指令的编码格式是第三种。其中,Op,op2,op3为操作码,Opf为浮点指令操作码,rs1,rs为通用寄存器地址(源操作数),rd为目的寄存器,例如:加法指令
ADD rs1 rs2 rd |
其中,Simm为扩展符号立即数;i=0,第二操作数在rs2中,i=1,第二操作数为Simm。disp: (displacement) 位移量,disp30:位移量30位。con: (condition) 条件码,为分支指令的条件选择。
5
寻址方式是根据指令编码中给出的地址码字段来寻找真实操作数的方式。SPARC V8架构支持的基本寻址方式很简单,其存储器地址的给出,要么"register+register",要么是"register+immediate"。主要的内存寻址方式有三种,它们分别是:立即寻址,寄存器寻址,寄存器间接寻址。所有的寻址方式都有一个共性,他们的有效地址能够在一个时钟周期内计算出来。下面将分别介绍每种寻址方式的具体用法。
1)立即寻址
立即寻址也称为立即数寻址,是一种特殊的寻址方式。操作数是直接通过指令给出,数据就包含在指令的32位编码中,只要取出指令就可在指令执行时得到立即操作数.例如下面的两条指令:
add %o1, 1,
%o1 and
%o2,0x0f,%o3 |
在这两条指令中,指令1是将寄存器%o1的内容加1,然后将结果放回%o1中,而指令2完成了将%o2的32位值与0x0F相’与’后,将结果送到%o3中去。但是要注意的是, 在SPARC V8体系中,只有第二个操作数才会用到立即寻址方式。
那么,SPARC V8处理器是如何识别立即数的呢,这要结合SPARC V8指令编码格式来说明了。我们先来看这条指令:
ADD rs1 rs2 rd |
在SPARC V8处理器中,Simm为扩展符号立即数;i=0,第二操作数在rs2中,i=1,第二操作数为Simm。在前面图1-1中的指令格式3中指出,“i”这一位起了决定性的作用。i 用于为(整数)算术运算和load/store指令选择第二个运算器操作数。如果 i = 0,操作数是寄存器r[rs2];如果 i = 1,操作数是有符号立即数simm13,符号扩展从 13-32 bit。
在SPARC V8体系中, 立即数的取值是有范围限制的。具体是依不同的指令类型而不同,并且用于不同的寻址模式中。例如:imm7的取值范围在 -64~127 之间的立即数(用7位表示,有符号或无符号),常用于(trap)跟踪类型指令的偏址寻址方式中。而simm13d的取值范围在-4096~4095之间的立即数(用13位表示,有符号),常用于算术运算指令或load/store指令的第二个运算器操作数。
2)寄存器寻址
SPARC V8指令集中除了立即数寻址外,还有一种常用的是寄存器直接寻址。寄存器寻址利用寄存器中的数值作为操作数,指令中地址码给出的是寄存器编号。例如:
Add %l0, %l1,
%l2 |
在这个指令中,执行的是将2个寄存器(%l0和 %l1 )的内容相加,然后将结果放入第3个寄存器%l2中。读者在编写指令的时候必须注意的是写操作数的顺序:第1个是第1寄存器,然后是第2操作数寄存器,最后才是结果寄存器。
3)寄存器间接寻址
SPARC V8指令集中第三种寻址方式就是寄存器间接寻址,这种寻址方式是利用一个寄存器的值,这个寄存器相当于指针的作用,在基址加变址的寻址方式中,它作为基址寄存器来存放基址地址,作为存储器地址,在指定的寄存器中存放有效地址,而操作数则放在存储单元中。这个寄存器用“[ ]”括起来,表示内容。那么这种寻址方式到底是如何来具体实现的呢?请看这两条指令:
ld st |
在这两条指令中, 第l条指今将寄存器%o2指向的地址存储器单元的内容加载到寄存器%f0中。然后使用第2条指令将寄存器%fsr的内容存储到寄存器%o0指向的地址存储单元中。
另外,前面已经提到,SPARC V8架构可以扩展它的寻址方式,因为它包含了一个伪寄存器%g0,其值总是0 ,这使得程序员要以索引方式定义绝对地址。索引方式计算地址是通过用户定义的地址与用户定义的寄存器的值相加。如果用户定义了寄存器%g0,由于其值为0,所以有效地址就是指令代码中的用户定义的绝对地址。(未完待续)
( 本文作者:龚永红,梅卫平,蒋晓华,唐芳福,颜军—— 欧比特(珠海)软件工程有限公司,广东 珠海 519080;黄琳——中山大学理工学院,广东广州510275)