2008-09-19 41 views
22

我的问题:MIPS编程语言是人为知道的吗?MIPS - 它很重要吗?

我是CS学生,正在上MIPS专业的集会课。我很高兴用高级语言写作,但Mips让我有点失望。

MIPS是我应该真正关注并试图完全掌握它的东西吗?它会在未来帮助我吗?

回答

8

我在大约两年前参加了一个组装课,我发现自己用一种类似mips的asm语言编写GameBoy Advance游戏。不能说我喜欢它。

尽管我认为了解组装代码的内部工作原理(从高级到低级)是很好的。我觉得这让我更了解电脑的工作原理。另外,我不能拒绝在制作几个虚拟机之后,设计我自己的汇编语言:)

32

MIPS派生的处理器在一个点上是世界上销量最好的处理器,英特尔x86处理器。这是因为他们在嵌入式市场的巨大影响力。我认为现在基于ARM的处理器可能已经接管了这个标题,但是仍然有很多使用MIPS的嵌入式系统。

即使您从未在您的职业生涯中使用汇编编程MIPS芯片,汇编语言也可能对您有所帮助。它可以帮助您编写更高效的高级代码,前提是您对编译器将发布的内容有所了解。其他仍然使用的领域包括编译器(编写自己的),设备驱动程序和多媒体编程(其中需要MMX或SSE的代码通常仍然由手工编写在汇编器中)。

每种CPU类型都有不同的指令集,但是有足够的通用性,一旦你学会了一个汇编语言(在你的情况下是MIPS),其他的应该很容易拾取。

6

了解计算机的低级别是有帮助的。例如,有些开发人员会说CPU执行某种“新对象”指令。当然没有这样的指令,对象的管理发生在几层抽象层次更高的层面上。理解这种区别是很好的,所以你可以理解为什么对象创建可能是昂贵的(或不是),或者为什么受保护的地址空间可以使系统更健壮。

当我在学校时,汇编课程使用System/360指令集在IBM大型机上进行授课。在我的职业生涯中,任何时候我都从来没有接近过这样一台机器,但是知道CPU看起来是否有价值。

如今我使用MIPS处理器开发嵌入式系统。实际上,我花了大量时间钻研MIPS汇编列表,并为引导向量和同步原语编写一些MIPS汇编。然而,即使你从未真正编写过任何东西,了解CPU操作仍然很有价值。

3

“mips编程语言”我假设你的意思是MIPS汇编语言。

学习汇编语言有益于了解它,它可以帮助您将您编写的代码映射到在硬件上运行的代码。这可以帮助向您提供更多低级别问题,例如缓存未命中,分支,无序执行以及其他您不会考虑编写高级代码的问题。

天气学习MIPS程序集对您非常有用,取决于您计划遵循的职业。就我个人而言,我认为x86/x64(在个人电脑中很流行,如果您在PC上编写C++或C#,直接适用),PPC(获得流行度,用于游戏控制台,也暴露给RISC)或ARM(用于许多嵌入式设备如手机)可能是更好的学习选择。

2

Mips似乎正在回归嵌入式系统。 @ [sk]给出了一个比我更好的总结,但我有一个最近的例子:

Broadcom似乎现在使Wifi卡或MIPS或ARM芯片上(我不知道哪个tho,文档说一个,固件说另一个)。然而,在更新的芯片上,我们仍然在等待支持所有功能的linux支持,所以出于这个原因,我很高兴你在学习。 (现在写给我一些驱动程序:P)

2

汇编语言总是值得学习。您可能没有被教导或看到编译器如何将高级语言代码转换为汇编代码,但我认为知识是了解汇编语言最重要的好处。令人清醒的是,许多编译器甚至在最高优化级别上效率低下。 (大多数编译器会根据请求转储汇编代码,而不是继续进行机器代码和链接。)

也就是说,MIPS asm可能没用,因为现在几乎没有人使用MIPS。 (SGI曾经使用过,但现在他们的机器都在x86/IA-64芯片上。)如果您发现汇编语言更具吸引力,并希望进一步在汇编中工作,请学习ARM指令集。 ARM只比MIPS稍微复杂一些,而且几乎所有的手机,智能手机和PDA现在都使用ARM芯片(由数十家制造商生产)。 iPod使用ARM,就像我认为的Zune一样。

2

MIPS是一门很好的学习汇编语言。你有足够的通用寄存器来编写你的程序不那么繁琐,它是一个RISC架构,所以你需要记忆的指令减少了。

一些不是很多人提到的主流用法是,N64,Playstation 1,Playstation 2和PSP都使用了MIPS处理器。

+3

我很确定N64也有一个MIPS处理器。 – Ibrahim 2009-06-26 06:13:12

2

就你而言,我认为MIPS被用作辅导工具。这是一个计算机科学课程,而不是给你代码猴子工具,他们正试图教会你在更简单的架构如MIPS而不是x86上更容易举例说明的广义概念。

不要指望它进入你的“程序员的工具箱”。为了编写低级代码的实际目的,您最好先学习x86汇编语言。

0

去年我学过MIPS。 MIPS是一种重要的语言,但不幸的是,可能你永远不会使用MIPS。您将学习一些基础知识,但不要浪费时间尝试学习更多的知识,因为与其他语言相比,MIPS中没有多少任务。

0

我认为这取决于你想在毕业后朝向CS射击的领域。如果计算机体系结构是你想要做的,那么在我看来,我说的是。我认为一位优秀的软件工程师会学习汇编语言如何工作的一般概念+绕过和转发,以及最终如何优化代码以实现缓存性能。 (空间局部性/时间局部性)

1

以下是学习组装的3个很好的理由。

  1. 程序中的某些小部分用汇编语言写得比用高级语言写得好。
  2. 旧的汇编程序可能需要调试或增强。
  3. 在程序集中学习将帮助您为处理器的功能和编译器的功能开发精确的模型。

第三个原因是迄今为止最重要的。了解你的硬件如何工作将大大加深你对计算机科学的理解,并反过来帮助你成为一个更好的开发者。