Ein Assembler in der Informatik ist ein spezieller Compiler, das ein in einer maschinennahen Assemblersprache geschriebenes Programm in Maschinensprache übersetzt. Oft wird der Ausdruck Assembler auch als Abkürzung oder Synonym für Assemblersprache verwendet.
Zu beachten ist, dass verschiedene Prozessorarchitekturen grundverschiedene Assembler- und Maschinensprachen haben, so dass jeweils ein zur aktuellen Architektur passender Assembler benötigt wird. Es gibt jedoch Assemblerfamilien, welche bei gleich bleibender Makrosprache und Arbeitsumgebung mehrere Prozessoren unterstützen (z. B. GNU Assembler).
Die einfachste Version eines Assemblers, kombiniert mit der Möglichkeit, Programme interaktiv zu testen und zu analysieren, wird Maschinensprachemonitor genannt. Makroassembler gestatten die Bildung von parametrisierbaren Befehlsgruppen. Eine Makroanweisung wird im allgemeinen in mehr als einen Maschinenbefehl umgesetzt.
Assemblersprache wird immer seltener eingesetzt. Der Möglichkeit der Erstellung effizienter Programme steht die erschwerte Wartbarkeit von Assemblerprogrammen gegenüber.
Maschinennahe Programmierung – die Domäne von Assembler – kann heute fast vollständig durch höhere Programmiersprachen abgedeckt werden. Auch ist die Programmierung heutiger Prozessoren in Assemblersprache zur Geschwindigkeitsoptimierung schwierig, da zahlreiche Nebenbedingungen eingehalten werden müssen, damit der Prozessor in optimaler Geschwindigkeit läuft, während auf der anderen Seite optimierende Compiler für Hochsprachen immer besseren Code erzeugen und diese Bedingungen automatisch erfüllen können.
Einige Programmiersysteme für höhere Programmiersprachen gestatten es, Assemblerbefehle in den Quelltext mittels Inline-Assembler zu integrieren. Die Anwendung kann sich dann auf die Situationen beschränken, in denen es aus funktionalen oder Effizienzgründen notwendig oder nützlich ist, maschinennah zu programmieren.
Siehe auch: Cross-Assembler
Beim Assembler werden die Opcodes der jeweiligen CPU mit Namen, den sogenannten Mnemonics, angegeben, während Hochsprachen die Umsetzung in Opcodes über mehrere automatisierte Abstraktionsebenen hinweg bewerkstelligen. Dadurch werden Eigenschaften wie etwa eine bestimmte Registerbreite vor dem Programmierer versteckt. In Assembler sind nur Operationen im Rahmen der möglichen Register- und Operationsgrößen der CPU möglich. Oftmals sind Pragma-, Präprozessor- und Makrofähigkeiten in Assemblern möglich, die sich aber nur bedingt mit den Möglichkeiten von Hochsprachen vergleichen lassen.
Assembler sind häufig extrem einfach aufgebaut und daher meist auch sehr schnell. Compiler hingegen übersetzen oft zunächst das Programm in eine Zwischensprache, die dann an einen Assembler weitergeleitet und in das letztlich benötigte Maschinenprogramm umgewandelt wird. Bei modernen Compilern erfolgt dieser Schritt implizit.
Die Tätigkeit des Disassemblierens ist bei urheberrechtlich geschützten Programmen durch Copyright-Bestimmungen reglementiert bis verboten, da das Disassemblieren die Möglichkeit eröffnet, den Code einfach zu ändern und danach wieder in ein Programm zu assemblieren. So könnte z. B. von erfahreneren Assembler-Programmieren und Crackern eine Passwortabfrage entfernt, eine aus lizenzrechtlichen Gründen abgeschaltete Funktion aktiviert, oder ein Virus unbemerkt in das Programm eingeschleust werden. Ausführliche Erläuterungen zu diesem Aspekt von Disassemblern und vergleichbaren Werkzeugen finden sich im Artikel Reverse Engineering.
Auf IBM-Großrechnern (zSeries) wird der High Level Assembler verwendet, Hercules-Anwender müssen entweder den veralteten Assembler Assembler-F benutzen oder aber den Tachyon Legacy Assembler verwenden, welcher unter Linux für z/Series läuft.
Für die Mikrocontrollerfamilie MCS-51 von Intel, deren erster Vertreter der 8051 war, gibt es Entwicklungsumgebungen mit integriertem Assembler wie das Prog-Studio 2006, sowie freie Tools wie den Macroassembler ASEM-51. Heute gibt es bereits hunderte von 8051-Derivaten von über 50 Halbleiterherstellern.
Siehe auch: Betriebssystem
Assembler | Ensamblador | אסמבלר | Assembler (Informatik) | Asembleris | Asembler | Ассемблер | Assembler
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Assembler (Informatik)".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world