tags:

views:

582

answers:

7

Hello, I know x86 Assembly (and have worked with FPGA etc') , Never wrote for a RISC, I have the opportunity to take a course in MIPS, but I'm busy as it is, so my question is, I know that every thing I learn is beneficial in some way, but really, how much beneficial? (I am a low level enthusiastic, but is this a must?)

(I'm aware of mips-is-it-important, but I feel that my case is slightly different as I already know some kind of Assembly)

Thanks.

+2  A: 

It's certainly not a must, but it's a nice example of a RISC-ish architecture. Add to that the IBM 360 architecture (honest!) and you'd have a pretty good knowledge of the span of normal instruction sets.

Charlie Martin
+1  A: 

The other question had a good justification of an increasingly obsolete architecture: learning assembly is in itself useful. In your case that does not apply.

I would consider the course only if it assumes a knowledge of an assembler already (otherwise you'll spend a lot of time repeating basic concepts). Otherwise you might be better spending the time with something more relevant (and that would be unlikely to be another assembler, unless you have a high expectations of working on a specific processor (family) soon.

Why not learn something new (e.g. functional programming).

Richard
+2  A: 

I think learning MIPS (at least the basic) is not that hard, there also is the SPIM simulator you can use to watch the code run. If you like low-level programming, it's worth a try.

schnaader
+1  A: 

When I was in school (BS CS Michigan Tech 2008), MIPS assembly (running on SPIM) was taught in the required "Intro to Computer Architecture" class that also covered different types of architectures, cache, DMA, and so forth. We also learned the very basics of how logic gates and dynamic/static memory are constructed out of lower-level components such as diodes, capacitors, and transistors (we didn't get very deep into that; this was a CS class). We used logic simulation software (basically AND/OR/etc. gates that you could drag and drop onto a grid and wire together) to construct an adder, an ALU, and eventually a very simple 16 bit RISC processor given a machine code spec, assembler, sample programs, and sample output.

If it's that kind of class, I'd say it would be very valuable. I found the knowledge from that class incredibly useful for understanding stuff in my OS class (virtual memory/paging/cache, interrupts...), and later for understanding how the JVM is dealing with bytecode. Understanding how the assembly maps to machine code maps to multiplexers and ALUs and registers made a lot of stuff that I pretty much thought was magic before trivial and easy to understand.

Otherwise, this is just to add another instruction set to your tool belt, and MIPS might not be the one to go with. It is very easy/straightforward/regular compared to x86, so you shouldn't have much trouble with the class. Valuable, though? You could probably pick it up pretty easily without taking a class if you are fairly comfortable with assembly in general and for some reason have a need for it.

Adam Jaskiewicz
+3  A: 

One interesting thing about MIPS is that you have to manage the Translation Lookaside Buffer (TLB) manually. You don't have to do that with x86 (or most other ISAs that I've programmed). In that way it is RISCier than the other RISC CPUs. A lot of networking and storage gear has embedded MIPS cpus. A start-up I worked at in the early part of this decade did a 16 core MIPS CPU with encryption accelerators (as two of the coprocessors). That design was bought by Juniper Networks and is used in their adaptive services PIC in their routers.

So, as others have said MIPS is a pretty good example of a RISC ISA, and it is still getting plenty of design wins. I think it is useful to learn.

I found the first edition of the following book to be a good way to learn it:

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

RussellH
That is a RISCy proposition. +1 for puns
James McMahon
+1  A: 

If your low level enthusiast it might be worth it, but you can teach yourself mips in a weekend so I imagine the course is going to be more then just programming in mips. If it is a computer hardware theory course using mips, then I think that is worth your time.

However if it is just MIPS programming and you already have a handle on x86 assembly and the concepts of low level programming, I would say pass on the class. Save yourself time and money and spend a weekend or so messing with MIPS using SPIM, which schnaader pointed out.

Also remember that you haven't explored this stuff enough if you have never written a recursive function in assembly.

James McMahon
+1  A: 

One of my classes forced us to learn the MIPS assembly language. Well, technically... it was our own custom architecture, but heavily based from MIPS. Conclusion, do it. Knowing assembly aided me indefinitely, even though I hate working this low to the metal.

Rev316