1.这篇还是稍微介绍一下cpu相关的寄存器。

手册里面说到的寄存器分两种,一种是cpu使用的(汇编中用来存放数据的),另一种是外部设备寄存器(一般用于配置功能,或者读写外部设备数据用的。),在手册中都叫寄存器,但是两种有较大区别,这里要讲的是cpu使用的寄存器,他们的作用相当于你吃饭的筷子和碗,没得筷子和碗,你就没法吃饭。cpu也是,没得寄存器,没法计算和运行啦。

2.龙芯寄存器,这是定点数寄存器,共32个,每个64位,而且有一些有特定功能。

REGISTER

NAME

USAGE

$0

$zero

常量0(constant value 0)

$1

$at

保留给汇编器(Reserved for assembler)

$2-$3

$v0-$v1

函数调用返回值(values for results and expression evaluation)

$4-$7

$a0-$a3

函数调用参数(arguments)

$8-$15

$t0-$t7

暂时的(或随便用的)

$16-$23

$s0-$s7

保存的(或如果用,需要SAVE/RESTORE的)(saved)

$24-$25

$t8-$t9

暂时的(或随便用的)

$28

$gp

全局指针(Global Pointer)

$29

$sp

堆栈指针(Stack Pointer)

$30

$fp

帧指针(Frame Pointer)

$31

$ra

返回地址(return address)

使用的时候一般使用第二列别名。第一列的名称也是可以用的。

3.其他寄存器

3.1 整数乘法寄存器HI、LO

MIPS中和整数乘除法相关的寄存器有两个:HI寄存器和LO寄存器。在64位处理器上,对于两个32位做乘法运算后,可以产生64位结果。可以临时将结果的低32位放在LO寄存器,高32位放在HI寄存器。例如下面的指令:

   mult t0,t1
   mflo a4
   mfhi a5

   上面的指令”mult t0,t1”实现的是寄存器t0和寄存器t1的乘法操作,结果的低32位存放在寄存器LO,结果的高32位存放在寄存器HI。mult中的mul代表乘法,t代表临时存储(temply)。HI和LO是特殊的寄存器,不允许程序直接使用,里面的结果要通过指令mflo和mfhi获取。“mflo a4”就是拷贝寄存器LO的值到通用寄存器a4,“mfhi a5”就是拷贝寄存器HI的值到通用寄存器a5。
   HI和LO寄存器也用于除法运算结果的临时保存。除法运算结果商临时存放在寄存器LO,余数存放在寄存器HI。使用实例如下:

   div t0,t1
   mflo a4
   mfhi a5

   上面指令“div t0,t1”实现的是寄存器t0和t1的除法运算,运算结果的商存放在寄存器LO,余数存放在寄存器HI。类似于LO = t0/t1,HI = t0%t1

在HI和LO内的数据还是要通过指令mflo和指令mfhi拷贝到通用寄存器才可以使用。

4.除了定点数的,那就还有浮点数的。(一般用的很少,了解一下)

浮点数寄存器
浮点寄存器编号 功能简介
f0,f2 用作函数返回值
f12−f19 用作传递参数
f24−f31 寄存器变量,发生函数调用时要保存
f1、f3-f 11 、 f11、f11、f20-$23
 
用作临时变量

5.协处理器的寄存器

在MIPS体系结构中,可支持多个协处理器(Co-Processor)。其中,协处理器0(简称CP0)是体系结构中必须实现的。CP0就是系统控制处理器,它起到控制CPU的作用,比如CPU配置、高速缓存控制、异常中断控制、存储单元控制、定时器、错误检测等。详细的功能请参考《user2.pdf》

这些寄存器需要特殊的指令才能操作,并且要在特权模式下。

mfc0

mtc0

mips好像是没有状态寄存器的,但是目前来看应该都放在协处理器0里面了。

6.在PMON的start.S中,开始就注释了一些寄存器的定义,比较重要

/*
 *   Register usage:
 *
 *    s0    link versus load offset, used to relocate absolute adresses.
 *    s1    free
 *    s2    memory size.
 *    s3    free.
 *    s4    Bonito base address.
 *    s5    dbg.
 *    s6    sdCfg.
 *    s7    rasave.
 *    s8    L3 Cache size.
 */

