Funktionsweise

Status
Nicht offen für weitere Antworten.

Daniel54

Mitglied
Hallo,

habe eine Frage zum Ablauf. Also wenn ich einen Java-Quellcode kompiliere habe ich einen Bytecode und diesen kann ich dann mit der JVM in Maschinensprache umsetzen.
Aber wenn die Daten dann an der CPU ankommen, woher weiß die wie die mit den Daten umgehn soll und was das für Befehle sind ? und wie werden die Befehle dann dargestellt ?
Freue mich auf Antworten .
Gruß Daniel
 

Lim_Dul

Top Contributor
Die VM setz den ByteCode in Maschinencode um.

Wenn du wissen willst, wie Maschinencode funktioniert, empfehle ich dir ein gutes Buch über Assembler. Assembler ist extrem maschinennah, dort darfst du dann direkt mit den Registern der CPU rumspielen und Unsinn bauen :)
 

Daniel54

Mitglied
Ja wie die CPU z.B. weiß was eine gui ist und die dann darstellt auf dem Monitor ?
Die Daten kommen ja alle im Maschinencode an aber woher weiß die CPU was Maschinencode ist ? Wie geht die CPU mit den ganzen Befehlen um und wie gelangen die dann auf den Monitor ?
 

Daniel54

Mitglied
Ich les mir das mal durch, aber eine kurze Beschreibung wäre hilfreich, weil ich gerade das Java-Handbuch von Guido Krüger lese.
Gruß
 

Daniel54

Mitglied
Ja, aber das interessiert mich irgendwie, wie die Daten da verarbeitet werden und dann angezeigt werden können.
Ist auf der CPU vllt ein Befehlssatz gespeichert, der den Maschinencode lesen kann und so weiter zum Ausgabemedium schicken kann.
 

Lim_Dul

Top Contributor
Mit dem Thema kann man ganze Vorlesungen füllen ;)

Grundsätzlich ist die Sache, dass die CPU ein paar Befehle versteht. Diese werden durch Bitmuster dargestellt (1101011...). Weiterhin stehen der CPU ein paar Speicherplätze in der CPU, die sogenannten Register zur Verfügung.

Dann gibt es Beispielsweise Befehle um 2 Register zu addieren, einen Wert aus dem Register in den Speicher zurückzuschreiben oder den Wert aus dem Speicher zu holen oder auf irgendeinen Ausgabebus zu schreiben, der Beispielsweise die Graphikkarte sein kann. Das ganze ist, insbesondere mit der modernen Computerarchitektur, ein ganzes Stück komplexer, aber im groben und ganzen ist die Funktionsweise.

Und diese Befehle sind in der CPU fest verdrahtet, durch logische Schaltungen. Beispiels ist die sogeannte ALU für die Rechenoperationen zuständig: http://de.wikipedia.org/wiki/Arithmetisch-logische_Einheit
 

Caffè Latte

Bekanntes Mitglied
Hi,

hier ist ein PDF, das dich mit wenig mehr als 40 Seiten deinem Ziel etwas näher bringt. Wenn dann noch was unklar ist, kannst du ja noch mal vorsichtig anfragen. ;)
 

AlArenal

Top Contributor
Daniel54 hat gesagt.:
Ja, aber das interessiert mich irgendwie, wie die Daten da verarbeitet werden und dann angezeigt werden können.
Ist auf der CPU vllt ein Befehlssatz gespeichert, der den Maschinencode lesen kann und so weiter zum Ausgabemedium schicken kann.

Ach herrje.. ;)

Grundsätzlich liegt mal alles in binärer Form (0 und 1) in sog. Bits vor. Die Befehle eines Mikroprozessors bestehen aus einer Aneinanderreihung von Bits und aus der Abfolge erkennt der Prozessor bei Befehlen, was er tun soll. Das alles passiert auf sehr niedrigem Abstraktionsniveau, die CPU weiß nichts von Objekten, geschweige denn von Bildschirmen und Fenstern. Sie kennt, vereinfacht gesprochen, nur Adressen (die die Position im Hauptspeicher angeben), Daten und Befehle. Sie hat einen gewissen festen Satz an Befehlen, die sie versteht und darauf beruht alles. Im Grunde kann sie nur Daten bewegen und in Rechenoperationen manipulieren.

Eine Funktion, die z.B. das Betriebssystem bereitstellt, um ein Fenster aufzurufen, würde z.B. verlangen, dass man den Prozessor anweist die Befehlsausführung an der Adresse fortzusetzen, an der Maschinencode dieser Funtion im Speicher steht. Die von der Funktion benötigten Parameter müssen dazu in bestimmter Konstellation auf einem speziellen Speicherbereich, dem Stack, abgelegt worden sein. Von dort liest sie die Methode ein und verarbeitet sie weiter.

Ganz ganz ganz ganz grob vereinfach...

Besorg dir mal online Infos über Assembler / Maschinensprache, oder ersteigere dir bei eBay nen C-64 und programmier den in Maschinensprache (geht bestimmt auch mit irgendwelchen CPU-Simulatoren unter Windows oder so, ich kenne mich da aber nicht aus).
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben