2008-09-19 14 views
22

Mi pregunta: ¿El lenguaje de programación MIPS es benificial para saber?MIPS - ¿Es importante?

Soy un estudiante de CS y estoy tomando una clase de montaje que se centra en MIPS. Me siento muy cómodo escribiendo en lenguajes de alto nivel, pero Mips me tiene un poco deprimido.

¿Es MIPS algo en lo que realmente debería concentrarme y tratar de comprenderlo por completo? ¿Me ayudará en el futuro?

Respuesta

8

Tomé una clase de ensamblaje haciendo mips hace unos dos años. Me encontré escribiendo juegos GameBoy Advance en un lenguaje asm parecido a mips. No puedo decir que lo disfruté.

Aunque creo que es bueno tener una comprensión sobre el funcionamiento interno del código ensamblado (de alto nivel a bajo nivel). Siento que me hizo entender más acerca de cómo funciona realmente la computadora. Además, no pude resistirme a crear algunas máquinas virtuales poco después, diseñando mi propio lenguaje de ensamblaje :)

32

En un momento dado (en los 90) los procesadores derivados de MIPS fueron los procesadores más vendidos en el mundo, empequeñeciendo las ventas de Procesadores Intel x86. Esto se debió a su gran presencia en el mercado integrado. Creo que ahora los procesadores basados ​​en ARM pueden haber asumido ese título, pero todavía hay toneladas de sistemas integrados usando MIPS.

Incluso si nunca programa un chip MIPS en ensamblador en su carrera, el lenguaje ensamblador puede ser útil para aprender. Puede ayudarlo a escribir un código de alto nivel más eficiente si tiene alguna idea de lo que el compilador va a emitir. Otras áreas donde todavía se usa incluyen compiladores (que escriben los suyos), controladores de dispositivo y programación multimedia (donde el código que requiere MMX o SSE usualmente aún se escribe a mano en el ensamblador).

Cada tipo de CPU tiene un conjunto de instrucciones diferente, pero hay suficientes elementos comunes que una vez que aprendes un dialecto de ensamblaje (MIPS en tu caso) los otros deberían ser fáciles de recoger.

6

Es útil comprender los niveles muy bajos de la computadora. Por ejemplo, hay desarrolladores que dirán que la CPU ejecuta algún tipo de instrucción de "objeto nuevo". Por supuesto, no hay tal instrucción, el manejo de los objetos pasa varias capas de abstracción más altas. Es bueno comprender la distinción, para que pueda entender por qué la creación de objetos puede ser costosa (o no) o por qué los espacios de direcciones protegidas pueden hacer que el sistema sea más robusto.

Cuando estaba en la escuela, el curso de ensamblaje se impartía en el mainframe IBM utilizando el conjunto de instrucciones System/360. Nunca, en ningún momento de mi carrera, he estado ni cerca de trabajar en una máquina así, pero el conocimiento de cómo se ve la CPU ha sido valioso.

Actualmente, trabajo en sistemas integrados usando procesadores MIPS. De hecho, me paso una cantidad de tiempo razonable estudiando detenidamente las listas de ensambles MIPS, y escribo algunos ensambles MIPS para los vectores de arranque y las primitivas de sincronización. Sin embargo, incluso si nunca escribes nada en el ensamblaje, entender la operación de la CPU sigue siendo valioso.

3

Por "mips programming language" Supongo que quiere decir MIPS Assembly Language.

Aprender un lenguaje ensamblador es beneficioso, ayuda a mapear el código que escribe sobre cómo se ejecutará en el hardware. Esto puede ayudarlo a exponerse a preocupaciones de bajo nivel como errores de caché, ramificación, ejecución fuera de orden y otras cosas que no consideraría escribir código de alto nivel.

