Forum: PC Hard- und Software Warum verstehen Computer Programmiersprachen?


von Falke (Gast)


Lesenswert?

Im Rahmen einer Hausarbeit stehe ich vor oben genannter Frage. Dabei 
bezieht sich das Thema auf die Anfänge der Rechnertechnik, spezieller 
noch auf die Zuse Z3. Mir ist bekannt, dass die Z3 sogenannte Opcodes 
verwendete: http://de.wikipedia.org/wiki/Opcode
Jedoch ist mir als finaler Schritt zum "vollständigen" Verständis immer 
noch nicht klar, woher die Z3 wusste, was genau sie tun soll. Anders 
formuliert: Wie hat man es geschafft, dass sie bei Opcode X genau die 
Rechnung Y durchführte?
Ich wäre für Hilfestellungen jeder Art dankbar!

: Verschoben durch User
von Dennis (Gast)


Lesenswert?


von Harald W. (wilhelms)


Lesenswert?

Falke schrieb:

> ...Warum verstehen Computer Programmiersprachen?

Kein Prozessor versteht "Programmiersprachen". Sie verstehen nur
Maschinensprache. Maschinensprache ist eine bstimmte Bitanordnung
an den Eingängen. Diese Bitanordnung wird dann über Logikgatter
in die gewünschte Verarbeitung der an einem anderen Eingang liegenden
Daten umgewandelt.
Gruss
Harald

von Ich (Gast)


Lesenswert?

Der Opcode wird von einem "Befehlsdecoder" verarbeitet, der je nach 
auszuführendem Opcode unterschiedliche "Funktionen" aktiviert.

Beispiel:
http://relaiscomputer.de/skizzen/bild26.jpg

Je nach Opcode (Bit 1, Bit 2 und Bit 3 auf der linken Seite) wird Strom 
von oben auf nur eine der 8 Ausgänge geschaltet.
Einer der Ausgänge könnte beispielsweise für Addieren stehen, ein 
anderer für Subtrahieren, wieder ein anderer für logisches AND.

Die restlichen Bits des Opcodes können beispielsweise die Operanden 
auswählen, indem aus beispielsweise 8 möglichen Eingängen (z.B. 
Registern) einer ausgewählt wird.

von Falke (Gast)


Lesenswert?

Das ist mir klar. Ich hätte vielleicht die "Programmiersprache" 
rauslassen sollen, das ist im Grunde auch gar nicht das Ziel meiner 
Hausarbeit. Es geht viel mehr um eben diese Bitmuster, die du 
ansprichst. Woher weiß der Rechner beispielsweise was er bei einem 
bestimmten Bitmuster (der ja durch einen Opcode beschrieben werden 
kann)tun soll? Irgendwie muss man ja festgelegt haben, dass meinetwegen 
1011 Multiplikation bedeutet..

von Steel (Gast)


Lesenswert?

Ist etwas so als wenn du fragst "woher weiß die Birne an der Decke dass 
sie angehen soll wenn man den Schalter an der Wand betätigt".

von J. T. (chaoskind)


Lesenswert?

Hallo erstmal,

ich bin zwar nicht vom Fach, meine aber folgendes Verstanden zu haben:

Der Opcode wird in einem Steuerregister gehalten, welches dann 
entsprechend dem Wert bestimmte "Steuerpfade" freischaltet. Wenn du dann 
z.B. den Befehl Lade in RegisterX Wert Y ausführen lässt, wird der 
Befehl in seinen Wert assembliert, z.B. 00110010 X Y. Um es nochmal kurz 
zu betonen, das ist ausgedacht, ich weiß nun nicht, welcher Befehl da 
welchen Wert erzeugt, aber das kann man ja im Datenblatt nachschauen 
;-). Die 00110010 ist dann der Ladebefehl, und dieser bewirkt, das über 
die kleinen Transistoren die da "verbastelt" sind, entsprechende Pfade 
geschaltet werden, vom Eingang der den Wert Y hält zum RegisterX welches 
dann im nächsten Prozessortakt mit diesem beschrieben wird.

Ich hoffe, mit dieser Erklärung kannst du dir ein Bild machen =)

schöne grüße das chaoskind

von Falke (Gast)


Lesenswert?

Danke für den Link!

@Adler: Ich weiß nicht, welche Intention du hast, aber mach dich bitte 
über wen anders lustig..

