MIPS之指令集介绍

简单来说,指令集就是CPU能看得懂的语音,可以称之为机器语言。

CPU指令集主要包括CISC(复杂指令集)和RISC(精简指令集)。

形象点说,

CISC类似于汉语,每一句话都是由汉字组成,而每一个汉字就相当于一条指令集;

RISC类似于英语,每一句话都是由字母组成,而每一个字母就相当于一条指令集;(这里不讨论什么汉字是笔画组成的,形象的比喻而已)

但是无论汉语和英语,都能实现人类基本交流。

例如:英语虽然只有26个字母,但是汉字却有几千个。但是有时候翻译表达同一个意思,往往比中文要复杂。比如中文的诗句,简单的几个汉字,就可以描述此次此刻的心境。

指令集就是cpu能读懂的指令,命令,就是人们预先定义好的,控制cpu如何工作的机器能读懂的机器语言。

知道了什么是指令集,这个时候还有一个概念就是编译。

编译其实就是把高级语言编程机器语言。也就是二进制的东西。烧录openwrt的时候,用hex编辑器打开看看,里面全是二进制代码,这些就是翻译后的机器语言。(当然,固件中处理指令集后,还有数据,数据就是普通的资源文件,不会去控制cpu)。

MIPS指令集就是MIPS架构的CPU能读懂的语言。

下面以add指令作为例子讲解一下,如图

add指令其实就是一条32位的“数据”,

bit0-bit5位命令号,即100000,为add指令

rd则是bit11-bit15

rt则是bit16-bit20

rs则是bit21-bit25

指令的意思(Purpose)是,把rs与rt相加值富裕rd(Description)。这里的rX的意思是cpu的寄存器,一般cpu都有r0-r12个寄存器,是cpu计算临时保存数据用的。

正常的数据是在ram中的,运算过程是:cpu有一条指令把数据搬到cpu的寄存器,然后计算完毕,再搬回去ram中。add即让cpu执行加运算,指令发给cpu后,cpu会调用内部的累加器执行加运算。如果学过数字电路的可能会清楚累加器的电路。


以下附上完整的MIPS的指令集的文档,大家可以参考参考,建议以uboot的启动代码分析一下,参考指令集,自己悟一下

官方文档地址:http://imgtec.com/documentation/

官网32位第6版下载地址:https://imagination-technologies-cloudfront-assets.s3.amazonaws.com/documentation/MD00086-2B-MIPS32BIS-AFP-06.03.pdf(mips官网变成imgtec了!!)

百度网盘(32位第6版):http://pan.baidu.com/s/1gdqAUmJ


声明,本文忽略了很多细节,为了形象的介绍MIPS指令集是个什么东西,本人也不是专业的学者,是由实践的角度去理解,忘大家带着批判去阅读本文!!

转载请注明出处 : http://www.aganzai.com/post-33.html

你可能感兴趣的:(MIPS之指令集介绍)