Was sind die verschiedenen Arten von Assemblersprachen?


Beste Antwort

Fast alle diese Antworten beantworten eine andere Frage, nämlich den Prozessortyp, den die Assemblersprache unterstützt. Eine tatsächliche Assemblersprache kann jedoch unabhängig vom Prozessortyp in drei verschiedene Typen eingeteilt werden.

  1. Eine grundlegende Assemblersprache. Dies übersetzt nur Anweisungen in Opcodes. Nichts Besonderes. Die meisten davon sind für winzige eingebettete Maschinen. Ich habe 1979 eine für die 8080/8080 / z80 geschrieben. Es hat nicht einmal Vorrang für seine eingeschränkten Ausdrücke erkannt.
  2. Eine normale oder typische Assemblersprache, die (1) tut, aber auch Pseudoanweisungen und Anweisungen enthält, die festgelegte Codesegmente festlegen, Datenblöcke und vieles mehr erzeugen können . Die meisten Assembler sind von dieser Art.
  3. Eine Makroassemblersprache. Ein guter hat eine umfangreiche Makrosprache mit Schleifen, Substitution und vielem mehr. Sie können sehr mächtig sein. Der IBM 360 Assembler ist ein gutes Beispiel dafür. Der Microsoft x86 / x64-MASM-Assembler ist ebenfalls ein Beispiel dafür.

Das folgende Beispiel zeigt ein Makro in MASM, das ich in meinem Code verwende, um die Assemblersprache für verschiedene Compiler portierbar zu machen. Entschuldigen Sie den Umlauf.

;

; This macro declares an external data element.

;

External macro dName:req, dType:req

local dataName, xName

xName textequ

forc chr, <&dName>

ifidn <&chr>, <\_>

xName textequ

else

xName catstr xName, <&chr> ;;catstr &xName, &chr

endif

endm

if (\_borland eq true)

dataName catstr <\_>, <&dName&> ;; extern "C": Borland"s 5.5.1 C++

elseif (\_comeau eq true)

dataName catstr <\_>, <&dName&> ;; extern "C": Comeau 4.2.45.2 C++

elseif (\_gnu eq true)

dataName catstr <\_>, <&dName&> ;; extern "C": GNU 2.95.3-5 C++

elseif (\_ibm eq true)

dataName catstr <\_>, <&dName&> ;; extern "C": IBM VisualAge 4.0 C++

elseif (\_intel eq true)

dataName catstr <\_>, <&dName&> ;; extern "C": Intel 5.0.1 reference C++

elseif (\_microsoft eq true)

if (\_x32 eq true)

dataName catstr <\_>, <&dName&> ;; extern "C": Microsoft Visual Studio

else

dataName textequ <&dName&> ;; extern "C": Microsoft Visual Studio

endif

elseif (\_clr eq true)

if (\_x32 eq true)

dataName catstr <\_>, <&dName&> ;; extern "C": Microsoft Visual Studio with -clr option

else

dataName textequ <&dName&> ;; extern "C": Microsoft Visual Studio with -clr option

endif

endif

extern dataName:dType

\%xName equ dataName

endm

Antwort

Gibt es viele Arten von Assemblersprachen oder gibt es? Assemblersprache eindeutig?

Ja, es gibt viele Typen, mindestens RISC (im Allgemeinen 3-Operanden, Laden / Speichern mit vielen Registern) und CISC (im Allgemeinen 2-Operanden und im Gegensatz zum Laden) / store, kann im Speicher arbeiten, ohne zuerst in ein Register geladen zu werden.

Das beliebteste RISC ist ARM (aber es sind streng zwei oder drei Architekturen, zumindest ARMv8 ist wirklich unterschiedlich) und z MIPS eine andere Variante. Das beliebteste CISC ist x86 von Intel (und z. B. AMD, das die 64-Bit-Erweiterung x86-64 hergestellt hat). Es wird immer noch ein anderes CISC für IBMs Mainframes verwendet.

VLIW ist ein anderes (und Intels EPIC eine Art Variante davon), wobei viele solche CPU-Typen einschließlich TI hergestellt haben.

Einige obskur ist ein Befehlssatzcomputer – Wikipedia (OISC), meist eine theoretische Übung.

Es gibt auch Computer mit Null-Befehlssatz – Wikipedia (ZISC), daher bin ich mir nicht sicher, ob eine Assembly angewendet wird. 🙂

Und transportgetriggerte Architektur – Wikipedia ist die letzte von oben. Gibt es andere?

Von allen Computerarchitekturen mit einem Befehlssatz ist die TTA-Architektur eine der wenigen, auf denen Prozessoren basieren Es wurde gebaut und der einzige, auf dem Prozessoren basieren, die kommerziell verkauft werden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.