Was ist Maschinencode? Wie werden Bauteile angesteuert?

Hallo zusammen,

ich wüsste mal gerne wie man elektrische, elektronische oder elektromechanische
Bauteile mithilfe v. Software ansteuert? Und wie genau funktioniert ein Interpreter?
Hat jedes anzusteuernde Bauteil eine eigene Adresse? Schaltet man letztlich alles
mit Nullen und Einsen an bzw. aus?? Ist der Interpreter ein Programm, welches die
grobe Programmiersprache in Nullen und Einsen umwandelt? Aber, wo sitzt dieser
Interpreter? Etwa fest in Chips eingebrannt? Und diese Nullen und Einsen leitet er
dann durch die Schaltkreise weiter zu den Bauteilen (Schaltern/Relais). Richtig?

Kann ich mir das so in etwa vorstellen?

Danke und viele Grüße,
Yedi386

Da würd ich mal ganz einfach ein Anwendungsfall durchlesen
http://lehrerfortbildung-bw.de/faecher/nwt/fb/mikro/…

Hallo TechPech und vielen Dank für Deine interessante Verlinkung.
Leider wird dort viel beschrieben was der Mensch macht und lernt,
jedoch weniger wie es im Hintergrund im Computer funktioniert und
verarbeitet wird. Gerade aber jene Abläufe interessieren mich. Wa-
rum bzw. wodurch hat ein Bauteil überhaupt einen Maschinencode,
mit dem es angesteuert werden kann (wodurch, - nicht warum!)

Also von Nullen und Einsen, und was diese genau bewirken in den
Bauteilen, habe ich nichts in der Verlinkung lesen können.

Viele Grüße,
Yedi386

Ich stelle die Frage so, als wie wenn ich…
Nachtrag

ich stelle die Frage so, als wie wenn ich den ersten Computer selber bauen wollte.
Oder als wie wenn ich vor einem uralten Webstuhl stünde, den man mit Lochkarte
programmieren konnte. Wie funktioniert das?

Wie sage ich einer Maschine anhand von Nullen und Einsen in Kombination, jetzt
mal anhand des Webstuhls gedacht, was sie tun soll?? Und wo ist beim Webstuhl
der Interpreter, der das ausliest und umsetzt?

Danke und viele Grüße,
Yedi386

Hallo Yedi386,

Und wie genau funktioniert ein Interpreter?
Aber, wo sitzt dieser Interpreter? Etwa fest in Chips eingebrannt? Und diese Nullen
und Einsen leitet er
dann durch die Schaltkreise weiter zu den Bauteilen
(Schaltern/Relais). Richtig?

Grundsätzlich kann eine CPU nur Zahlen verarbeiten, alles andere ist eine Illusion!

Die Zahlen bestehen aus Nullen und Einsen (den Bits), welche nach logischen Regeln miteinander verarbeitet werden können. Desweiteren kann man mehrere Bits z.B. zu Bytes (8-Bit) zusammenfassen.

Buchstaben kennt eine CPU auch nicht, diese werden als Zahlen abgelegt. Also in der Art: 1=A, 2=B, 3=C …

Die CPU kennt festgelegte Befehle, wie z.B. „Addiere A und B“ oder „Speichere A an Speicherstelle xyz“. Diese Befehle sind dann Durchnummeriert und werden auch wiederum als Zahl gespeichert.
Welche Befehle eine CPU kennt und welchem Befehl welche Nummer zugeordnet ist, bestimmt der Hersteller der CPU und ist dann in entsprechenden Dokumenten beschrieben.

Eine sinnvolle Anordnung dieser Befehlscodes ergibt dann ein Programm. Normalerweise arbeitet die CPU einen Befehl ab und danach den nächsten darauf folgenden. Es gibt eine spezielle Gruppe von Befehlen, welche diese lineare Abarbeitung umlenken können. Teilweise erfolgt diese Umleitung aber nur, wenn bestimmte Bedingungen erfüllt sind, also wenn z.B. A den Wert Null hat, geht es linear mit dem nächsten Befehl weiter, andernfalls wird der Code an einer anderen Stelle fortgesetzt.

Dies wäre jetzt die Beschreibung des binären Programms, Ist Ideal für Maschinen, aber Programme müssen von Menschen erstellt werden und wer kann sich schon diese ganzen Zahlen merken?

Dieses Problem hatte Lady Ada schon vor über 150 Jahren :frowning:
http://de.wikipedia.org/wiki/Ada_Lovelace
Sie erfand dann die Mnemonics, wodurch die Assemblersprache erfunden war. Sie ordnete den Codes Buchstabenkürzel zu, also JMP für JuMP, ADD für Addition, SUB für SUBtraction usw. Damit wurden die Programme für Menschen lesbar, aber die CPU kann damit nichts anfangen. :frowning:
Also hat man ein Programm entwickelt, den Assembler, welcher im wesentlichen die Mnemonics mit den entsprechenden Codes ersetzt. Man erstellt also eine Datei im Assemblerformat und der Assembler erzeugt daraus eine neue Datei mit dem binären Programmcode (Maschinencode), welcher dann die CPU abarbeiten kann.

