每个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 --龙芯2E指令相关推荐

  1. 龙芯软件开发(10)--龙芯2E指令

    每个CPU都有自己独特的指令,比如X86结构的CPU有INTEL的指令系统,MIPS的CPU也有自己的指令系统,当然龙芯CPU也不例外,有自己的指令系统.指令是控制CPU怎么样工作的接口,每条指令都会 ...

  2. python编程遵循哪些规律_编程语言软件开发10个小技巧,Java、python、前端等都遵循此规律,108G资料放送中!...

    随着互联网日趋迅猛,编程已经在我们生活当中无处不在了. 众所周知,程序员的工资都很不错,于是越来越多的人,都想加入到开发的行业中来. 那么,开发到底难不难学? 其实,每一门程序语言都是一个微型的完整的 ...

  3. 龙芯软件开发(6)--CPU龙芯2E

    在开发软件中,对于CPU的了解就是最重要的了.无论什么指令都需要CPU来执行.现在就来看看龙芯2E的具有什么特征了. 龙芯2号增强型处理器(简称"龙芯2E")是中国科学院计算技术研 ...

  4. 龙芯软件开发(26)-- PCI设备初始化4

    继续来分析PCI设备的搜索过程,下面就是通过调用搜索程序来实现的. for(i = 0, pb = _pci_head; i < pci_roots; i++, pb = pb->next ...

  5. 龙芯软件开发(5)--北桥南桥芯片的作用

    北桥是基于Intel处理器的个人电脑主板芯片组两枚芯片中中的一枚.北桥设计用来处理高速信号,通常处理CPU,RAM,AGP端口或PCI Express,还有南桥之间的通信. 北桥芯片(North Br ...

  6. 龙芯1c300b开发语言,龙芯 1C0300B 主控芯片已成功进入激光打印机市场

    8 月 7 日消息,近日龙芯官方宣布龙芯 1C0300B 作为主控芯片,已经批量用于天津光电出品的多款激光打印机中,在打印扫描.通信控制.协议解析方面发挥着重要的作用.通过对数据传输和处理的管控,以及 ...

  7. 龙芯linux开发板,龙芯1B开发板移植SQLite 3.6.20

    附注:在sqlite 版本为大于3.6.20无需参考本博客 目标平台:loongson 1B 目标开发板架构:mipsel架构 编译平台:Ubuntu13.04 交叉工具链:gcc-4.3-ls232 ...

  8. 龙芯linux开发板,龙芯1b开发板环境及系统搭建

    建立交叉编译环境 交叉编译工具包:gcc-4.3-ls232-softfloat.tar.gz 1.解压到/opt文件夹 sudo tar zxvf gcc-4.3-ls232-softfloat.t ...

  9. 做软件开发10年了,我准备转行了,做自媒体

    文|洪生鹏 编辑|静子 微信公众号:洪生鹏 最近读了<能力陷阱>这本书后,感触很多. 一般来说,做人,最重要的是要有自知之明,量力而行,量体裁衣,明白自己该做什么,能做什么,该如何做.然后 ...

最新文章

  1. mysql获取多层嵌套json_使用两个mySQL查询来创建嵌套的JSON数组
  2. 【沟通之道】头脑风暴-女人的心思你别猜
  3. 图像处理理论(八)——Meanshift, Camshift, Optical flow
  4. 重磅来袭 | 移动云城市峰会分论坛暨移动云TeaTalk青岛站 即将开启
  5. ControllerContext分析
  6. jsTree工作笔记001---jsTree的基本使用_js实现树形结构
  7. 第3章 面向对象 (上)
  8. 数据挖掘二手车价格预测 Task05:模型融合
  9. 秩为1的矩阵的性质总结
  10. 2022年最全Java面试题库基础篇
  11. BLDC (无刷直流电机) 六步式控制方法
  12. vnr光学识别怎么打开_物流仓库安防监控系统安装的作用和功能
  13. 【转载】机器指令计算机
  14. ios 开发 怎样在项目中使用除系统外的字体
  15. 玩转Linux与运维岗(23)
  16. GSK消费保健品推出首款碳中和牙刷;雀巢“可持续发展列车”驶入瑞士驻华大使馆 | 知消...
  17. 笔记本屏幕 亮度 背光调节 工具 c++ 用来解决亮度调节功能键失效问题
  18. 浅谈CSS background参数 属性。
  19. 工作站和台式机的区别是什么
  20. 【专题】用ST表解决RMQ刷题总结

热门文章

  1. 数据库里面date类型时间有时差,时区问题
  2. 多种乡村体验游盈利方式,助你撬动上千亿乡村旅游市场!
  3. 计算机的组成:硬件和软件
  4. 通用mapper——自定义搭配继承Mapper
  5. [洛谷P4233]射命丸文的笔记
  6. 安卓玩机搞机技巧综合资源-----卸载内置软件 获取root权限 刷写第三方ROM【六】
  7. 给你一本武林秘籍,和KeeWiDB一起登顶高性能
  8. 实用糖尿病学读书笔记-第28章-糖尿病患者的教育
  9. EF Core 5.0原生sql语句执行
  10. 用C#简单实现迷你理财工具