El aprendizaje del tiempo El montaje de MIPS es útil para usted, depende de la carrera que planee seguir.Personalmente creo x86/x64 (popular en PC, directamente aplicable si escribes C++ o C# en PC), PPC (ganando popularidad, se usa en consolas de juegos, y también te expone a RISC) o ARM (utilizado en muchos dispositivos integrados) como teléfonos móviles) podrían ser mejores opciones para aprender.

2

Las mips parecen estar regresando en los sistemas integrados. @ [sk] me ha dado un mejor resumen que yo, pero tengo un ejemplo reciente:

Broadcom parece hacer tarjetas Wifi estos días con chips MIPS o ARM (no estoy seguro de qué documentación dice uno, el firmware dice el otro). Sin embargo, en sus chips más nuevos todavía estamos esperando el soporte de Linux en funcionamiento con todas las características habilitadas, así que por esa razón, me alegra que estés aprendiendo. (Ahora consígueme y escríbame algunos controladores: P)

2

El lenguaje ensamblador siempre vale la pena aprenderlo. Probablemente no se les está enseñando o viendo cómo el compilador convierte el código de lenguaje de alto nivel en código ensamblador, pero yo diría que el conocimiento es el beneficio más importante de conocer el lenguaje ensamblador. Es aleccionador cuán ineficientes son muchos compiladores incluso en el nivel de optimización más alto. (La mayoría de los compiladores arrojarán el código de ensamblado para usted cuando lo solicite, en lugar de ir a código de máquina y vinculación).

Dicho esto, el asma MIPS probablemente sea inútil, porque casi nadie usa MIPS ahora. (SGI solía hacerlo, pero ahora sus máquinas están todas en chips x86/IA-64). Si le parece atractivo el lenguaje ensamblador y desea trabajar más en el ensamblado, aprenda el conjunto de instrucciones ARM. ARM es solo un poco más complejo que MIPS, y prácticamente todos los teléfonos móviles, teléfonos inteligentes y PDA ahora usan chips ARM (hechos por docenas de fabricantes). El iPod usa ARM, al igual que (creo) el Zune.

2

MIPS es un gran lenguaje para aprender a ensamblar. Tiene muchos registros de propósito general para hacer que escribir sus programas sea menos tedioso y es una arquitectura RISC por lo que hay menos instrucciones que necesita memorizar.

Parte del uso principal que no mucha gente menciona es que el N64, Playstation 1, Playstation 2 y PSP usaron todos los procesadores MIPS.

+3

Estoy bastante seguro de que el N64 también tenía un procesador MIPS. – Ibrahim

2

En su caso, creo que MIPS se utiliza como ayuda de tutoría. Esta es una clase de ciencias de la computación y en lugar de darte herramientas de códigos mono, intentan enseñarte conceptos amplios que son más fáciles de ejemplificar en una arquitectura más simple como MIPS en lugar de en x86.

No espere que entre en su "caja de herramientas del programador". Para el propósito práctico de escribir código de bajo nivel, será mejor que aprendas lenguaje ensamblador x86 luego.

0

He estudiado MIPS el año pasado. MIPS es un lenguaje importante pero desafortunadamente, y probablemente nunca usará MIPS. Aprenderá algunos conceptos básicos, pero no pierda el tiempo tratando de aprender más de lo que necesita porque no hay muchos trabajos en MIPS, en comparación con otros idiomas.

0

Creo que depende del área en CS hacia la que desee disparar después de la graduación. Si la arquitectura de la computadora es lo que quieres hacer, entonces en mi opinión yo digo que sí. Creo que un buen ingeniero de software se aleja con el concepto general de cómo funciona un lenguaje ensamblador + desvío y reenvío y finalmente cómo se puede optimizar su código para el rendimiento de la memoria caché. (Localidad espacial/localidad temporal)

1

Aquí hay 3 buenas razones para aprender a ensamblar.

  1. Ciertas piezas pequeñas de programas se escriben mejor en el ensamblaje que en un lenguaje de alto nivel.
  2. Es posible que haya que depurar o mejorar los viejos programas de ensamblaje.
  3. Aprender a programar en conjunto lo ayudará a desarrollar modelos precisos de lo que hace un procesador y lo que hace un compilador.

La tercera razón es de lejos la más importante. Saber cómo funciona su hardware profundizará mucho su comprensión de la informática y, a su vez, le ayudará a convertirse en un mejor desarrollador.