龙芯软件开发 10 --龙芯2E指令

               
每个CPU都有自己独特的指令,比如X86结构的CPU有INTEL的指令系统,MIPS的CPU也有自己的指令系统,当然龙芯CPU也不例外,有自己的指令系统。指令是控制CPU怎么样工作的接口,每条指令都会让CPU做出响应的。如果发送一条不是CPU的指令,就会导致CPU非法执行,并且会引起CPU异常。龙芯里,每条指令都是固定长度:32位,4个字节。因此,任何指令段的代码长度,一定要是4字节的倍数,绝对不要出现不是4的倍数,否则就让CPU不能运行了。
 
从龙芯的使用手册中可以看到,每条 CPU 指令都是一条 32 位的指令字,这些指令都是字对齐的。指令集包含三种指令格式,如图 2-1 所示,立即数指令( I- 型),跳转指令( J- 型)和寄存器指令( J- 型)。使用简单几种指令格式可以简化指令译码,并且使得编译器根据这三种指令格式可以合成更多的复杂操作(使用频率较低)和访存模式。
 

 
op 6 位操作码
rs 5 位用于确定源操作寄存器的域
rt 5 位用于确定目标(源 / 目的)操作寄存器或跳转条件的域
immediate 16 位立即数
target 26 位跳转目标地址
rd 5 位用于确定目的操作寄存器的域
sa 5 位移位数
funct 6 位功能域
指令集可以更进一步分为以下几组:
• Load and Store 访存指令在主存和通用寄存器之间移动数据。访存指令都是立即数指令( I- 型),因为该指令模式所支持的唯一访存模式就是基址寄存器加上 16 位的对齐的偏移量。
• Computational 计算型指令完成寄存器值的算术,逻辑,移位,乘法和除法操作。计算型指令包含了寄存器指令格式( R- 型,操作数和运算结果均保存在寄存器中)和立即数指令格式( I- 型,其中一个操作数为一个 16 位的立即数)。龙芯 2E 微处理器还实现了自定义的乘法,除法和模操作指令,其方法是使用一个通用的目的寄存器来取代成

对出现的 hi 和 lo 寄存器。
• Jump and Branch 跳转和分支指令改变程序的控制流。绝对地址跳转被称为 “jump (跳转) ” ( J- 型或者 R- 型), PC (指令计数器)相关的跳转指令被称为 “branch (分支) ” ( I- 型)。跳转指令的返回地址保存在第 31 号寄存器中。
• Coprocessor 协处理器指令完成协处理器内部的操作。协处理器的访存操作是 I- 型指令。龙芯 2E 微处理器有两个协处理器: 0 号协处理器(系统处理器)和 1 号协处理器(浮点协处理器)。
0 号协处理器( CP0 )通过 CP0 的寄存器来管理内存和处理异常。这些指令列在表 3-9 中。
1 号协处理器( CP1 )指令包括浮点指令,多媒体指令,和龙芯扩展的定点计算指令。这些指令都是在浮点寄存器上操作。第八章将会对这些指令进行总结,附录将会对每条指令进行详细的描述。
• Special 特殊指令完成系统调用和断点操作。这些指令通常是 R- 型的。
• Exception 异常指令引起跳转,根据异常号比较结果跳转到通用异常处理向量。这些指令包括 R- 型和 I- 型指令格式。
表 2-1 到表 2-9 列出了除 1 号协处理器指令以外的所有指令。
表 2-1 CPU 指令集:访存指令
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
           
OpCode
           
           
Description
           
           
MIPS ISA
           
           
LB
           
           
取字节
           
           
I
           
           
LBU
           
           
取无符号字节
           
           
I
           
           
LH
           
           
取半字
           
           
I
           
           
LHU
           
           
取无符号半字
           
           
I
           
           
LW
           
           
取字
           
           
I
           
           
LWU
           
           
取无符号字
           
           
I
           
           
LWL
           
           
取字左部
           
           
I
           
           
LWR
           
           
取字右部
           
           
I
           
           
LD
           
           
取双字
           
           
III
           
           
LDL
           
           
取双字左部
           
           
III
           
           
LDR
           
           
取双字右部
           
           
III
           
           
LL
           
           
取标志处地址
           
           
I
           
           
LLD
           
           
取标志处双字地址
           
           
III
           
           
SB
           
           
存字节
           
           
I
           
           
SH
           
           
存半字
           
           
I
           
           
SW
           
           
存字
           
           
I
           
           
SWL
           
           
存字左部
           
           
I
           
           
SWR
           
           
存字右部
           
           
I
           
           
SD
           
           
存双字
           
           
III
           
 

 
                                                                                                                                                                                                                                                                           
           
SDL
           
           
存双字左部
           
           
III
           
           
SDR
           
           
存双字右部
           
           
III
           
           
SC
           
           
满足条件下存
           
           
I
           
           
SCD
           
           
满足条件下存双字
           
           
III
           
           
SYNC
           
           
同步
           
           
I
           
 
表 2-2 CPU 指令集:算术指令 (ALU 立即数 )
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
           
