Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

assembler - wie funktioniert das

Alekom / 45 Antworten / Flachansicht Nickles

Hallo Leute,

Was Assembler ist weiss ich ja, es sind mnemotechnische Abkürzugen für binäre Einheiten.

Zumindest hab ich das so verstanden. Also anstatt alles in 0 oder 1 zu programmieren, hat man Assembler-Befehle entwickelt.

Und genau da hapert bei mir das Verständnis.

Wie entwickelt man solche Befehle?

Sind diese in einem Chip verdrahtet, so das ein Chip 1 Befehl darstellt oder wie kann man das verstehen?

Weil ja irgendein Register muss ja diese Befehle verarbeiten, aber wie  zum Teufel merkt er sich solche Abkürzungen?

Ich habe noch nirgends wo was gelesen wie solche Befehle "gemacht" werden.

zb Beispiel der Befehl Mov

aus was besteht der und wo wird der "abgelegt" oder "eingegossen"?

ich hoffe meine Frage verständlich ausgedrückt zu haben.

netten Gruß

Alekom

Alles hat seinen Sinn, auch das scheinbar Sinnlose, denn es gibt nichts ohne Sinn.
bei Antwort benachrichtigen
Borlander Alekom „Wo wird Assembler zum dem, was letztendlich als Ergebnis heraus ...“
Optionen
Aber das ist dann "nur" mathematisches Vorgehen, was passieren muss, wenn ich entsprechende Elektronik nach einen gewissen Schema verdrahte?

Irgendwie verstehe ich diese Frage nicht.

das diverse Befehle nur ausgemachte Sachen sind, also Befehl Move könnte dann auch Befehl Hudriwudri heissen.

Könnte er. Aber das wäre nicht so viel hilfreicher als die Binärrepräsentation des Maschinencodes (oder Programme in der Sprache Brainfuck). Eigentlich hattest Du doch selbst schon im ersten Satz Deines Startpostings darauf hingewiesen, dass die "ASM-Befehle" lediglich einfach zu merkende Kürzel sind.

Stimmt mein Denken: Ein Befehl = eine spezifische Verdrahtung *und nix softwaremäßiges*

Das kommt auf die CPU-Architektur an. Bei einfachen RISC-CPUs könnte das tatsächlich so sein, bei x86 CPUs kann man eine solche 1:1-Zuordnung aber ausschließen. Wenn Du selben Befehl mit unterschiedlichen ggf. beliebig kombinierbaren Operanden nutzen kannst, dann wird man bei der Ausführung mehrere "Teilbefehlsverdrahtungen kombinieren". Z.B. könnte eine einfache Addition:

ADD EAX, EBX

aus folgenden Teilen bestehen:

  • Verbinde Register EAX mit Operandeneingang 1 und Ausgang des Rechenwerks
  • Verbinde Register EBX mit Operandeneingang 2 des Rechenwerks
  • Nutze das Addierwerk (dort passiert dann die eigentliche Arbeit)
bei Antwort benachrichtigen