zoukankan      html  css  js  c++  java
  • 【原创】MIPS相关

        MIPS是单字长定点指令平均执行速度 Million Instructions Per Second的缩写。

       路由器等嵌入式系统多采用MIPS和ARM两种指令架构,最近在研究路由器,借机总结一下基于MIPS的架构和汇编语法。

     1、MIPS Linux

       MIPS指令系统普遍适用于小型设备的处理器架构,路由器系统中根文件系统下通常有usr、sys、proc、lib、etc、bin、var、tmp、sbin、mnt、include、dev目录。

       Bin、sbin、及usr下bin、sbin用于存放路由器中应用程序的目录。

       Lib目录存放程序运行时需要的动态库文件的目录。

       Etc目录通常用于存放配置文件。

    2、寄存器

      MIPS下一共有32个通用寄存器,在汇编中,寄存器标志由$符开头,有两种表示方式:

     (1)直接使用该寄存器对应的编号,例如:从$0到$31;

     (2)使用对应的寄存器名称,例如:$t1, $sp; 

      编号、名称及用途解释如下:

    $0
    zero

    永远返回零

    1
    $at

    汇编保留寄存器(暂时变量)

    2-3
    $v0 - $v1

    Value简写)存储表达式或者是函数的返回值

    4-7
    $a0 - $a3

    Argument简写)存储子程序的前4个参数,在子程序调用过程中释放

    8-15
    $t0 - $t7

    Temp简写)临时变量,同上调用时不保存

    16-23
    $s0 - $s7

    Saved or Static简写)静态变量,调用时保存

    24-25
    $t8 - $t9

    Temp简写)算是前面$0~$7的一个继续,属性同$t0~$t7

    26-27
    $k0 - $k1

    (breaK off简写?)中断函数返回值,不可做其他用途

    28
    $gp

    Global Pointer简写)指向64k(2^16)大小的静态数据块的中间地址(字面上好像就是这个意思,块的中间)

    29
    $sp

    (Stack Pointer简写)栈指针,指向的是栈顶

    30
    $s8/$fp

    (Saved/Frame Pointer简写)帧指针

    31
    $ra

    返回地址,jal指令在跳转到某个地址时可把下一条指令放到$ra中

     3、指令集

    (1)Load / Store 读取/写入指令

     有14条:lb、lbu、lh、ll、lw、sb、sc等等。常用指令解释

     la(load address)将一个地址存入一个寄存器;

     li(load immediate)将一个立即数存入一个通用寄存器;

     sw(store word)将源寄存器中的值存入指定地址;

     move用于寄存器之间值的传递。

    (2)算术运算指令

    有21条:add、addi、addu、sub、clo、slt、div和ARM指令类似,随用随查。

    (3)跳转指令

    j:无条件跳转到target标签处

    jr $t3:跳转到寄存器指向的地址处

    jal  target(jump and link):跳转到target并保存返回地址到$ra中

    术语解释:

    Opcode:指令基本操作,称为操作码

    Rs:第一个源操作数寄存器

     

  • 相关阅读:
    windows加固
    linux加固
    加密与编码
    XSS笔记
    hackbar功能简介
    机器学习 | 从加法模型讲到GBDT算法
    把时间还给洞察,且看PPT调研报告自动生成攻略
    树莓派3折腾笔记
    看数学老师是如何一键搞定报告和试卷的
    博客笔记(blog notebook)
  • 原文地址:https://www.cnblogs.com/jayway0day/p/6589922.html
Copyright © 2011-2022 走看看