MIPS-重要吗?
我的问题:熟悉MIPS编程语言吗?
我是一名CS学生,正在上一门针对MIPS的装配课。我使用高级语言写作非常自在,但是Mips使我有些沮丧。
我真的应该重点关注MIPS并设法完全掌握它吗?将来对我有帮助吗?
解决方案
大约两年前,我参加了一个装配课,做一些技巧练习。我发现自己以类似mips的asm语言编写GameBoy Advance游戏。不能说我喜欢它。
尽管我认为最好了解汇编代码的内部工作原理(从高层次到低层次)。我觉得这使我对计算机的实际工作有了更多的了解。另外,在我设计自己的汇编语言后不久,我忍不住制造了几台虚拟机:)
在90年代,源自MIPS的处理器曾经是世界上最畅销的处理器,这使Intel x86处理器的销售相形见war。这是因为它们在嵌入式市场上的巨大份额。我认为现在基于ARM的处理器可能已经取代了这个头衔,但是仍然有大量使用MIPS的嵌入式系统。
即使我们从未在职业生涯中用汇编程序对MIPS芯片进行编程,汇编语言对于学习也是很有用的。如果我们对编译器将要发出的内容有所了解,它可以编写更高效的高级代码。仍然使用它的其他领域包括编译器(编写自己的代码),设备驱动程序和多媒体编程(其中需要MMX或者SSE的代码通常仍由汇编器手工编写)。
每种CPU类型都有不同的指令集,但是有足够的通用性,一旦我们学习了一种汇编方言(在情况下为MIPS),其他的方言就应该很容易理解。
了解计算机的最低级别很有帮助。例如,有些开发人员会说CPU执行某种"新对象"指令。当然没有这样的指令,对象的管理发生在更高层次的抽象上。最好理解区别,因此我们可以理解为什么对象创建可能昂贵(或者不昂贵)或者为什么受保护的地址空间可以使系统更健壮。
当我在学校时,组装课程是使用System / 360指令集在IBM大型机上教授的。在我的职业生涯的任何时候,我都从来没有接近使用这种机器进行工作,但是了解CPU的外观非常有价值。
如今,我在使用MIPS处理器的嵌入式系统上工作。实际上,我花了相当多的时间仔细研究MIPS程序集列表,并为引导向量和同步原语编写了一些MIPS程序集。但是,即使我们从未真正用汇编语言编写任何东西,了解CPU的操作仍然很有价值。
我认为" mips编程语言"是指MIPS汇编语言。
学习汇编语言是有益的,它有助于我们将编写的代码映射到其在硬件上的运行方式。这可以解决更多低级问题,例如缓存未命中,分支,乱序执行以及其他我们不会想到的编写高级代码的问题。
天气学习MIPS组装对我们有用,取决于我们打算从事的职业。我个人认为x86 / x64(在PC上很受欢迎,如果我们编写C ++或者Con PC,则直接适用),PPC(在游戏机中使用,因此很受欢迎,也使我们接触RISC)或者ARM(在许多嵌入式设备中使用(例如手机)可能是更好的学习选择。
嵌入式系统似乎再次出现了误点。 @ [sk]提供了比我更好的总结,但是我有一个最近的例子:
如今,Broadcom似乎在制造带有MIPS或者ARM芯片的Wifi卡(我不确定文档中的哪一个是固件的另一种)。但是,在较新的芯片上,我们仍在等待启用所有功能的Linux支持,因此,很高兴我们正在学习。 (现在给我写一些驱动程序:P)
汇编语言总是值得学习的。我们可能没有在教书,也没有看到编译器如何将高级语言代码转换为汇编代码,但是我想说,知识是了解汇编语言最重要的好处。令人震惊的是,即使在最高优化级别上,许多编译器的效率也低下。 (大多数编译器将根据请求为我们转储汇编代码,而不是继续进行机器代码和链接。)
就是说,MIPS组件可能没有用,因为现在几乎没有人使用MIPS。 (SGI曾经使用过,但是现在他们的机器都在x86 / IA-64芯片上。)如果我们发现汇编语言很有吸引力并且想进一步从事汇编工作,请学习ARM指令集。 ARM仅比MIPS复杂一点,几乎所有的移动电话,智能电话和PDA现在都使用ARM芯片(由数十个制造商生产)。 iPod使用ARM,Zune也使用ARM。
MIPS是学习汇编的一种很棒的语言。我们拥有许多通用寄存器,从而使编写程序的过程不再那么繁琐,并且它是RISC架构,因此我们需要记住的指令更少。
很少有人提到的一些主流用法是N64,Playstation 1,Playstation 2和PSP都使用MIPS处理器。