MIPS是最早的,最成功的RISC(Reduced Instruction Set Computer)处理 器之一,起源于Stanford Univ的电机系. 其创始人 John L. Hennessy在1984年在硅谷创立 了MIPS INC. 公司(www.mips.com)。John L. Hennessy目前是Stanford Univ. 的校长。在此之前,他是 Stanford电子工程学院的Dean。CS专业的学生都知道两本著名的书: “Computer Organization and Design : The Hardware/Software Interface” 和 ”Computer Architecture : A Quantitative Approach“。其Co-author就是Hennessy.
MIPS的名字为“Microcomputer without interlocked pipeline stages"的缩写。另外一个通常的非正式的说法是”Millions of instructions per second".
一般而言,MIPS指令系统有:MIPS I;MIPS II;MIPS III 和MIPS IV。可想而知,指令系统是向后兼容的。例如,基于MIPS II的代码可以在MIP III和MIPS IV的处理器上跑一跑:-)
下面是当我们用gcc时,如何指定指令和CPU的选项。
-mcpu=cpu type Assume the defaults for the machine type cpu type when scheduling instructions. The choices for cpu type are `r2000', `r3000', `r4000', `r4400', `r4600', and `r6000'. While picking a specific cpu type will schedule things appropriately for that particular chip, the compiler will not generate any code that does not meet level 1 of the MIPS ISA (instruction set architecture) without the `-mips2' or `-mips3' switches being used. -mips1 Issue instructions from level 1 of the MIPS ISA. This is the default. `r3000' is the default cpu type at this ISA level. -mips2 Issue instructions from level 2 of the MIPS ISA (branch likely, square root instructions). `r6000' is the default cpu type at this ISA level. -mips3 Issue instructions from level 3 of the MIPS ISA (64 bit instructions). `r4000' is the default cpu type at this ISA level. This option does not change the sizes of any of the C data types.
*有一点在MIPS CPU下,要千万注意:ALIGN。MIPS对ALIGN的要求是严厉的。这一点与POWERPC是天壤之别。指令必须是32位对齐。数据类型必须在她们的的 大小边界对齐。简单的比如:When CPU running under 32bit mode, int must 32bit aligned; long 32bit aligned; pointer must be 32bit aligned; char must 8 bit aligned. long long must 64 bit aligned;关于这一点 ,我是吃过苦头的。当然我知道大家还会犯错在这里:--),即使知道了。有些事情学是没用的:--)。一定要注意。