Nun ist aber Assembler eine recht primitive Sprache, welche ursprünglich nur aus den grundlegenden logischen Verknüpfungen bestand, kompliziertere Befehle hätten einfach zu viele Transistoren benötigt. Also konnte so eine CPU nur Addieren und Subtrahieren. Eine Multiplikation musste also schon als Programm erstellt werden.
Ein anderes Problem ist, dass Assembler immer nur zu einem bestimmten CPU-Modell passt. Nimmt man eine CPU einer anderen Modellreihe, muss das Assemblerprogramm an dieses angepasst werden.

Daraus entstand dann die Idee der höheren Programmiersprachen.
Hier muss dann der Programmierer keine Ahnung vom Maschinencode mehr haben und ein einzelner Befehl in der Hochsprache wird dann in hunderte Maschinenbefehle übersetzt, welche die CPU dann ausführt.

Das doofe an den Hochsprachen ist dann aber, dass die CPU damit noch weniger anfangen kann. Also muss da wieder ein Programm her …
Die Aufgabe dieses Programms ist es dann den Programmtext zu analysieren, bei ungültigen Konstrukten Fehlermeldungen auszugeben und andernfalls entsprechenden Maschinencode für die CPU bereit zu stellen.
Diese Übersetzungsprogramme sind entweder Compiler oder Interpreter.

Ein Interpreter analysiert die aktuell auszuführende Code-Zeile und ruft dann entsprechende Unterprogramme auf um die Aufgabe abzuarbeiten. Dann macht er mit der nächsten Zeile weiter. Allerdings vergisst er dabei alles was er schon analysiert hat. Wird also so eine Code-Zeile mehrfach abgearbeitet, dann muss sie auch entsprechend oft analysiert werden. Der Vorteil eines Interpreters ist aber, dass er relativ einfach und klein ist. Somit kann ein Interpreter fest im ROM eines Computers abgelegt werden. Da ein Programm immer nur Zeilenweise betrachtet wird, gibt es Einschränkungen für die Programmiersprache.
Eine typische Interpretersprache war BASIC.

Ein Compiler analysiert das ganze Programm und erzeugt daraus Maschinencode. Zur Ausführung wird dann nur noch die Datei mit dem Maschinencode benötigt. Compiler sind aber grosse und komplizierte Programme. Durch die Analyse des gesamten Programms, kann ein Compiler aber auch noch Optimierungen durchführen, typisch ist die Optimierung nach möglichst schnellem oder möglichst kompaktem Code. Desweiteren kann ein Compiler auch Code aufdecken, welcher gar nie ausgeführt werden kann, ein Interpreter merkt das nicht.

Compiler werden oft auch als Crosscompiler eingesetzt. Dabei läuft dann der Compiler auf einem PC und erzeugt Code für einen Micro Controller welcher eine ganz andere CPU und gar kein Betriebssystem besitzt.

MfG Peter(TOO)

Moin,

wo ist beim Webstuhl der Interpreter, der das ausliest und umsetzt?

das ist der Taster, der auf dem Lochstreifen nach Löchern sucht und je nachdem, ob Loch oder keins, dafür sorgt, dass der Kettfaden angehoben wird oder eben nicht.

Gruß Ralf

Die einfachsten Computer
Hallo Yedi386

du kannst Dir sicher Lochkarten- oder Webstuhl-Artikel durchlesen, oder Dir ein gutes Buch beschaffen.

Für ein erstes Verständnis ist aber eine offene Spieluhr das einfachste. Der etwa 20 Bit breite Datenträger dreht sich an den Stimmzungen vorbei und aktiviert sie bei einer 1 (Erhebung) und halt nicht bei einer 0.

Genauso läuft das in einfachen elektrischen Schaltungen: Die x Ausgänge eines Registers schalten (z.B. über einen Transistor) x Motoren, Ventile oder Lampen an (1) oder aus (0).

Mit diesen Grundlagen kann man die Aktivität dahinter und davor beliebig erweitern. eine Erhebung der Spieluhr kann z.B. über Hebel und Co eine Eieruhr starten, nach deren Ablauf 3 weitere Spieluhren starten. In der Elektronik hast Du 1000de von Kombinatorik- und Logikgattern, aus denen Du Funktionalität basteln kannst. Die Beschränkung auf wenige Grundlegende CPU-Funktionalitäten ist dann eine Frage der Effizienz und Erfahrung.

Gruß
achim

Danke Euch allen
Hallo und vielen Dank an Euch alle! Mir ist es so laaaaaaaaangsam
schon etwas klarer geworden. Ich muss das jetzt erstmal sacken las-
sen. =)

Viele Grüße,
Yedi386

Hallo Yedi386,

Hier noch ein paar CPU-Simulatoren, da kannst du zusehen was so abgeht:

http://mikrocodesimulator.de/Detailinfo/cebit95_falt…
https://dokumente.unibw.de/pub/bscw.cgi/d6270183-7/*…
http://www.inf-schule.de/rechner/johnny/johnnysimulator
http://abs.informatik.uni-freiburg.de/teaching/Neumi…

MfG Peter(TOO)

Hallo Peter

aber Programme müssen von Menschen
erstellt werden und wer kann sich schon diese ganzen Zahlen
merken?

Das hätte ich auch nie für möglich gehalten aber diese „Aliens“ gibt und nicht mal wenige:smile:
Sowohl binär können sie das als hexadezimal.
Nicht nur das können sie, zeigst du ihnen einen beliebigen Hex File, dann erkennen sie sogar den Prozessor, geschweige was er alles mit dem Mist machen soll.
Unglaublich aber wahr:smile:

MfG Peter(TOO)

Balázs