Von Neumann Architektur? Unterscheidung zwischen wortwörtlichen Instruktionen und Interpretation?
Hi
In der letzten Vorlesung ging es um die von Neumann Architektur. Ich habe mir dazu einige Quellen im Internet angeschaut. Es geht dabei ja vor allem um den gemeinsamen Speicher von Computerprogrammbefehlen und Daten sowie das Bus-System, das alles miteinander verknüpft.
Nun wurde in der Vorlesung immer wieder betont, dass der Computer in der Von-Neumann Architektur unterscheiden muss zwischen Instruktionen die wortwörtlich (maschinenlesbare Befehle) zu nehmen sind und solche die er interpretieren muss.
Sagt euch diese Unterscheidung etwas und wo genau liegt der Zusammenhang mit dem oben beschriebenen Infos aus dem Internet? Danke!
2 Antworten
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
Was ist mit "der Computer" genau gemeint?
Die CPU muss nichts unterscheiden. Die hat einen "program counter", der immer auf die Speicheradresse des nächsten Befehls zeigt. Dieser wird dann geholt und ausgeführt. Und dann wird der program counter inkrementiert (um die Länge des Befehles).
Bei einem Unterprogrammaufruf legt sie die Rücksprungadresse auf den Stack. Auch da muss die CPU nichts unterscheiden.
Ein Programmierer muss allerdings dafür sorgen, dass er z.B. mit seinen Daten nicht ungewollt das Programm überschreibt, er muss sich also Gedanken über die Aufteilung der Speicherbereiche machen.
Viele CPUs haben Mechanismen, die ein versehentliches Überschreiben des Programmes verhindern (man kann z.B. Code-, Stack- und Datensegmente definieren, und beim Versuch des Schreibens in das "falsche" Segment gibt's einen "segmentation fault").
![](https://images.gutefrage.net/media/default/user/11_nmmslarge.png?v=1551279448000)
Ich verstehe nicht ganz, was mit "Instruktionen, die er interpretieren muss" gemeint sein soll. Geht es um so was wie indirekte Adressierung, oder eine Art "Virtualisierung"?
Ausgeführt werden ja nur Maschinenbefehle der Architektur. Bei interpretierten Programmiersprachen läuft halt ein Stück Software (Maschinenbefehle), dass in Abhängigkeit der Befehle unterschiedliche Unterroutinen mit den jeweiligen Maschinenbefehlen ausführt.
Die Architektur bezieht sich ja aber auf den Prozessor.