2008-09-19 18 views
22

Meine Frage: Ist die MIPS-Programmiersprache, die nützlich ist zu wissen?MIPS - Ist es wichtig?

Ich bin ein CS-Student und nehme eine Assembly-Klasse, die sich auf MIPS konzentriert. Ich bin sehr wohl in High-Level-Sprachen schreiben, aber Mips hat mich ein wenig enttäuscht.

Ist MIPS etwas, auf das ich mich wirklich konzentrieren sollte und versuche es vollständig zu erfassen? Wird es mir in Zukunft helfen?

Antwort

8

Ich nahm vor etwa zwei Jahren eine Montageklasse auf, die Mips machte. Ich habe Gameboy Advance-Spiele in einer mopsähnlichen Sprache geschrieben. Ich kann nicht sagen, dass ich es genossen habe.

Obwohl ich denke, dass es gut ist, ein Verständnis für die inneren Funktionen des zusammengesetzten Codes (von hohem Niveau zu niedrigem Niveau) zu haben. Ich glaube, das hat mich dazu gebracht, mehr darüber zu verstehen, wie der Computer tatsächlich funktioniert. Auch konnte ich nicht widerstehen, ein paar virtuelle Maschinen kurz danach zu machen, meine eigene Assemblersprache zu entwerfen :)

32

An einem Punkt (in den 90er Jahren) MIPS-abgeleitete Prozessoren waren die meistverkauften Prozessoren der Welt, die Verkäufe von Intel x86-Prozessoren. Dies lag an ihrer großen Präsenz auf dem Embedded-Markt. Ich denke, jetzt haben ARM-basierte Prozessoren diesen Titel übernommen, aber es gibt immer noch Tonnen von Embedded-Systemen mit MIPS.

Auch wenn Sie in Ihrer Karriere nie einen MIPS-Chip in Assembler programmieren, kann die Assemblersprache hilfreich sein. Es kann Ihnen helfen, effizienteren Code auf höherer Ebene zu schreiben, wenn Sie eine Vorstellung davon haben, was der Compiler ausgeben wird. Weitere Bereiche, in denen es noch verwendet wird, sind Compiler (selbst schreiben), Gerätetreiber und Multimedia-Programmierung (wo Code, der MMX oder SSE benötigt, in Assembler normalerweise noch von Hand geschrieben wird).

Jeder CPU-Typ hat einen anderen Befehlssatz, aber es gibt genug Gemeinsamkeiten, dass, sobald Sie einen Dialekt der Assembly lernen (MIPS in Ihrem Fall), die anderen einfach zu erlernen sein sollten.

6

Es ist hilfreich, die sehr niedrigen Werte des Computers zu verstehen. Zum Beispiel gibt es Entwickler, die sagen, dass die CPU eine Art "neuer Objekt" -Anweisung ausführt. Es gibt natürlich keine solche Anweisung, das Management von Objekten passiert mehrere Abstraktionsebenen höher. Es ist gut, die Unterscheidung zu verstehen, damit Sie verstehen können, warum die Objekterstellung teuer sein kann (oder nicht) oder warum geschützte Adressräume das System robuster machen können.

Als ich in der Schule war, wurde der Montagekurs auf dem IBM Mainframe mit dem System/360 Befehlssatz gelehrt. Ich habe nie zu irgendeinem Zeitpunkt meiner Karriere an einer solchen Maschine gearbeitet, aber das Wissen darüber, wie die CPU aussieht, war wertvoll.

Heute arbeite ich an eingebetteten Systemen mit MIPS-Prozessoren. Ich verbringe tatsächlich eine angemessene Zeit damit, über MIPS-Assembly-Listings nachzudenken und schreibe eine MIPS-Assembly für die Boot-Vektoren und Synchronisationsprimitive. Aber auch wenn Sie nie etwas in Assembly schreiben, ist es immer noch nützlich, den CPU-Betrieb zu verstehen.

3

Mit "Mips Programmiersprache" nehme ich an, du meinst MIPS Assembly Language.

Das Erlernen einer Assemblersprache ist von Vorteil. Sie hilft Ihnen, den Code, den Sie schreiben, so abzubilden, wie er auf der Hardware läuft. Dies kann dazu beitragen, dass Sie sich tiefer liegenden Problemen wie Cache-Fehlern, Verzweigungen, Out-of-Order-Ausführung und anderen Dingen, die Sie nicht über das Schreiben von High-Level-Code denken würden, aussetzen.

