作为第二个汇编语言学习MIPS?

3
我知道x86汇编语言(并且曾经使用过FPGA等),从未为RISC编写过程序。我有机会参加MIPS课程,但我已经很忙了,所以我的问题是,我知道每学习一样东西都有好处,但这样真的有多大好处吗?(我是一个低级别的爱好者,但这是必须的吗?) 我知道mips-is-it-important,但我觉得我的情况略有不同,因为我已经了解某种类型的汇编语言。谢谢。

这里没有对或错的答案,所以我选择了最有信息量的答案。感谢所有回答的人。 - Liran Orevi
7个回答

6
关于MIPS的一个有趣的事情是,你必须手动管理翻译后备缓存(TLB)。而在x86(或我编程过的大多数其他ISA)中不需要这样做。从这个角度来看,它比其他RISC CPU更加RISC。许多网络和存储设备都嵌入了MIPS CPU。我在本世纪早期工作的一家初创公司设计了一个带有加密加速器(作为两个协处理器)的16核MIPS CPU。该设计被Juniper Networks收购,并用于其路由器中的自适应服务PIC。

因此,正如其他人所说,MIPS是RISC ISA的一个很好的例子,并且仍然获得了很多设计胜利。我认为学习它是有用的。

我发现以下书籍的第一版是学习它的好方法:

http://www.amazon.com/Second-Morgan-Kaufmann-Computer-Architecture/dp/0120884216/ref=sr_1_1?ie=UTF8&s=books&qid=1237328559&sr=1-1


2

虽然这并不是必须的,但它是一种很好的RISC-ish架构示例。再加上IBM 360架构(真的!),你就可以对常规指令集的范围有很好的了解。


2

我认为学习MIPS(至少基础知识)并不难,而且有SPIM模拟器可以用来观察代码运行。如果你喜欢底层编程,不妨一试。


1

其他问题已经很好地证明了越来越过时的架构:学习汇编本身就是有用的。但在你的情况下,这并不适用。

我认为只有在假设您已经具备汇编语言知识的前提下才考虑这门课程(否则您将花费大量时间重复基本概念)。否则,您可能最好将时间花在更相关的事情上(除非您对不久将来要使用特定处理器(系列)有很高的期望,否则不太可能是另一个汇编器)。

为什么不学习一些新东西(例如函数式编程)呢?


1

当我还在学校时(2008年密歇根理工大学计算机科学专业),我们在必修的“计算机体系结构导论”课程中学习了 MIPS 汇编语言(在 SPIM 上运行),该课程还涵盖了不同类型的体系结构、高速缓存、DMA 等等。我们还学习了逻辑门和动态/静态内存是如何由二极管、电容器和晶体管等低级组件构建而成的基础知识(我们没有深入研究;这是一门计算机科学课程)。我们使用逻辑模拟软件(基本上是 AND/OR/等门,您可以将其拖放到网格上并进行连线)来构建加法器、ALU,最终根据机器码规范、汇编器、示例程序和示例输出构建一个非常简单的 16 位 RISC 处理器。

如果是那种课程,我认为它会非常有价值。我发现那门课程的知识对于理解操作系统课程中的内容(虚拟内存/分页/高速缓存、中断等等)以及后来理解 JVM 如何处理字节码非常有用。理解汇编语言如何映射到机器码,如何映射到多路复用器、ALU 和寄存器,使我之前认为是魔法的东西变得微不足道且易于理解。

否则,这只是为了让你的工具箱增加另一个指令集,而MIPS可能不是最好的选择。与x86相比,它非常容易/直接/规则化,因此您在课程中不应该遇到太多麻烦。但是,它是否有价值?如果您对汇编语言有一般的了解并且出于某种原因需要它,那么您可能可以很容易地学会它,而无需上课。

1

如果你是一个低级别的爱好者,那么这可能值得一试,但你可以在一个周末自学MIPS,所以我想这门课程不仅仅是关于MIPS编程。如果这是一门使用MIPS的计算机硬件理论课程,那么我认为这很值得你花时间。

然而,如果这只是MIPS编程,并且你已经掌握了x86汇编和低级别编程的概念,我会建议你放弃这门课程。节省时间和金钱,花费一个周末左右使用SPIM来尝试MIPS,就像schnaader指出的那样。

还要记住,如果你从未在汇编中编写过递归函数,那么你还没有足够地探索这些内容。


1
我上的一门课要求我们学习MIPS汇编语言。确切地说...这是我们自己的定制架构,但很大程度上基于MIPS。总之,学吧。虽然我讨厌这么低层级的工作,但了解汇编语言对我来说非常有帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接