zoukankan      html  css  js  c++  java
  • MIPS学习笔记

    看到寒泥同学整理的MIPS方向的学习心得笔记,想必可以给思路还未清晰的初学者指个方向,小虾们加油哦!
    如下:
    第一是空间上的分配。MIPS空间上共分四个部份:
    0x00000000 - 0x7fffffff 为kuser区,主要用于MMU映射,用于运行用户程序;
    0x80000000 - 0x9fffffff 为kseg0区,访问方式为Cache访问,主要用于运行无MMU系统的大部份程序或操作系统的核心程序;
    0xa0000000 - 0xbfffffff 为kseg1区,为无Cache方式访问。主要用于运行Bootloader程序,或映射寄存器。
    0xc0000000 - 0xffffffff 为kseg2区,MMU映射访问,用于运行一些管理态的程序。
    需要注意的是:kseg0和kseg1都是映射上物理地址0x00000000-0x1fffffff上。
    因些,程序运行的起始地址0xbfc00000实际上是物理地址0x1fc00000。

    第二是寄存器。MIPS一共有32个通用寄存器。
    $0 zero,该寄存器桓为0,用途较广,可用于清空其它寄存器,做一些空操作等。
    $1:at,主要保留用于汇编的一些宏指令。编译器可能使用到它。
    $2 - $3:v0 - v1,主要用于函数调用的定点返回值
    $4 - $7:a0 - a3,函数调用时传递的4个定点参数
    $8 - $15:t0 - t7,非保存的临时寄存器,可能被子程序改变其值。
    $16 - $23:s0 - s7,保存的临时寄存器,使用完毕需要还原原来的值。
    $24 - $25:t8 - t9,同t0 - t7;
    $28:gp,全局指针(Global Pointer),访问一些全局变量时会用到,具体用法暂时还不是太清楚 ;
    $29:sp,堆栈指针(Stack Pointer) ;
    $30:fp,帧指针(Frame Pointer) ,主要用于保存函数入口的堆栈指针。
    $31:ra ,执行jr,jalr后保存的返回PC地址。

    第三是协处理器CP0。
    用的最多的就是$12 SR和$13 CAUSE了。

    http://forum.eepw.com.cn/thread/200739/1

  • 相关阅读:
    Windows环境下安装PHPUnit
    用nodejs,express,ejs,mongo,extjs实现了简单了网站后台管理系统
    ftp定时下载指定目录或文件脚本
    centos6、7系统初始化脚本
    Centos6系统启动流程
    使用expect登录批量拷贝本地文件到多个目标主机
    AWK
    基础字符的操作示例
    Linux的正则练习
    Linux权限操作(用户和组)
  • 原文地址:https://www.cnblogs.com/kuainiao/p/2860041.html
Copyright © 2011-2022 走看看