甜橙安全头条第36期|物联网安全-MIPS基础(一)

百家 作者:甜橙安全应急响应中心 2022-03-09 23:24:38



MIPS是一种采取精简指令集的处理器,与我们常见的ARM、x86相比,它被广泛应用于物联网设备中,我们生活中经常看到的路由器、摄像头、打印机以及龙芯芯片通常采用的都是MIPS。


一、什么是MIPS

1.1 什么是MIPS

MIPS(无互锁流水线微处理器)是一种精简(RISC)指令集体系结构(ISA),起源于Stanford大学John Hennessy教授的研究成果。


1.2 CISC & RISC

CISC(Complex Instruction Set Computer)复杂指令计算机Intel的X86,AMD的K5,K6为该类型。

RISC(Reduced Instruction Set Computer)精简指令集计算机Acorn公司的ARM,IBM的PowerPC,MIPS公司的MIPS为该类型。


1.3RISC和CISC架构

RISC

1)Less instruction and addressing modes

2)Only register-register operation

3)Load and Store instructions

4)High speed

5)Control signals are generate by external hardware circuit

6)Instruction is executed in one clock

CISC

1)More instuctions and addressing modes

2)Register to Register/ Memeory/ I/O

3)Load,Store and other instructions

4)Low speed

5)Control signals are generated by internal hardware circuit


1.4MIPS结构的基本特点

1)所有指令都是32位编码

2)有些指令有32供目标地址编码;有些则只有16位。因此要加载任何一个32位值,就得用两个加载指令。16位的目标地址意味着,指令的跳转或子函数的位置必须在64K以内(上下32K)

1.所有指令都是32位编码

2.有些指令有32供目标地址编码;有些则只有16位。因此要加载任何一个32位值,就得用两个加载指令。16位的目标地址意味着,指令的跳转或子函数的位置必须在64K以内(上下32K)

3)所有的动作原理上要求必须在1个时钟周期内完成,一个动作一个阶段

4)32个通用寄存器,每个寄存器32位(对32位机)或64位(对64位机)

5)本身没有任何帮助运算判断的标志寄存器,要实现相应的功能时,是通过测试两个寄存器是否相等来完成的

6)所有的运算都是基于32位的,没有对字节和对半字的运算(MIPS里,字定义为32位,半字定义为16位)

7)没有单独的栈指令,所有对栈的操作都是统一的内存方式方式

8)由于MIPS固定指令长度,所以造成其编译后的二进制文件和内存占用空间比x86的要大

9)寻址方式:只有一种内存寻址方式。就是基地址加一个16位的地址偏移

10)内存中的数据访问必须严格对齐(至少4字节对齐)

11)跳转指令只有26位目标地址,再加上2位的对齐位,可寻址28位的空间,即256M

12)条件分支指令只有16位跳转地址,加上2位的对齐位,共18位寻址空间,即256K

13)MIPS默认不把子函数的返回地址(就是调用函数的受害指令地址)存放到栈中,而是存放到$31寄存器中

14)流水线效应。由于采用了高度的流水线,结果产生了一些对程序员来说可见的效应,需要注意。最重要的两个效应就是分支延迟效应载入延迟效应


1.5 MIPS大小端:MIPS、MIPSEL

假如有一个4字节的数据位0x12 34 56 78(十进制:305419896,0x12为高字节,0x78为低字节),若将其存放于地址0x4000 8000中

大端是高字节存放低地址,低字节存放高地址;小端相反

内存地址

0x4000 8000(低地址)

0x4000 8001

0x4000 8002

0x4000 8003(高地址)

大端模式

0x12(高字节)

0x34

0x56

0x78(低字节)

小端模式

0x78(低字节)

0x56

0x34

0x12(高字节)

MIPS     :big-endian的MIPS架构

MIPSEL:little-endian的MIPS架构



二、MIPS应用领域


2.1MIPS应用领域

计算机

电视机

摄像头

路由器

龙芯芯片

........





三、MIPS寄存器



3.1 MIPS寄存器




r0寄存器永远为0

r1存放返回地址

r2-r3存放结果

r4-r7存放参数

r8-r15临时寄存器,不会保存

r16-r23附加的寄存器

r24-r25更多的临时寄存器,不会保存

r26-r27系统调用

r28全局(gp)寄存器

r29堆栈寄存器

r30堆栈寄存器

r31返回地址




三、MIPS流水线

4.1 流水线

取指令——读操作数及转移——执行——访问存储器——写结果

   IF  ——  ID  —— EX  —— MEM ——  WB












———— / END / ————



那些年甜橙安全给你分享过的干货



- 甜橙竞赛 -

《2021年国家网络安全宣传周活动竞赛》


- 甜橙安全头条 -

《个人信息保护法》之企业识别敏感个人信息的数字经


- 甜橙安全小课堂 -

《手机丢了,第一时间一定要先做这件事!


- 热点追踪-

 App收集的最小必要信息有哪些?


-更多精彩,请关注下方公众号-

 



关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接