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:第一个源操作数寄存器

 

【原创】MIPS相关的更多相关文章

  1. libaio under MIPS architecture /在mips架构下使用的libaio

    First, you can find libaio source in http://libaio.sourcearchive.com/ Second,download the libaio_0.3 ...

  2. 可执行文件(ELF)格式之讲解

    ELF(Executable and Linking Format)是一种对象文件的格式,用于定义不同类型的对象文件(Object files)中都放了什么东西.以及都以什么样的格式去放这些东西.它自 ...

  3. 可执行文件(ELF)格式的理解

    摘自http://www.cnblogs.com/xmphoenix/archive/2011/10/23/2221879.html 可执行文件(ELF)格式的理解 ELF(Executable an ...

  4. HashMap,HashTable,ConcurrentHashMap异同比较

    0. 前言 HashMap和HashTable的区别一种比较简单的回答是: (1)HashMap是非线程安全的,HashTable是线程安全的. (2)HashMap的键和值都允许有null存在,而H ...

  5. 如何高效的学习 TensorFlow 代码?

    https://www.zhihu.com/question/41667903 Linux[公共基础]:TensorFlow的主要运行平台之一就是Linux,但是正式版对Windows的支持日趋完善, ...

  6. <转载> 22种代码味道(Martin Fowler与Kent Beck) http://blog.csdn.net/lovelion/article/details/9301691

    Martin Fowler在Refactoring: Improving the Design of Existing Code(中译名:<重构——改善既有代码的设计>)一书中与Kent ...

  7. TensorFlow学习路径【转】

    作者:黄璞链接:https://www.zhihu.com/question/41667903/answer/109611087来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  8. TensorFlow学习线路

    如何高效的学习 TensorFlow 代码? 或者如何掌握TensorFlow,应用到任何领域? 作者:黄璞链接:https://www.zhihu.com/question/41667903/ans ...

  9. Java集合——HashMap、HashTable以及ConCurrentHashMap异同比较

    0. 前言 HashMap和HashTable的区别一种比较简单的回答是: (1)HashMap是非线程安全的,HashTable是线程安全的. (2)HashMap的键和值都允许有null存在,而H ...

随机推荐

  1. function的toString方法

    javascript的创建多行字符串的除了平时常见的”“+ 反斜杠\ 还有ES6的` ` 在js51上发现一个很有意思的方法 function heredoc(fn) { return fn.toSt ...

  2. oracle(3)

    存储过程: CREATE OR REPLACE PROCEDURE PROC_ABC ( currency IN NUMBER, aysdate IN DATE, money OUT number ) ...

  3. 【题解】Luogu P4588 [TJOI2018]数学计算

    原题传送门 这题是线段树的模板题 显而易见,直接模拟是不好模拟的(取模后就不好再除了) 我们按照时间来建一颗线段树 线段树初始值都为1,用来维护乘积 第一种操作就在当前时间所对应的节点上把乘数改成m ...

  4. Java并发系列之Synchronized

    每一个刚接触多线程并发编程的同学,当被问到,如果多个线程同时访问一段代码,发生并发的时候,应该怎么处理? 我相信闪现在脑海中的第一个解决方案就是用synchronized,用锁,让这段代码同一时间只能 ...

  5. web前端除了关注代码功能实现,还应具备web性能优化以及SEO优化的常识

    web前端除了关注代码功能实现,还应具备web性能优化以及SEO优化的常识 ——不会WPO.SEO的前端工程师不是好码农 作为一名web前端工程师,除了要实现上级的要求,满足其所需要的功能,还要在平时 ...

  6. P1340 兽径管理

    传送门 思路: 题目要求每次连边都要输出最小生成树的边权和.如果在线直接套用最小生成树模板肯定会超时,考虑离线处理.记录每一插入边的时间,在所有边都插入完成后排序一遍就可以求最小生成树(按照插入时间的 ...

  7. 机器学习实战1-1 KNN电影分类遇到的问题

    为什么电脑排版效果和手机排版效果不一样~ 目前只学习了python的基础语法,有些东西理解的不透彻,希望能一边看<机器学习实战>,一边加深对python的理解,所以写的内容很浅显,也许还会 ...

  8. xml.libxml2_添加带tagname的xml文本(xmlNewTextChild)

    1. 2.例子代码: int TgText::NodeNew_G2SVG(xmlNode* _pNodeCurrent_G, xmlNode* _pNodeParent_SVG, xmlNode** ...

  9. js的点滴2

    博客: 1.大牛博客:每一篇博客都需要仔细的看.http://blog.csdn.net/hongchh/article/details/54744318 2.layui:的作者 贤心的博客:http ...

  10. Spring @RequestParam、@RequestBody和@ModelAttribute区别

    一.@RequestParamGET和POST请求传的参数会自动转换赋值到@RequestParam 所注解的变量上1. @RequestParam(org.springframework.web.b ...