Ich habe in x86-Architektur für meine vorherige Schule programmiert, und in einer neuen Klasse, die ich nehme, erfordert Kenntnisse von MIPS. Was sind die Hauptunterschiede zwischen Konzepten und Architekturen zwischen den beiden Welten? Dankx86 Assembly Programmer Konvertierung zu MIPS, was soll ich wissen?
Antwort
Es ist eine Weile her, seit ich bei MIPS ASM aussah, aber von dem, was ich ... erinnern Sie
Je nachdem, wie gut bereits wissen x86 Assembler-Sprache, ich glaube nicht, MIPS ASM zu schwierig sein wird, abholen. Offensichtlich ist es ein sehr reiner RISC-Befehlssatz, der viel einfacher ist als x86. Sie haben einige Datenbewegungsanweisungen (Laden/Speichern), einige arithmetische Anweisungen (addieren, subtrahieren, multiplizieren, Bit verschieben und maskieren) und Verzweigen (un/bedingter Sprung). Es gibt nicht zu viele Verzierungen zu diesen Themen.
Sie könnten sich ein wenig verwöhnt fühlen, wenn Sie MIPS ausprobieren und die unglaubliche Anzahl von Mehrzweckregistern zu Ihrer Verfügung haben. Sie wissen, wie x86 dazu neigt, mit 7-8 Allzweckregs zu kämpfen (abhängig davon, ob Sie ESP zählen)? Sie haben 32 GP-Regs in MIPS.
Eine Sache, an die man sich gewöhnen muss, ist das Pipelining, oder vielmehr die Implikationen des Pipelining. Wenn ein Befehl eine Addition ausführt und das Ergebnis in das Register r5 gehen soll, wird die Summe möglicherweise nicht verfügbar sein, wenn der nächste Befehl ausgeführt wird. Es kann einen anderen Zyklus oder 2 (erinnere mich nicht an die Besonderheiten) benötigen, bevor r5 die Summe hält. Also müssen Sie in Ihrem Code dafür planen. Eine weitere Implikation ist, dass ein Verzweigungsbefehl nicht sofort verzweigt (aufgrund des Pipelining kann es wiederum einen Zyklus oder 2 dauern). Daher müssen Sie sicherstellen, dass die Anweisung, die sich nach der Verzweigung befindet, den Programmzustand nicht auf seltsame Weise durcheinanderbringt (setzen Sie im Zweifelsfall einen NO-OP nach der Verzweigung).
Ich habe immer gefunden, dass die beste Art, ASM zu lernen, ein Programm in ASM zerlegen und anfangen, die Anweisungen nachzuschlagen. Laden Sie zu diesem Zweck eine MIPS-Toolchain herunter und installieren Sie sie (here's a great place to get up to date, cross-compiling toolchains for numerous architectures, including MIPS). Verwenden Sie es, um ein "Hello World" C-Programm sowie einige grundlegende mathematische Formeln zu kompilieren und führen Sie dann die MIPS-Version von 'objdump -d' auf der ausführbaren Datei aus. Studieren Sie die Ausgabe, beginnend mit der Funktion main(). Verstehen Sie, wie das C math auf MIPS ASM abbildet.
Viel Glück! Es ist nicht gerade trivial, aber wenn du bereits x86-Kenntnisse hast, denke ich, dass du wahrscheinlich andere ASM-Sets lernen kannst, ohne einen semesterlangen Kurs in diesem Thema belegen zu müssen.
danke! genau was ich brauchte! – Bonk
- 1. Was sollte ich wissen, wenn ich von MIPS auf x86-Assembly umschalte?
- 2. C zu MIPS Assembly
- 3. C zu MIPS Assembly Verwirrung
- 4. Was soll ich über Joomla wissen?
- 5. Syntaxfehler in MIPS-Assembly
- 6. Assembly mips branch error
- 7. Assembly MIPS TAl Anweisungen
- 8. Assembly Sprache x86 Irvine32
- 9. Was macht diese x86 Inline-Assembly?
- 10. x86 Assembly Referenzblatt
- 11. Ich muss wissen, was ich als Beispiel ansehen soll ...
- 12. Pig Latin in MIPS Assembly
- 13. x86 Assembly-Idiome
- 14. Drucken Integer zu Konsole in x86-Assembly
- 15. x86 Assembly Force Cache Store
- 16. Zwei sequentielle Verzweigungsbefehle in MIPS-Assembly?
- 17. Woher soll ich x64 Assembly lernen?
- 18. Laden x86 oder x64 Assembly
- 19. x86 Assembly extreme Anfänger Anfrage: "ungültige Befehlsoperanden"?
- 20. Understanding Assembly MIPS .ALIGN und Speicher Adressierung
- 21. Convert x86 Assembly Jump-Tabelle C
- 22. Was bedeutet "push ebp" in der x86-Assembly?
- 23. Assembly x86: Vergleichen von Zeichenfolgen funktioniert nicht
- 24. Geschützter Modus Tastaturzugriff auf x86 Assembly
- 25. vergleichen größer als in MIPS-Assembly
- 26. Code zu wissen, was?
- 27. Kompilieren Sie C zu MIPS Assembly in 7 Anweisungen?
- 28. Assembly MIPS cant lw from array
- 29. Wie die Adresse in MIPS-Assembly zu erhöhen?
- 30. Zweck der cmove-Anweisung in x86-Assembly?
Wenn Sie keine Ahnung haben, dann sollten Sie wirklich zuerst eine MIPS-Klasse nehmen. SO ist kein Ersatz für Bildung, wir können kein Semester in eine Antwort stopfen. –