von Decius (Gast)


Lesenswert?

Schau dir mal in Hardware aufgebaute Automaten (Moore und Mealy) an, 
diese kannst du dir als Entsprechung für das Steuerwerk eines Prozessors 
nehmen.

Wenn du dir einen einfachen Prozessor hernimmst, solltest du für jede 
Baugruppe des Prozessors die passende digitale Schaltung finden. Über 
die Kenntnis der Teilschaltungen, sollte sich die Gesamtfunktion 
erschliessen.

von J. T. (chaoskind)


Lesenswert?

Irgendwie kann ich mein Beitrag grad nicht mehr bearbeiten.. hab grad 
gesehen das du gefragt hast "irgendwer muss das doch festgelegt haben, 
das zb 0011 multiplikation bedeutet". Genau das hat jemand festgelegt. 
Der Hersteller wars... und genau das sind Informationen, die man im 
Datenblatt finden kann. Google doch mal, "Datasheet Atmega8" wär 
beispielsweise n schöner Suchbegriff, bei dem ein das Datenblatt quasi 
nicht mehr entwischen kann. Selbiges öffnest du, und schaust mal unter 
Instruction Set nach.

von Marco M. (marco_m)


Lesenswert?

Falke schrieb:
> Das ist mir klar. Ich hätte vielleicht die "Programmiersprache"
> rauslassen sollen, das ist im Grunde auch gar nicht das Ziel meiner
> Hausarbeit. Es geht viel mehr um eben diese Bitmuster, die du
> ansprichst. Woher weiß der Rechner beispielsweise was er bei einem
> bestimmten Bitmuster (der ja durch einen Opcode beschrieben werden
> kann)tun soll? Irgendwie muss man ja festgelegt haben, dass meinetwegen
> 1011 Multiplikation bedeutet..

Die Schwierigkeit die du hast ist, dass du Bedeutung ("woher weiss X") 
in die Sache legst, die da nichts zu suchen hat. Die CPU ist eine 
Maschine, die über einen bestimmten Satz vorgefertigter Funktionen 
verfügt (Zahl aus dem Speicher holen, Zahl schreiben, Multiplizieren, 
vergleichen). Das Programm sagt nun welche Funktion in welcher 
Reihenfolge aktiviert werden soll. Das ist im Grund so ähnlich wie bei 
einem Pianola (ein automatisches Klavier). Das hat vorgefertigte 
Funktionen (Töne) und ein Programm (Lochstreifen). Jedes Loch sorgt dann 
beim Durchlauf dafür, daß der entsprechenede Ton gespielt wird.

von Ich (Gast)


Lesenswert?

Anders gesagt:
Könntest du dir einen Computer vorstellen (bauen), der nicht 
programmgesteuert abläuft, sondern bei dem man am Bedienfeld 
verschiedene Taster hat, z.B. für Addition, Multiplikation, ... ?

Genau diese Taster am Bedienfeld ersetzt du nun durch die Ausgänge, im 
Bild unten.
> http://relaiscomputer.de/skizzen/bild26.jpg
Links kommt der Opcode hin und Voilà: Der durch das Bitmuster des 
Opcodes codierte Befehl wird ausgeführt.

Welcher Opcode hier was bedeutet, das legst DU als Erbauer dieses 
Computers fest, indem du dir überlegst, welchen Ausgang des Decoders du 
mit welcher Funktion, mit welchem Taster auf dem Bedienfeld verbindest.
Der Computer "weiß" nichts davon, was soll er schon "wissen"? Der Opcode 
steuert den Decoder, Strom fließt durch eines der acht Kabel und 
aktiviert am Ende eine bestimmte Funktion. Welche das ist, ist dem 
Decoder sowie dem Opcode selber egal.
Genau so wenig "interessiert" es die Multiplikationseinheit, warum da 
jetzt ein Signal aus dem Kabel kommt. Sie weiß nichts vom Decoder und 
von irgendwelchen Opcodes.

von Timm R. (Firma: privatfrickler.de) (treinisch)


Lesenswert?

Hallo,

Falke, müsste nicht dieses Video für Dich sehr interessant sein, wo 
jemand
so ein einfaches Rechenwerk aus Holz in sehr groß gebaut hat?

Da müsste ja irgendwo oben genau so eine Stelle sein, wo man durch
Umklappen den Opcode einstellt, kann mich nicht genau erinnern.