Wetter lernen MIPS Montage ist nützlich für Sie hängt davon ab, welche Karriere Sie planen, zu folgen.Persönlich denke ich x86/x64 (beliebt in PCs, direkt anwendbar, wenn Sie C++ oder C# auf PC schreiben), PPC (Popularität gewinnt, in Spielkonsolen verwendet wird und Sie auch RISC aussetzt) ​​oder ARM (in vielen eingebetteten Geräten verwendet wie Mobiltelefone) könnte eine bessere Wahl zu lernen sein.

2

Mips scheinen in eingebetteten Systemen zurück zu kommen. @ [sk] hat eine bessere Zusammenfassung als ich, aber ich habe ein aktuelles Beispiel:

Broadcom Wifi-Karten in diesen Tagen mit entweder MIPS oder ARM-Chips auf ihnen machen (Ich bin mir nicht sicher, was tho, Dokumentation sagt eine, Firmware sagt die andere). Aber auf ihren neueren Chips warten wir immer noch auf die Unterstützung von Linux mit allen aktivierten Funktionen. Aus diesem Grund bin ich froh, dass Sie lernen. (Jetzt bekommen und schreiben Sie mir einige Treiber: P)

2

Assembler Sprache ist immer wert, zu lernen. Sie werden wahrscheinlich nicht unterrichtet oder sehen, wie der Compiler Hochsprachencode in Assemblercode umwandelt, aber ich würde sagen, dass Wissen der wichtigste Vorteil der Kenntnis der Assemblersprache ist. Es ist ernüchternd, wie ineffizient viele Compiler selbst auf der höchsten Optimierungsebene sind. (Die meisten Compiler werden Assembly-Code für Sie auf Anfrage ablegen, anstatt auf Maschinencode und Verknüpfung zu gehen.)

Das heißt, MIPS asm ist wahrscheinlich nutzlos, weil fast niemand MIPS jetzt verwendet. (SGI verwendet, aber jetzt sind ihre Maschinen alle auf x86/IA-64-Chips.) Wenn Sie Assemblersprache ansprechend finden und in der Montage weiter arbeiten möchten, lernen Sie den ARM-Befehlssatz. ARM ist nur ein wenig komplexer als MIPS, und praktisch alle Mobiltelefone, Smartphones und PDAs verwenden jetzt ARM-Chips (hergestellt von Dutzenden von Herstellern). Der iPod verwendet ARM, wie ich glaube, die Zune.

2

MIPS ist eine großartige Sprache, um die Montage mit zu erlernen. Sie haben viele allgemeine Register, um das Schreiben Ihrer Programme weniger mühsam zu machen, und es ist eine RISC-Architektur, so dass Sie weniger Anweisungen zum Auswendiglernen brauchen.

Einige der Mainstream-Nutzung, die nicht viele Leute erwähnen, ist, dass die N64, Playstation 1, Playstation 2 und PSP alle MIPS-Prozessoren verwendet.

+3

Ich bin mir ziemlich sicher, dass das N64 auch einen MIPS-Prozessor hatte. – Ibrahim

2

In Ihrem Fall denke ich, MIPS wird als Tutor Hilfe verwendet. Dies ist ein Computer Science-Kurs und anstatt Code-Monkey-Tools zu geben, versuchen sie, Ihnen breite Konzepte zu vermitteln, die einfacher auf einer einfacheren Architektur wie MIPS statt auf x86 veranschaulicht werden.

Erwarten Sie nicht, dass es in Ihre "Toolbox für Programmierer" eintritt. Für den praktischen Zweck des Schreibens von Low-Level-Code, sollten Sie besser x86 Assemblersprache lernen.

0

Ich habe letztes Jahr MIPS studiert. MIPS ist eine wichtige Sprache, aber unglücklicherweise, und wahrscheinlich werden Sie MIPS nie benutzen. Sie werden einige Grundlagen lernen, aber keine Zeit damit verschwenden, mehr zu lernen, als Sie brauchen, weil es im Vergleich zu anderen Sprachen nicht viele Jobs in MIPS gibt.

0

Ich denke, es hängt davon ab, in welchem ​​Bereich in CS du nach dem Abschluss schießen willst. Wenn Computer-Architektur das ist, was Sie tun wollen, dann sage ich, dass es so ist. Ich denke, dass ein guter Softwareentwickler mit dem allgemeinen Konzept, wie eine Assemblersprache funktioniert, umgehen, umgehen und weiterleiten und schließlich, wie Ihr Code für die Cache-Leistung optimiert werden kann. (Räumliche Lokalität/zeitliche Lokalität)

1

Hier sind 3 gute Gründe, die Montage zu erlernen.

  1. Bestimmte kleine Teile von Programmen sind besser in Assembler geschrieben als in einer höheren Sprache.
  2. Alte Assemblierungsprogramme müssen möglicherweise debuggt oder verbessert werden.
  3. Learning in der Montage zu programmieren, wird Ihnen helfen, präzise Modelle zu entwickeln, was für ein Prozessor tut und was ein Compiler tut.

Der dritte Grund ist bei weitem der wichtigste. Zu wissen, wie Ihre Hardware Arbeiten werden sehr Ihr Verständnis der Informatik und wiederum helfen vertiefen Ihnen ein besserer Entwickler zu werden.

Verwandte Themen