Warum verstehen Computer Programmiersprachen?

Gast #3031058
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!
#3031083
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
Gast #3031094
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.
Gast #3031098
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..
#3031107
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
Gast #3031115
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.
#3031126
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.
#3031128
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.
Gast #3031147
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.
(Firma: privatfrickler.de) #3031151
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
Gast #3031161
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.
Gast #3031257
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.
Gast #3031275
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.
Gast #3031377
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.
Gast #3033145
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
Gast #3033249
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren