Es tut mir leid, wenn dies dumme Fragen sind oder sich nicht auf diese Website beziehen. Ich weiß nicht wirklich, wo ich das sonst fragen könnte.
Okay, zunächst einmal verstehe ich nicht wirklich, wie Befehlssätze auf Mikroprozessoren funktionieren. Werden sie durch eine Assemblersprache implementiert? Verwendet Intel die gleichen Befehlssätze für alle Mikroprozessoren einer Reihe von CPUs wie Haswell oder Ivy Bridge oder unterscheidet sich jeder spezifische Mikroprozessor? Ich dachte immer, dass Mikroarchitektur das gleiche ist wie der Befehlssatz, aber anscheinend ist es nicht. Kann mir das auch jemand erklären? Und eine letzte Sache: Gibt es einen Ort, an dem man die Befehlssätze von Intel- oder AMD-Mikroprozessoren einsehen kann?
Vielen Dank im Voraus.
Antworten:
Wenn Sie eine Liste von Anweisungen für eine CPU benötigen, benötigen Sie im Allgemeinen die Referenz zum Befehlssatz dieser CPU oder die Referenzanleitung für Programmierer.
Intel: http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html
AMD: http://developer.amd.com/resources/documentation-articles/developer-guides-manuals/ (Handbuch für Architekturprogrammierer)
Intel verfügt über mehrere Prozessorarchitekturen, wobei x86 seine (und die) beliebteste ist. x86 wurde (und wird) im Laufe der Zeit erweitert, im Allgemeinen sind spätere Versionen mit früheren Versionen abwärtskompatibel. Der erste x86-Architekturprozessor von Intel war beispielsweise der 8088. Dann kam der 80286 heraus. Es erweitert den 8088-Befehlssatz. 80286 versteht alle 8088 Montage. Und so weiter in 80386, 80486, Pentium, der Core-Serie und der i-Serie.
Nein. Die Mikroarchitektur ist "unter" und implementiert die Hauptarchitektur. In diesem Fall verfügt Intel über viele Mikroarchitekturen, die verschiedene Revisionen des x86-Befehlssatzes implementieren. Die Mikroarchitektur ist nichts, worüber Sie sich Gedanken machen müssen, um Assembler-Programmierung zu lernen. Sie müssen wissen, welche x86- Revision (oder Architektur, nicht Mikroarchitektur ) Sie verwenden, da z. B. Pentium Anweisungen hat, die 80386-Prozessoren nicht verwenden. Vielleicht möchten Sie mit einem Buch beginnen oder etwas, das Ihnen das Programmieren eines 8088 lehrt, da es einfacher ist und spätere Architekturrevisionen (286, 386 usw.) darauf aufbauen.
Mithilfe der Assemblersprache können Sie als Programmierer Maschinensprachen schreiben, die einem für Menschen lesbaren Text ähneln. In der Regel können Sie Beschriftungen verwenden, anstatt sich unformatierten Arbeitsspeicher oder E / A-Adressen zu merken. Die Alternative wäre, die Operationscodes jedes Befehls manuell einzugeben, was angesichts der Anzahl der Befehle und der Adressierungsmodi, die x86 hat, eine sehr mühsame Aufgabe ist.
Jede Anweisung wird durch eine Mnemonik dargestellt und in eine einzelne Maschinensprachenanweisung übersetzt. Ein Assembler nimmt Ihren Assembler-Code (in einer Textdatei) und setzt ihn zu einem Binär-Image zusammen (NICHT kompilieren), das die CPU ausführen kann.
AMD kopierte Intels Befehlssatz, begann jedoch mit SSE-Befehlen, VMM-Befehlen und möglicherweise anderen Dingen zu divergieren. Das meiste, was Sie für Intel Assembly lernen, wird jedoch angewendet.
quelle