Ich kann mich leider nicht erinnern wie die Maschine heisst.
Digi II oder so? So eine menschengroße Rechenmaschine mit 8er 
Billardkugeln.

Vielleicht liest ja irgendwer mit, der weiß was ich meine….


vlg
 Timm

von Ich (Gast)


Lesenswert?

http://www.youtube.com/watch?v=GcDshWmhF4A
Nicht ganz das, was du meinst, aber ähnlich.

Hier gilt genau dasselbe wie beim Computer:
Keines der Holzteile "weiß" irgendetwas vom anderen. Keines weiß, wo die 
Murmeln herkommen, welche Zahl dargestellt wird, welche Zahl eingegeben 
wurde.
Es funktioniert einfach durch das Zusammenspiel. Jedes einzelne Holz ist 
so gebaut, dass es je nach Zustand richtig umkippt.

von Timm R. (Firma: privatfrickler.de) (treinisch)


Lesenswert?


von Uwe (Gast)


Lesenswert?

> Irgendwie muss man ja festgelegt haben, dass meinetwegen 1011
> Multiplikation bedeutet..
Richtig ! Das hat jemand festgelegt ! Also z.B. könnte das letzte Bit im 
Opcode bedeuten das die erste Variable der Adition aus dem Register A 
kommt wenn dort eine 0 steht. Daß heist die Weiche (Multiplexer) für den 
ersten Operanden wird auf A gestellt (durch den Select Eingangdes 
Multiplexers).
Wenn jedoch eine 1 drin steht dann wird auf B umgeschaltet. Wenn du 
jetzt einen Inverter vor den Selct Eingang machst dann würde bei 1 auf A 
gestellt werden.

Opcode 010001010
               |
               | Select
             |-----|
        A----+ MUX |    |----|
             |     +----+ADD |
        B----+     |    |    |
             |-----|    |    +----
                        |    |
        X---------------+    |
                        |----|

An X könnte wieder ein Mux hängen der den Select an Bit 1 vom Opcode 
haben könnte und zwichen irgend etwas anderem wählen kann.

von Michael_ (Gast)


Lesenswert?

Falke schrieb:
> Im Rahmen einer Hausarbeit stehe ich vor oben genannter Frage. Dabei
> bezieht sich das Thema auf die Anfänge der Rechnertechnik, spezieller
> noch auf die Zuse Z3.
Du hast in den vorherigen Stunden geschlafen oder auf dem EIPAD bunte 
Bilder angesehen.
Falke schrieb:
> Anders
> formuliert: Wie hat man es geschafft, dass sie bei Opcode X genau die
> Rechnung Y durchführte?
Weil ein Mensch dieser Maschine gesagt hat, was sie machen soll.
Evtl. in Form eines Lochstreifens.

von Peter II (Gast)


Lesenswert?

Michael_ schrieb:
>> formuliert: Wie hat man es geschafft, dass sie bei Opcode X genau die
>> Rechnung Y durchführte?
> Weil ein Mensch dieser Maschine gesagt hat, was sie machen soll.
> Evtl. in Form eines Lochstreifens.

nein, auf diese ebene kann man das nicht programmieren( patch für 
Opcodes mal weggelassen)

Das ganze ist denn einfach hardware. Es wurde also Verdrahtet.

von Reinhard Kern (Gast)


Lesenswert?

Peter II schrieb:
> Das ganze ist denn einfach hardware.

So ganz ungefähr schon, bei einfachen Fällen. Microcodes verlagern das 
Problem allerdings eine Stufe weiter, und bei einem Z80 als IP in einem 
FPGA, das seine Konfiguration aus einem EEProm lädt kommen solche 
Definitionen schnell ins Schleudern.

Gruss Reinhard

von Jost (Gast)


Lesenswert?

Falke schrieb:
> Wie hat man es geschafft, dass sie bei Opcode X genau die
> Rechnung Y durchführte?

Derartige (Übertragungs-, Decoder- oder Ausführungs-) Fehler bescherten 
bereits von Anfang an Bugs, die sich in den Geräten niederließen (*)...

...bis sie bspw. Opfer einer Totalkollision mit dem Woman Acceptance 
Factor wurden:

http://de.wikipedia.org/wiki/Grace_Hopper#Leistungen


(*) und denen der Klassiker, "ein X für ein U vormachen" zu langweilig 
geworden war

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.