OpCode
           
           
Description
           
           
MIPS ISA
           
           
ADDI
           
           
加立即数
           
           
I
           
           
DADDI
           
           
加双字立即数
           
           
III
           
           
ADDIU
           
           
加无符号立即数
           
           
I
           
           
DADDIU
           
           
加无符号双字立即数
           
           
III
           
           
SLTI
           
           
d=((signed) s <(signed) j) ? 1:0 j 是立即数
           
           
I
           
           
SLTIU
           
           
d=((unsigned) s <(unsigned) j) ? 1:0 j 是立即数
           
           
I
           
           
ANDI
           
           
与立即数
           
           
I
           
           
ORI
           
           
或立即数
           
           
I
           
           
XORI
           
           
异或立即数
           
           
I
           
           
LUI
           
           
t=u<<16 u 是立即数
           
           
I
           
 
表 2-3 CPU 指令集:算术指令 (3 操作数 , R- 型 )
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
           
OpCode
           
           
Description
           
           
MIPS ISA
           
           
ADD
           
           
           
           
I
           
           
DADD
           
           
双字加
           
           
III
           
           
ADDU
           
           
无符号加
           
           
I
           
           
DADDU
           
           
无符号双字加
           
           
III
           
           
SUB
           
           
           
           
I
           
           
DSUB
           
           
双字减
           
           
III
           
           
SUBU
           
           
无符号减
           
           
I
           
           
DSUBU
           
           
无符号双字减
           
           
III
           
           
SLT
           
           
d=((signed) s <(signed) t) ? 1:0
           
           
I
           
           
SLTU
           
           
d=((unsigned) s <(unsigned) t) ? 1:0
           
           
I
           
           
AND
           
           
           
           
I
           
           
OR
           
           
           
           
I
           
           
XOR
           
           
异或
           
           
I
           
           
NOR
           
           
或非
           
           
I
           
 

 
表 2-4 CPU 指令集:乘法和除法指令
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
           
OpCode
           
           
Description
           
           
MIPS ISA
           
           
MULT
           
           
           
           
I
           
           
DMULT
           
           
双字乘
           
           
III
           
           
MULTU
           
           
无符号乘
           
           
I
           
           
DMULTU
           
           
无符号双字乘
           
           
III
           
           
DIV
           
           
           
           
I
           
           
DDIV
           
           
双字除
           
           
III
           
           
DIVU
           
           
无符号除
           
           
I
           
           
DDIVU
           
           
无符号双字除
           
           
III
           
           
MFHI
           
           
移整数乘法单元结果到通用目的寄存器
           
           
I
           
           
MTHI
           
           
移通用目的寄存器到整数乘法单元结果
           
           
I
           
           
MFLO
           
           
移整数除法单元结果到通用目的寄存器
           
           
I
           
           
MTLO
           
           
移通用目的寄存器到整数除法单元结果
           
           
I
           
           
MULTG
           
           
龙芯 2E 乘
           
           
GODSON2
           
           
DMULTG
           
           
龙芯 2E 双字乘
           
           
GODSON2
           
           
MULTUG
           
           
龙芯 2E 无符号乘
           
           
GODSON2
           
           
DMULTUG
           
           
龙芯 2E 无符号双字乘
           
           
GODSON2
           
           
DIVG
           
           
龙芯 2E 除
           
           
GODSON2
           
           
DDIVG
           
           
龙芯 2E 双字除
           
           
GODSON2
           
           
DIVUG
           
           
龙芯 2E 无符号除
           
           
GODSON2
           
           
DDIVUG
           
           
龙芯 2E 无符号双字除
           
           
GODSON2
           
           
MODG
           
           
龙芯 2E 求模
           
           
GODSON2
           
           
DMODG
           
           
龙芯 2E 双字求模
           
           
GODSON2
           
           
MODUG
           
           
龙芯 2E 无符号求模
           
           
GODSON2
           
           
DMODUG
           
           
龙芯 2E 无符号双字求模
           
           
GODSON2
           
 
表 2-5 CPU 指令集:跳转和分支指令
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
           
Opcode
           
           
Description
           
           
MIPS ISA
           
           
J
           
           
跳转
           
           
I
           
           
JAL
           
           
立即数调用子程序
           
           
I
           
           
JR
           
           
跳转到寄存器指向的指令
           
           
I
           
           
JALR
           
           
寄存器调用子程序
           
           
I
           
           
BEQ
           
           
相等则跳转
           
           
I
           
           
BNE
           
           
不等则跳转
           
           
I
           
           
BLEZ
           
           
小于等于 0 跳转
           
           
I
           
           
BGTZ
           
           
大于 0 跳转
           
           
I
           
           
BLTZ
           
           
小于 0 跳转
           
           
I
           
           
BGEZ
           
           
大于或等于 0 跳转
           
           
I
           
           
BLTZAL
           
           
小于 0 调用子程序
           
           
I
           
           
BGEZAL
           
           
大于或等于 0 调用子程序
           
           
I
           
 

 
                                                                           
           
BEQL
           
           
相等则 Likely 跳转
           
           
II
           
           
BNEL <

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值