单龙芯3A3000-7A1000PMON研究学习-(16)撸起袖子干-分析代码前的准备工作3-寄存器相关推荐

  1. 单龙芯3A3000-7A1000PMON研究学习-(14)撸起袖子干-分析代码前的准备工作2

    1.我细细回想一下,感觉要准备的东西很多. 比如体系结构,汇编指令,地址映射,外设.... 然而,光体系结构就复杂到要用n页(官方的)pdf才能说清楚(其实不一定能说清楚,可能还得慢慢去琢磨).这里还 ...

  2. 单龙芯3A3000-7A1000PMON研究学习-(12)撸起袖子干-分析代码前的准备工作1

    1.make的过程我说了个大概,大家可以参考一下前面的文章.现在准备分析代码吧,其实这个准备工作内容应该蛮多的.可能后面还要补充. 2.首先找到关键的bin文件啊,就是可以最终下载到flash,能启动 ...

  3. come type6 定义_COMe-B6101龙芯3A3000 COM Express Type6模块

    COMe-B6101是一款以龙芯3A多核处理器和AMD RS780E SB710芯片组为核心,高可靠性和高效能的主板模块.COMe-B6101 内部集成ATI M72-based图像引擎,支持双屏显示 ...

  4. 龙梦拿下3万片大单 龙芯电脑年底量产无悬疑

    10月9日,龙芯有关人士通过搜狐博客透露,"龙梦电脑已经有人拿到货,批量生产在11月15日以后,因为量产的芯片11月15日才到."这与龙梦科技此前关于"龙芯电脑年底量产& ...

  5. 单龙芯3A3000-7A1000PMON研究学习-(19)撸起袖子干-再来一杯代码3

    1.start.S包含一个独立的pcitlb.S文件 ##########################################     PRINTSTR("NO TLB cach ...

  6. 单龙芯3A3000-7A1000PMON研究学习-(8)撸起袖子干-make tgt=rom初步分析(a)

    1.make tgt=rom 开始编译了. 在zloader.3a3000_7a目录下的Makefile.inc,指定了我们要的目标. tgt = rom. 所以就是执行73行的rom这个目标. 这里 ...

  7. 单龙芯3A3000-7A1000PMON研究学习-(11)撸起袖子干-make tgt=rom的编译过程

    1. 今天来分析一下makefile,看看如何编译出执行文件pmon的. 先贴几张图,makefile的内容,这是一些依赖关系 图一 图二 图三 图四 图五 2.图一解释 rom这个目标又三个依赖,c ...

  8. 走进龙芯3A3000(四)安装XFCE4

    我想要安装KDE 我想要qtwebengine的MIPS64实现.曾经读过千里孤坟的<KDE综览>,就深深喜欢上了KDE,当时的版本还是KDE3.后来KDE4发布,千里孤坟又写了<K ...

  9. Linux内核4.10在龙芯3A3000笔记本上的移植

    http://ask.loongnix.org/?/article/66 http://ask.loongnix.org/?/article/67 http://ask.loongnix.org/?/ ...

最新文章

  1. c4d+ps打造抽象NFT加密艺术 Create Abstract NFT Crypto Art with Cinema 4D + Photoshop
  2. UML学习---交互
  3. 一个关于nvarchar字段排序,中英文混合排序的问题
  4. protobuf的安装和卸载
  5. java实参将数据传递给形参的两种形式
  6. python界面设计实例qt_pyqt的最小示例qtreeview和qt设计
  7. y7000p内存是一个16还是8+8_现货黄金创8年新高!黄金ETF年内净值增逾16%,买入还是离场?...
  8. 创建控制文件副本出现错误ORA-00205: error in identifying control file
  9. 吉他扒和弦 扒谱工具Riffstation
  10. TikZ从零开始(一)——实例之受力分析图绘制
  11. Mac 使用终端彻底格式化U盘
  12. BZOJ 2759 一个动态树好题(Link-Cut Tree+数学)
  13. css3线性渐变怎么写,CSS3线性渐变指南
  14. 通过python理解相速度和群速度
  15. python蒙特卡洛模拟return_蒙特卡罗方法入门
  16. Poi和easyExcel
  17. delphi 10.3 (一) 控件安装和使用
  18. 前后分离必备神器,YApi小白部署攻略
  19. 田老师书法工作室学员作品展(二)
  20. 软件推荐:强力卸载软件HIBIT

热门文章

  1. 二十、HTTP 协议状态码-5XX
  2. JS window 对象 打开新窗口
  3. Java:Exceptions相关学习
  4. linux下查大文件的方法
  5. STM32+ESP8266+MQTT微信小程序SoftAP一键配网接入腾讯物联网平台
  6. 【数据结构】(森林)以孩子兄弟链表为存储结构,请设计递归算法求树的深度
  7. [Pandas] 分组比例计算求和
  8. Latex 公式换行问题,(换行,等号对齐)
  9. mmdetection配置踩坑
  10. CentOS Stream 8 安装Oracle 19C (静默模式)