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

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.
 */

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大智兄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值