2 Grundsätzliche Merkmale von Computern

Größe: px
Ab Seite anzeigen:

Download "2 Grundsätzliche Merkmale von Computern"

Transkript

1 Die befehlsgesteuerte Arbeitsweise eines Computers 2 Grundsätzliche Merkmale von Computern Bevor einzelne Computertypen vorgestellt werden, ist es wichtig, einige grundsätzliche Merkmale zusammen zu stellen. 2.1 Die befehlsgesteuerte Arbeitsweise eines Computers Allen Einheiten mit Computerstruktur ist gemeinsam, dass man ihre zentrale Gesamtfunktion in drei Basisfunktionen bzw. Basis-Einheiten aufteilen kann: die Prozessorfunktion der Prozessor-Einheit (processing unit), die aus einem Prozessor (Ein-Prozessor-System) oder mehreren Prozessoren mit den gleichen Grundfunktionen (Mehr-Prozessor-System) bestehen kann. Im folgenden stehen die Grundfunktionen aus der Sicht eines Prozessors im Vordergrund. die Speicherfunktion der Speicher-Einheit (memory unit) oder einfach Speicher, die Funktion für die Ausführung des Datenverkehrs zwischen Peripherie-Einheiten (peripheral units) und den beiden anderen Funktionen. Man liest für die entsprechende Einheit noch die Bezeichnung Kanal-Einheit (channel unit). Hier soll sie Ein/Ausgabe-Einheit (input/output unit) oder einfach Ein/Ausgabe heißen. Prozessor Speicher Ein/Ausgabe Bild 2.1: Die drei grundsätzlichen zentralen Funktionseinheiten eines Computers Alle Aktivität eines Computers ergibt sich aus der Steuerung durch Befehle. Das bedeutet, dass die Befehle in einer solchen Form verfügbar sind, dass Prozessor sie sich durch geeignete Zugriffe holen und in Aktionen umsetzen kann, die zu jedem Befehl vereinbart sind. Erst die Ausführung einer Folge von Befehlen durch einen Prozessor erzeugt ein gewünschtes Verarbeitungsergebnis. Eine Befehlsfolge kann man von zwei unterschiedlichen Blickwinkeln betrachten: aus der Sicht der Festlegung der Befehlsfolge und aus der Sicht des Ablaufes bei der Ausführung. Die Festlegung der Befehle ergibt eine bestimmte Befehlsreihenfolge, also ein Programm. Für den Beginn des Ablaufes muss der erste auszuführende Befehl in der Reihenfolge festgelegt werden. Es muss nicht der erste in der Programmreihenfolge festgelegte Befehl sein. Was danach geschieht, ist durch die Steuerung des Programmablaufes genau festgelegt. Wenn man die durchlaufenen Befehle aneinander reiht, ergibt sich eine Spur (trace), die schließlich zu dem letzten ausgeführten Befehl im Programm führt. Dieser Befehl muss nicht der letzte Befehl in der programmierten Reihenfolge sein. Bild 2.2 soll einerseits die Reihenfolge der programmierten Befehle (statischer Aspekt) und andererseits die Spur des Ablaufes (dynamischer Aspekt) zeigen. 19

2 Die befehlsgesteuerte Arbeitsweise eines Computers Es wird vereinfacht angenommen, dass der programmierte erste Befehl auch der Startbefehl ist und der programmierte letzte Befehl auch der letzte ausgeführte Befehl ist. Der Ablauf wird symbolisch durch Pfeile beschrieben. Ein wesentlicher Zweck von Programmen ist die Erzeugung von Rechenergebnissen. Es muss also arithmetische Verarbeitungsbefehle geben. Als Beispiel kann man eine Addition nehmen, die zu einem Operanden einen zweiten addiert, z.b. eine 4. Woher nimmt man nun den ersten Operanden und was macht man mit dem Ergebnis? Man muss sich geeignete Objekte schaffen, die als Operanden verwendbar sind und die ein Verarbeitungsergebnis aufnehmen und damit festhalten können. Ein Objekt, dessen Zustand ein Verarbeitungsergebnis festhält, also speichert, dass zu jeder Zeit beim Programmablauf als Operand für einen Verarbeitungsbefehl verfügbar ist, wird im folgenden Datenobjekt genannt. Genau so, wie der Programmierer die Befehlsfolge festlegt, legt er auch die Datenobjekte fest, die die Befehle seines Programms benutzen. Datenobjekte sind - wie die Befehle - integraler Bestandteil eines Programms (Bild 2.2). Bild 2.2: Befehlsgesteuerte Arbeitsweise von Prozessoren Bis hierher war noch keine Rede davon, wie ein Programm für den Prozessor verfügbar gemacht werden kann. Die Befehle müssen in einer (für den Prozessor) interpretierbaren Form ausgedrückt (man sagt: kodiert) werden. Damit sie für den Prozessor lesbar werden, muss man sie in der kodierten Form speichern. Das ist die Aufgabe des Speichers. Beim Holen und Ausführen der Befehle eines Programms ergibt sich ein Strom von Befehlen vom Speicher zum Prozessor und ein Strom von Datenobjekten zum Prozessor bzw. von verarbeiteten (=veränderten) Datenobjekten vom Prozessor zum Speicher (Bild 2.3). Prozessor Prozessor Befehlsstrom Datenstrom Befehlsfolge =Programm 1. Befehl i-ter Befehl letzter Befehl 1. Datenobjekt i-tes Datenobjekt letztes Datenobjekt Speicher Ein/Ausgabe Bild 2.3: Befehls- und Datenstrom beim Programmablauf Um die zentrale Bedeutung des Speichers für die ablauffähigen Programme zu unterstreichen, wird der Speicher auch Hauptspeicher genannt. 20

3 Die befehlsgesteuerte Arbeitsweise eines Computers Hier erkennt man zum ersten Mal, wie man die Arbeitsgeschwindigkeit eines Computers beeinflussen kann: Je mehr Befehle pro Zeiteinheit beim Programmablauf in den Prozessor fließen, um so mehr Verarbeitungsergebnisse werden pro Zeiteinheit erzeugt, um so kürzer ist die Ablaufzeit eines Programms. Bevor aber die Merkmale des Programmablaufes genauer diskutiert werden, soll ein andere Frage im Vordergrund stehen: Wie kommt ein geeignet kodiertes ablauffähiges Programm überhaupt zustande? 2.2 Befehle in der Assemblerform Um dem Programmierer das Programmieren einer zweckgerichteten Befehlsfolge zu erleichtern, sollte man eine selbsterklärende Form der Befehle finden. Aus der Schreibweise sollten die Merkmale der Aktionen, die der Prozessor bei diesem Befehl ausführt, sinnfällig erkennbar sein. Ein Beispiel soll das erläutern (Bild 2.4). Assembler- Programm Prozessor 1. Ass.-Befehl add x,0004h letzter Ass.-Befehl 1. Datendefinition Datendefinition für die Variable x letzte Datendefinition Operation Prinzipielles Format Beispiel: 80x86 1.Operand/ Ergebnis 2.Operand In der Assemblersprache gelten Variablennamen als Identifikatoren für die Datenobjekte, die die Variablen realisieren. Bild 2.4: Beispiel eines Additionsbefehls Eine Addition addiert zwei Operanden und erzeugt dabei ein Ergebnis. Bild 2.4 zeigt am Fall einer beispielhaften Addition, wie man die Merkmale festlegen kann: zuerst den Typ der Operation, hier eine Addition; dann einen Hinweis auf den ersten Operanden; x ist der Name eines Datenobjektes, x dient also als eindeutiges Erkennungsmerkmal (Identifikator) eines Datenobjektes dann den zweiten Operanden, hier die Zahl 4. Diese Merkmale bestimmen folgendes Operationsergebnis: alter Zustand des Datenobjektes x plus 4. Jetzt ist noch wichtig, was mit diesem Ergebnis geschehen soll. Im Beispiel macht man eine stillschweigende (also implizite) Annahme: Das Ergebnis wird der neue Zustand des Datenobjektes x. Man kann die Ausführung der Operation auch so beschreiben: x x + 4 oder x := x + 4 oder x = x + 4 Bei der letzten Schreibweise muss man sich auf eine Bedeutung des Gleichheitszeichens einstellen, die nicht der üblichen (mathematischen) Bedeutung des Gleichheitszeichens entspricht. Der beispielhafte Befehl zeigt, dass x der Name eines (in seinem Zustand veränderlichen) Datenobjektes ist. 21

4 Befehle in der Assemblerform Das Beispiel zeigt auch, dass die Schreibweise eines Befehls bestimmten Regeln folgt. Diese Regeln sind den Regeln einer Sprache vergleichbar und werden auch auf einer entsprechenden Abstraktionsebene formal festgelegt. Die Gesamtheit der Befehle, die man beim Programmieren für einen bestimmten (Ziel-)Prozessors verwenden kann, wird Assemblersprache genannt. Ein Programm, das nach den Formalien dieser Sprache programmiert ist, heißt Assemblerprogramm. Das Beispiel entspricht den Regeln der Assemblersprache für die weit verbreiteten Intel- Prozessoren. Es zeigt auch nur einige wichtige Aspekte einer Assemblersprache, weil es hier nur um Grundsätzliches geht. Auf der Ebene der Assemblersprache wird ein veränderliches Datenobjekt als die Realisierung einer (abstrakten) Größe angesehen, die man Variable nennt. x ist (aus dieser Sicht) ein Variablenname. In einem Assemblerprogramm wird die Existenz einer Variablen durch eine Definitionsanweisung gesichert, die dem Variablennamen durch eine Typangabe den notwendigen Platz für das Datenobjekt zuordnet (Bild 2.5). Assembler- Programm 1. Ass.-Befehl Prozessor add x,0004h letzter Ass.-Befehl 1. Datendefinition x dw letzte Datendefinition Prinzipielles Format Beispiel: 80x86 db=define byte dw= define word Variablenname Definitionstyp Initialisierung Bild 2.5: Beispiel der Definition einer Variablen mit dem Namen x und einem notwendigen Platz von 2 Byte für das realisierende Datenobjekt Will man, dass das Datenobjekt beim Start des Programms einen bestimmten Anfangswert hat, dann kann man diesen ergänzen. Sobald das Datenobjekt konkret erzeugt wird, hält man nicht nur seinen Platz bereit, sondern man stellt seinen Zustand entsprechend ein, der dann zu Beginn des Programmablaufes gilt (Initialisierung). Die Formalien der Schreibweise von Assemblerbefehlen bzw. Definitionsanweisungen für Variable sind in den Assemblersprachen der auf dem Markt befindlichen Prozessoren ähnlich festgelegt wie hier gezeigt. Was ein Assemblerprogrammierer im wesentlichen erlernen muss, ist die Gesamtheit der Befehle, ihre formal richtige Anwendung und - natürlich vor allem - ihre zweckdienliche Anwendung im Sinne des gestellten Problems. Die selbsterklärende Form der Assemblerbefehle hilft ihm sicher beim Erlernen und beim Anwenden. Wichtig ist, dass einem Assembler-Programmierer immer der direkte Bezug zum Ablauf der Befehle möglich ist, da die Reihenfolge der Assemblerbefehle unmittelbar mit dem Programmablauf assoziiert werden kann. Ein Assemblerprogramm ist für den Programmierer verständlich, nicht aber für den Prozessor. Das bedeutet, dass man ein Assemblerprogramm in die für den Prozessor verständliche Form bringen muss. 22

5 Das Maschinenprogramm 2.3 Das Maschinenprogramm Um auch eine begrifflich deutliche Unterscheidung zu machen, nennt man die Befehle, die vom Prozessor verstanden werden, Maschinenbefehle. Das Ergebnis der Umsetzung von Assemblerbefehlen in Maschinenbefehle ist für das beispielhafte Szenario in Bild 2.6 dargestellt. Prozessor Maschinen- Programm 1. Masch.-Befehl z i letzter Masch.-Befehl 1. Datenobjekt add x,0004h Operation= aktuellen Wert der Variablen x holen, Konstante 4 addieren und das Ergebnis als neuen Wert der Variablen eintragen. Identifikator der Variablen x Konstante= 4.. x i.. letztes Datenobjekt In der Maschinensprache gelten Indizes (= Zeiger = Pointer) auf die Datenobjekte als Identifikatoren für die Datenobjekte, die die Variablen realisieren. Bild 2.6: Maschinenprogramm mit den beispielhaften Befehlen xi bzw. zi steht stellvertretend für die Bits des entsprechenden 16-Bit-Wortes Man erkennt die Struktur des Assemblerbefehles in der Struktur des Maschinenbefehles wieder. Der Assembler-Befehl besteht aus drei Abschnitten: dem für die Operation, dem für den ersten Operanden bzw. das Ergebnis, hier den Variablennamen, und dem für den zweiten Operanden, hier die Zahl 4. Der Maschinenbefehl besteht aus drei Abschnitten: 2 Byte für die Angabe der Operation und die Art, wie die folgenden Bytes zu verwenden sind, dann zwei Bytes, die den konkreten Bezug zum Datenobjekt herstellen, und dann zwei Byte, die die Zahl 4 enthalten. Es ergibt sich eine Schwierigkeit, wenn man zur Darstellungsart von Intel konform bleiben möchte. Intel zählt die Bytes fortlaufend von links nach rechts, also bei 16Bit-Wörtern Im Byte mit der kleineren Nummer steht das niederwertige Byte einer 16Bit-Dualzahl und im Byte mit der höheren Nummer das höherwertige Byte. Eine 4 als 16Bit-Dualzahl ist in der mathematischen Darstellung: Durch die Darstellungsart von Intel ergibt sich daraus: Intel folgt der üblichen Schreibrichtung von links nach rechts. Die mathematische Darstellung ordnet die Bytes gemäß der Stellenwertigkeit von rechts nach links an. Diese Darstellung wählen die meisten anderen Hersteller. Sehr wichtig ist nun, wie im Befehl der Bezug zum Datenobjekt hergestellt wird. 23

6 Das Maschinenprogramm Im Assemblerprogramm legt die Gesamtheit der Definitionsanweisungen auch die Gesamtheit der Variablen fest. Die Variablen müssen eindeutig unterscheidbar sein. Es dürfen also keine Variablen mit gleichem Namen vorkommen. Diese Eigenschaft muss genau so für die realisierenden Datenobjekte gelten. Da man jeder Variablen ein Datenobjekt mit einer genau gegebenen Zahl von Byte zuordnet und diese hintereinander im Programm anordnet, kann man Datenobjekte eindeutig durch ihre Lage identifizieren. Es gibt mehrere Möglichkeiten, die Lage anzugeben, z.b. als Zahl der Byte zwischen dem Befehl, in dem zu dem Datenobjekt zugegriffen wird, und dem ersten Byte des Datenobjektes selbst, als Zahl der Bytes zwischen dem Anfang des Programmabschnittes mit den Datenobjekten und dem ersten Byte des Datenobjektes. Wenn man weiß, in welche Speicherzellen im Hauptspeicher das ablauffähige Maschinenprogramm geladen werden wird, kann man auch die Lage des Datenobjektes als Hauptspeicheradresse ihres ersten Bytes angeben. Man nennt die Größe, die die Lage eines Datenobjektes innerhalb eines Programms oder im Hauptspeicher festlegt, im Kontext der Maschinenprogramme meistens Index. Es sind auch die Bezeichnungen Zeiger oder Pointer üblich. Im Bild 2.6 steht zi für die Bits des Index bzw. Zeigers. Indizes mit Hauptspeicheradressen machen Probleme, wenn man die Lage des Programms im Hauptspeicher ändert. Alle Befehle mit solchen Indizes müssen nämlich bei Veränderung der Lage des Programms angepasst werden. Deshalb bevorzugt man in heutigen Computersystemen die andere Art der Indizes, die man auch als relativ (zu einer vereinbarten Basis) ansehen kann. Davon später noch ausführlich. Die Umsetzung eines Assemblerprogramms in das gleichwertige Maschinenprogramm wird mit einem Übersetzerprogramm durchgeführt, das man als Assembler bezeichnet (Bild 2.7). Maschinen- Programm Assembler- Programm 1. Masch.-Befehl z i letzter Masch.-Befehl 1. Datenobjekt.. x i.. letztes Datenobjekt Übersetzer (Assembler) 1. Ass.-Befehl add x,0004h letzter Ass.-Befehl 1. Datendefinition x dw letzte Datendefinition Zur Laufzeit auszuführende Assemblerbefehle werden in entsprechende Maschinenbefehle umgesetzt. Datendefinitionen werden in entsprechende Datenobjekte umgesetzt. Bild 2.7: Die Übersetzung eines Assemblerprogramms in das Maschinenprogramm Assemblerbefehle, die zur Laufzeit wirksam werden sollen, werden in ihre entsprechenden Maschinenbefehle umgesetzt. Variablendefinitionen - auch Datendefinitionen genannt - in entsprechende Datenobjekte. 24

7 Das Maschinenprogramm Sobald man sehr komplexe Programme entwickelt, muss man das Gesamtproblem in überschaubare Teilprobleme aufteilen. Dann hat man einen überschaubaren Aufgabenrahmen, in dem man auch die Richtigkeit des Programms prüfen kann. Aus den geprüften Teilprogrammen wird dann das Gesamtprogramm zusammengesetzt, das man dann als Ganzes prüft. Das Zusammensetzen wird durch ein Programm unterstützt, das man Binder (Linker) nennt (Bild 2.8). Maschinen- Gesamtprogramm 1. Masch.-Befehl z i Binder (Linker) Maschinen- Teilprogramme 1. Masch.-Befehl z i letzter Masch.-Befehl 1. Datenobjekt.. x i.. Übersetzer (Assembler) Assembler- Teilprogramme 1. Ass.-Befehl add x,0004h letzter Ass.-Befehl 1. Datendefinition x dw letztes Datenobjekt letzte Datendefinition letzter Masch.-Befehl 1. Datenobjekt.. x i.. letztes Datenobjekt Bild 2.8: Das Binden von unabhängig entwickelten Teilprogrammen (Modulen) Ein Binder ordnet die Maschinenbefehle der einzelnen Teilprogramme (die auch als Module bezeichnet werden) in der Reihenfolge, wie sie im Binde-Kommando aufgerufen werden, hintereinander. Das Gleiche macht er mit den Datenobjekten der Module. Man erkennt für das beispielhafte Szenario sofort eine wichtige Aufgabe des Binders: alle lageabhängigen Indizes müssen angepasst werden. Das Programmieren in einer Assemblersprache hat den Vorteil, dass der Programmierer sehr einfach den Bezug zum Ablauf herstellen kann. Aber es hat den Nachteil, dass der logische Zusammenhang mit dem Anwenderproblem verwischt wird. Den kann man beim Assembler-Programmieren oft nur durch konsequente begleitende Kommentare im Programmtext herstellen. Aus der Sicht des Programmierens komplexer Probleme ist hilfreich, wenn mathematische oder logische Zusammenhänge auch mit den üblichen Formen ausgedrückt werden können, die sich in den entsprechenden Sachgebieten herausgebildet haben. Das leisten höhere Programmiersprachen. Für Programme in einer höheren Programmiersprache gilt das Gleiche wie für Assembler-Programme: man muss die Möglichkeit haben, sie getrennt zu entwickeln und zu prüfen, und man muss die Möglichkeit haben, die geprüften Teilprogramme zu binden, um sie insgesamt prüfen können und damit verlässlich lauffähig zu machen (Bild 2.9). Der Übersetzer heißt hier Compiler. Außerdem vermeidet man den Begriff Befehl und verwendet stattdessen den Begriff Anweisung (statement). 25

8 Das Maschinenprogramm Maschinen- Gesamtprogramm 1. Masch.-Befehl z i Binder (Linker) Maschinen- Teilprogramme 1. Masch.-Befehl z i letzter Masch.-Befehl 1. Datenobjekt.. x i.. letztes Datenobjekt Compiler Teilprogramme in einer höheren Programmiersprache 1. Anweisung integer x; x = x + 4; letzte Anweisung letzter Masch.-Befehl 1. Datenobjekt.. x i.. Arithmetische Ausdrücke werden in entsprechende Maschinenbefehlsfolgen umgesetzt. Datendefinitionen werden in entsprechende Datenobjekte umgesetzt. letztes Datenobjekt Bild 2.9: Übersetzen und Binden bei höheren Programmiersprachen Es wird im Allgemeinen nicht so sein wie im dargestellten einfachen Fall (Bild 2.9): dass nämlich eine Anweisung direkt in einen einzigen Maschinenbefehl umgesetzt werden kann. Da arithmetische Ausdrücke sehr komplex sein können, ergeben sich auch entsprechend komplexe Befehlsfolgen. Die Aufgabe der Compilerprogrammierer ist es, aus den Ausdrücken effektive Befehlsfolgen zu machen. Ob das so ist, kann der Anwenderprogrammierer in aller Regel nur dadurch feststellen, dass er die Laufzeiten von Programmen vergleicht, die er mit unterschiedlichen Compilern und Bindern erzeugt hat. Das Ziel dieser Einführung in die Computerarchitekturen ist es, die hardwarenahen Aspekte zu erläutern, also von der Ebene der Maschinenprogramme auszugehen. Die Aspekte, die sich mit dem Weg vom Problem zum Programm in einer höheren Programmiersprache beschäftigen, werden hier nicht behandelt. 2.4 Merkmale des Programmablaufes Wie auch immer ein ablauffähiges Maschinenprogramm (im folgenden einfach Programm genannt) zustande kam: damit der Prozessor es Befehl für Befehl lesen kann, muss es in den Hauptspeicher geladen werden. Das Laden eines Maschinenprogramms Man kann ein lauffähiges Programm als eine Folge ansehen, die Befehle und Datenobjekte in einer strengen Reihenfolge vom ersten bis zum letzten Element anordnet. Und genau in dieser Reihenfolge wird das Programm ab einer Speicherzelle in den Hauptspeicher geladen (Bild 2.10), die von einem Programm bestimmt wird, das den Betrieb des Computers steuert, das sog. Betriebssystem. 26

9 Merkmale des Programmablaufes Hauptspeicheranfang Beginn des gespeicherten Programmes Ende des gespeicherten Programmes 1. Befehl i-ter Befehl letzter Befehl 1. Datenobjekt i-tes Datenobjekt letztes Datenobjekt Hauptspeicherende Bild 2.10: Lage eines lauffähigen (Maschinen-)Programms im Hauptspeicher Ein Programm belegt also im Hauptspeicher einen Speicherbereich, der dann für andere Programme so lange nicht zur Verfügung steht, bis es abgelaufen ist und verdrängt werden kann. Für den Ablauf ist nun wichtig, mit welchem Befehl der Ablauf beginnen soll. Das muss nicht der erste gespeicherte Befehl sein. Im Bild 2.11 ist vereinfachend angenommen, dass der erste gespeicherte Befehl auch der Startbefehl ist. Der Ablauf erreicht am Ende den letzten auszuführenden Befehl des Programms, was hier vereinfachend der letzte gespeicherte Befehl sein soll. Im Folgenden wird besprochen, was auf diesem Weg geschieht. Hauptspeicheranfang Startadresse des auszuführenden Programmes Adresse des letzten auszuführenden Befehls 1. Befehl i-ter Befehl letzter Befehl 1. Datenobjekt i-tes Datenobjekt letztes Datenobjekt Hauptspeicherende Bild 2.11: Start, Spur und Ende des Ablaufes eines geladenen Programms Zuerst ist die Frage zu klären, wie man die kleinste abzählbare (adressierbare) Einheit in den Befehlen bzw. im Speicher festlegt, um den wichtigen Begriff der Startadresse zu verstehen. Die kleinste abzählbare (=adressierbare) Einheit im Hauptspeicher In den frühen Mikroprozessoren war die kleinste abzählbare Einheit sowohl für die Maschinenbefehle/Datenobjekte eines Programms als auch für die Speicherzellen des Hauptspeichers 1 Byte. 27

10 Merkmale des Programmablaufes Wenn man zu dieser ursprünglichen Festlegung kompatibel bleiben will, muss man diese kleinste abzählbare Einheit erhalten - auch wenn man die Zahl der Bits pro Speicherwort auf 16, 32 bzw. 64 vergrößert. Das wichtigste Beispiel für eine Weiterentwicklung mit strikter Einhaltung der Kompatibilität sind die Intel-Prozessoren vom 8008 bis zum Pentium 4. Die Vergrößerung der Länge (Anzahl der Bits pro Wort) der Speicherwörter hat einen Vorteil, der im Bild 2.12 deutlich wird. 16-Bit Speicherwortfomat 1. Masch.-Befehl z i letzter Masch.-Befehl 1. Datenobjekt.. x i.. letztes Datenobjekt 1. Masch.-Befehl letzter Masch.-Befehl 1. Masch.-Befehl letzter Masch.-Befehl Bild 2.12: Beispielhaftes Speicherabbild in Abhängigkeit vom Speicherwortformat Die Bytes werden hier gemäß Intel-Darstellung angegeben, d.h. die Bytes werden von links nach rechts im Speicherwort und die Speicherwörter werden von oben nach unten durchnumeriert. Die Bytes des Maschinenprogramms werden von den niederwertigen zu den höherwertigen hin gespeichert. Es gibt eine implizite Annahme in diesem Beispiel: die Zahl der Bytes vom Programmbeginn bis zum ersten Byte des Beispielbefehles ist durch 2, 4 und 8 restfrei teilbar. Der Zugriff zum Hauptspeicher 32-Bit Speicherwortfomat Ein Speicherzugriff bedeutet die Übertragung eines Datenwortes von/zum Speicher. Dabei werden maximal so viele Bits übertragen, wie ein Speicherwort hat. Bei einem lesenden Zugriff (vom Speicher) wird das ganze Speicherwort übertragen. Bei einem schreibenden Zugriff (zum Speicher) muss es (wegen der oben erwähnten Kompatibilität) möglich sein, immer auch die Einheiten auswählen zu können, die in den früheren Systemen auswählbar waren. Befehle werden nur gelesen, weil sie nach dem Laden in den Hauptspeicher unveränderlich sind. Man wird bei einem Speicher mit 16Bit Speicherwortlänge drei Zugriffe für den Beispielbefehl brauchen, bei 32Bit zwei und bei 64Bit einen. Jeder Zugriff braucht eine bestimmte Zeit, die man Speicherzugriffszeit nennt. Wenn erst alle Befehlsbytes geholt werden müssen, bevor ein Befehl ausgeführt werden kann, dann sieht man sofort, wie sich die Wartezeiten und wie sich dementsprechend die Programmlaufzeiten verteilen... z i.. 1. Datenobjekt.. x i.. letztes Datenobjekt.. z i.. 1. Datenobjekt.. x i.. letztes Datenobjekt 64-Bit Speicherwortfomat

11 Merkmale des Programmablaufes Die Adressierung von Speicherwörtern und von Bytes in Speicherwörtern Die Abzählung der Bytes in den Hauptspeicherwörtern ergibt eine Nummerierung, die ihre Lage bezogen auf den Speicheranfang festlegt. Man spricht nun nicht von Nummern, sondern von Hauptspeicheradressen. In diesem Sinne hat ein geladenes Programm eine Anfangsadresse und eine Endadresse. Der Start erfolgt bei einer Startadresse und das Verlassen des Programms bei der Adresse des letzten ausgeführten Befehls. Die Startadresse ist die Adresse des ersten Byte des ersten Befehls. Die Adresse ist eine ganze positive Zahl, die als Dualzahl in einem Wort mit n Bits angegeben wird. In Prozessoren für heutige Computersysteme sind es mindestens 32 Bit. Die Verwendung der Bits für die Adressierung der Speicherwörter bzw. der Bytes in den Speicherwörtern ist in Bild 2.13 dargestellt. Ein geladenes Programm beginnt sinnvollerweise beim Byte 0 eines Speicherwortes. Adreßformat mit Byte als kleinste adressierbare Einheit xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 16-Bit Speicherwortfomat 1. Masch.-Befehl z i letzter Masch.-Befehl 1. Datenobjekt.. x i.. letztes Datenobjekt Adreßformat mit Byte als kleinste adressierbare Einheit xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx Adreßformat mit Byte als kleinste adressierbare Einheit xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 1. Masch.-Befehl letzter Masch.-Befehl 1. Masch.-Befehl letzter Masch.-Befehl 32-Bit Speicherwortfomat Bild 2.13: Beispielhafte Formate für Speicheradressen rot: Bits für die Adressierung der Byte innerhalb eines Speicherwortes schwarz: Bits für die Adressierung der Speicherwörter im Hauptspeicher.. z i.. 1. Datenobjekt.. x i.. letztes Datenobjekt.. z i.. 1. Datenobjekt.. x i.. letztes Datenobjekt 64-Bit Speicherwortfomat Die kompakte Speicherung von Befehlen und Datenobjekten Befehle werden beim Übersetzen bzw. Binden lückenlos aneinander gepackt. Das Gleiche gilt für die Datenobjekte. Eine wichtige Eigenschaft einer Variablendefinition ist, dass man unter einem Namen mehrere Datenobjekte gleichen Typs definieren kann. Bei der Realisierung entsteht eine Reihenfolge von Datenobjekten gleichen Typs. Man nennt das die Definition eines Feldes (array). Bild 2.14 zeigt veranschaulichende Beispiele. 29

12 Merkmale des Programmablaufes 16Bit Speicherwortformat 32Bit Speicherwortformat Ein Feld von 6 Variablen vom Typ Byte Ein Feld von 3 Variablen vom Typ 2 Byte Eine Variable vom Typ 4 Byte Bild 2.14: Beispiele für Felder Es gibt drei markante Merkmale eines Feldes: die Anfangsadresse, die Zahl der Elemente, der Typ jedes Elementes. Wenn man die Datenobjekte konsequent kompakt speichert, dann kann ein Feld bei einer beliebigen Zahl von Bytes enden und das folgende Feld schließt sich unmittelbar an. Das bedeutet, dass die Anfangsadresse eines Feldes eine Byte- Adresse ist, also eine Adresse mit einem Byte als kleinste adressierbare Einheit. Selbststeuernder Programmablauf 64Bit Speicherwortformat Wenn man die Startadresse eines Programms kennt, gibt es ein sehr einfaches Merkmal, das einen sich selbst steuernden Programmablauf ermöglicht. Wenn man an einer bestimmten Stelle in jedem Befehl eindeutig ein Merkmal erkennt, aus dem die Zahl der Bytes für diesen Befehl hervorgeht, dann kann man einfach berechnen, wo der nächste Befehl beginnt. Dort kann man genau so vorgehen (Bild 2.15). 16-Bit Speicherwortfomat 1. Masch.-Befehl z i letzter Masch.-Befehl 1. Datenobjekt.. x i.. letztes Datenobjekt 1. Masch.-Befehl letzter Masch.-Befehl 1. Masch.-Befehl letzter Masch.-Befehl 32-Bit Speicherwortfomat Bild 2.15: Merkmal zur Bestimmung der Lage des beim Ablauf folgenden Befehls Jeder Befehl beginnt mit den Bytes, die die Operation festlegen. Dann folgen die Merkmale der Operanden. Eine konkrete Operation hat immer eine eindeutige Zahl von folgenden Bytes für die Angabe der Operanden. Die Anfangsadresse des.. z i.. 1. Datenobjekt.. x i.. letztes Datenobjekt.. z i.. 1. Datenobjekt.. x i.. letztes Datenobjekt 64-Bit Speicherwortfomat

13 Merkmale des Programmablaufes folgenden Befehls ergibt sich aus der Startadresse des aktuellen Befehls plus der Anzahl der Bytes für diesen Befehl, die der Prozessor aus der Operationsangabe eindeutig zuordnet. Im Fall von Bild 2.15 wird eine Operation mit 2 Bytes kodiert. Der Additionsbefehl umfasst 6 Byte. Gleichgültig, in welchem Speicherformat der Befehl abgelegt wird: die Anfangsadresse des nächsten Befehls ergibt sich durch die Addition von 6 zur Adresse des ersten Byte des Befehls. Ausgehend von einer Startadresse kann man Folgebefehl für Folgebefehl bestimmen, bis man den letzten Befehl des Programms erreicht: ein sich selbst steuernder Ablauf, der aber einen entscheidenden Nachteil hat: Verarbeitungsergebnisse, die sich beim Ablauf ergeben, könnten nie auf den Ablauf Einfluss nehmen. Genau das muss aber möglich sein. Die Steuerung des Programmablaufes durch Verarbeitungsergebnisse Es muss Befehle geben, mit denen man den Programmablauf von Verarbeitungsergebnissen abhängig machen kann. Hauptspeicheranfang Startadresse des auszuführenden Programmes 1. Masch.-Befehl Befehl zur bedingten Fortsetzung des Programmes Adresse des letzten auszuführenden Befehls letzter Masch.-Befehl 1. Datenobjekt letztes Datenobjekt Hauptspeicherende Bild 2.16: Bedingte Fortsetzung eines Programms Die Wirkung eines ablaufsteuernden Befehles ist: wenn die (im Befehl) angegebene Bedingung erfüllt ist, verzweigt der Ablauf zu einem besonders markierten Befehl, sonst geht es normal weiter. Ein Beispiel soll das erläutern. Angenommen, eine Variable x vom Typ 16Bit hat im Augenblick den hexa(dezimalen)-wert f f f c und man addiert dazu eine 4: f f f c Dann erhält die Variable x den hexa-wert mit einem übergelaufenen Bit, das man Übertrag (carry) nennt. In dem Fall, dass die Variable den Wert annimmt, soll zu einem Befehl mit der Markierung Fertig verzweigt werden, in allen anderen Fällen soll es normal weitergehen. 31

14 Merkmale des Programmablaufes Bild 2.17 zeigt die Ablaufalternativen an einem entsprechenden Assemblerbeispiel. 1. Ass.-Befehl add x,0004h jz Fertig Fertig: mov x, 0ffffH Prinzipielles Format Beispiel: 80x86 Operation jz= jump zero lade x mit 1en Bild 2.17: Beispiel für den bedingten Verzweigungsbefehl jump zero mit zwei Ablaufalternativen Der Befehl jump zero prüft, ob bei der vorangegangenen Operation eine Null als Ergebnis herauskam. In diesem Fall hätte man auch ein jump carry anwenden können. Die umgekehrte Abfrage mit jump not zero oder jump not carry muss hier nicht mit Beispielen erläutert werden; sie ist nahe liegend. Das ist nur eine kleine Probe von Befehlen mit bedingter Verzweigung, die reelle Prozessoren bieten. Ziel- Marke letzter Ass.-Befehl 1. Datenobjekt.. x i.. Der letzte auszuführende Befehl letztes Datenobjekt Der Programmlauf erzeugt mit dem normalen und dem bedingten Fortschritt eine Ablaufspur bis zum Befehl, der oben als letzter auszuführender Befehl bezeichnet wurde. Hauptspeicheranfang Startadresse des auszuführenden Programmes 1. Masch.-Befehl Befehl zur bedingten Fortsetzung des Programmes Adresse des letzten auszuführenden Befehls letzter Masch.-Befehl 1. Datenobjekt letztes Datenobjekt Hauptspeicherende Bild 2.18: Der letzte auszuführende Befehl in einem Anwenderprogramm Was bedeutet der letzte auszuführende Befehl aus der Sicht eines Anwenderprogramms, das vom Betriebssystem geladen und gestartet wurde? Ein Anwenderprogramm ist dann zu Ende, wenn alle vom Programmierer gewünschten Ergebnisse erzeugt sind, der Zweck des Programms also erfüllt ist. Der 32

15 Merkmale des Programmablaufes letzte Befehl kann dann nur bedeuten, dass der Ablauf in demjenigen Programm weiter geht, das für den Ablauf des Anwenderprogramms gesorgt hat. Das bedeutet die Rückkehr in das Betriebssystem. Und was bedeutet dann der letzte auszuführende Befehl im Betriebssystem? Das Betriebssystem sorgt für den Ablauf der von dem(den) Benutzer(n) gewünschten Anwendungen. Die Benutzer machen bestimmte Eingaben, z.b. geben sie Kommandos ein, um dem Betriebssystem zu sagen, welche Programme gestartet werden sollen. Leerlauf bedeutet, dass alle bisherigen Eingaben fertig bearbeitet sind und das Betriebssystem auf neue Eingaben wartet. Tatsächlich gibt es in allen universell einsetzbaren Prozessoren einen Befehl, bei dessen Ausführung der Prozessor auf externe Ereignisse mit programmsteuernder Wirkung wartet. Das ist dann der letzte auszuführende Befehl im Betriebssystem. 2.5 Der Grundzyklus der Programmablaufsteuerung und die Reaktion auf äußere Ereignisse Der einfache Grundzyklus Ein Anwenderprogrammierer hat sein Anwenderproblem im Auge und betrachtet den Programmablauf aus dem Blickwinkel der schnellen und anwendungsgerechten Ausführung. Die grundsätzlichen Merkmale des Programmablaufes wurden zunächst aus diesem Blickwinkel beschrieben. Ein Computerarchitekt, der die passenden Schaltungen entwirft und realisiert, hat einen anderen Blickwinkel. Er stellt fest, dass sich die befehlsgesteuerte Arbeitsweise eines Computers eine zyklische Abfolge von zwei aufeinander folgenden Arbeitsvorgängen erzwingt: dem Holen eines gespeicherten Befehls (instruction fetch) und dem Ausführen dieses Befehls (instruction execute) (Bild 2.19). nächsten Befehl holen Befehl ausführen Bild 2.19: Grundzyklus eines Prozessors Dieser Grundzyklus ist die treibende Kraft für die Aktionen eines Computers. Er wird mit dem Einschalten eines Computers gestartet und hält im eingeschalteten Zustand nur dann an, wenn Leerlauf ist. Das bedeutet bei den meisten Prozessoren die Ausführung eines Befehls, in dem auf externe Ereignisse gewartet wird. Eine Alternative ist, einen Befehl auszuführen, der auf sich selbst verzweigt. Würde die Programmablaufsteuerung nur diesen Grundzyklus ausführen, könnten äußere Ereignisse nie auf sie Einfluss nehmen. Eine geeignete Funktion muss möglich machen, dass die Programmablaufsteuerung gezielt zu einer Befehlsfolge verzweigt, die dem aufgetretenen Ereignis eindeutig zugeordnet ist 33

16 Der Grundzyklus der Programmablaufsteuerung und die Reaktion auf äußere Ereignisse Zunächst kann man das Problem aus Anwendersicht veranschaulichen (Bild 2.20). Hauptspeicheranfang spontanes äußeres Ereignis mit programmsteuernder Wirkung 1. Befehl i-ter Befehl letzter Befehl 1. Datenobjekt i-tes Datenobjekt letztes Datenobjekt Hauptspeicherende Bild 2.20: Die Unvorhersehbarkeit eines spontanen externen Ereignisses mit programmsteuernder Wirkung Spontane programmsteuernde Ereignisse sind z.b. Mouseclicks oder Tastaturanschläge oder fertige Kommandoeingaben, um nur einige zu nennen. Sie treten zeitlich unabhängig vom aktuellen Programmablauf auf. Die Frage ist nun, wie man ein solches Ereignis im Rahmen des Grundzyklus erfassen soll? Man kann das Ereignis nur erfassen, wenn man es geeignet kodiert. Es gibt nur zwei Zustände: Ereignis da/ereignis nicht da. Das bedeutet, dass man es als binäres Signal kodieren kann. Wenn der Zustand Ereignis nicht da erfasst wird, soll es keine Verzweigung geben, bei Ereignis da soll eine gezielte Verzweigung ausgeführt werden. Das bedeutet, dass die Abfrage und die Entscheidung nach der Ausführung eines Befehles und vor dem Holen des nächsten eingebaut werden muss (Bild 2.21). nächsten Befehl holen Befehl ausführen Interrupt Request Meldung abfragen: da: spätere Fortsetzung des aktuellen Programmablaufes vorbereiten, Verzweigung einstellen; nicht da: weiter Bild 2.21: Grundzyklus mit Möglichkeit zur Unterbrechung von außen Liegt ein Ereignis vor, kommt es zu einer Unterbrechung des aktuellen Programmablaufs (Interrupt). 34

17 Der Grundzyklus der Programmablaufsteuerung und die Reaktion auf äußere Ereignisse Die nach der Unterbrechung ausgeführte Befehlsfolge nennt man Interrupt Service Routine. Das äußere Ereignis, das einen Interrupt auslöst, heißt Interrupt Anforderung (interrupt request). Während eines Interrupts läuft also eine Befehlsfolge ab, die dann an dem letzten Befehl anlangt, wenn die programmierte Aufgabe der Unterbrechung erfüllt ist. Dann muss die Programmablaufsteuerung in der Lage sein, das unterbrochene und angehaltene Programm mit dem Befehl fortzusetzen, der anstelle der unterbrechenden Verzweigung als nächster geholt und ausgeführt worden wäre. 2.6 Ein Exkurs zur Veranschaulichung der Assemblersprache und des Programmablaufs In diesem Skriptum gelten die Prozessoren der Intelarchitektur IA32 als Beispielarchitektur. In diesem Kontext wird die Assemblersprache ausgewählt. Ein Beispiel zur Assemblersprache und zur Übersetzung Eine Variable x soll mit dem Wert 3H(exadezimal) geladen und dann dazu eine 4H addiert werden. Bild 2.22 zeigt die beiden Befehle und drei Datendefinitionsanweisungen für die Variablen z, y und x, die alle drei mit dem Wert 0 vorbelegt werden. Ein Programmausschnitt mit einfachen Assemblerbefehlen und Datendefinitionen Microsoft (R) Macro Assembler Version /22/3 Page Code SEGMENT 'code' assume cs:code, ds:daten 0000 B R start: mov ax,daten E D8 mov ds,ax 0005 C R 0003 mov x,0003h 000B R 04 add x,0004h 0010 EB FE stop: jmp stop 0012 Code ENDS 0000 Daten SEGMENT 'data' z dw y dw x dw Daten ENDS Bild 2.22: Einfaches Programmbeispiel Man kann nun zeigen, was der Übersetzer daraus macht (Bild 2.23). Jedes Byte wird in Form von zwei Hexa-Ziffern angegeben. Jedem Assemblerbefehl ist eine genau bestimmte Zahl von Bytes zugeordnet, die den Maschinenbefehl bilden und deren Bedeutung vom ersten bis zum letzten Byte genau festgelegt ist. Das erste Byte gibt immer das Bitmuster für die Operation an, die auszuführen ist. Das zweite Byte ergänzt die Operationsangabe. Es zeigt an, welche Bedeutung die danach folgende Angabe der Operanden hat. Die können nämlich unmittelbar, d.h. als Konstante, oder als Adresse angegeben sein, die zu dem Datenobjekt verweist. In den nachfolgenden Bytes folgen die Operanden. 35

18 Ein Exkurs zur Veranschaulichung der Assemblersprache und des Programmablaufs Durch die Übersetzung entstehen Maschinenbefehle und Datenobjekte. Microsoft (R) Macro Assembler Version /22/3 Page Code SEGMENT 'code' assume cs:code, ds:daten 0000 B R start: mov ax,daten E D8 mov ds,ax 0005 C R 0003 mov x,0003h 000B R 04 add x,0004h 0010 EB FE stop: jmp stop 0012 Code ENDS 0000 Daten SEGMENT 'data' z dw y dw x dw Daten ENDS Bild 2.23: Die durch Übersetzung entstandenen Maschinenbefehle und Datenobjekte Jeder Datendefinitionsanweisung ist eine genau bestimmte Zahl von Bytes zugeordnet. Es sind so viele, wie durch den Typ der Variablen festgelegt ist, in diesem Fall also je zwei Bytes, die durch den Übersetzer mit 0 vorbelegt werden. Der Befehl add x,0004h wird ohne die höherwertige 0 übersetzt. Dadurch wird der Maschinenbefehl um ein Byte kürzer. Man muss aber auch dafür sorgen, dass der Prozessor beim Addieren automatisch die höherwertige 0 ergänzt. Um die Befehle und Datenobjekte eindeutig finden zu können, brauchen sie Identifikatoren. Das macht man der Reihe nach wie bei der Hausnummerierung, hier Adressierung genannt. Man adressiert den Bereich der Maschinenbefehle (Codebereich) und den der Datenobjekte (Datenbereich) jeweils für sich (Bild 2.24). Maschinenbefehle werden im Codebereich und Datenobjekte werden im Datenbereich nacheinander angeordnet und bekommen dadurch Adressen, mit denen man sie eindeutig lokalisieren kann Code SEGMENT 'code' assume cs:code, ds:daten 0000 B R start: mov ax,daten E D8 mov ds,ax 0005 C R 0003 mov x,0003h 000B R 04 add x,0004h 0010 EB FE stop: jmp stop 0012 Code ENDS 0000 Daten SEGMENT 'data' z dw y dw x dw Daten 6 Bild 2.24: Die Adressierung der Maschinenbefehle und der Datenobjekte 36

19 Ein Exkurs zur Veranschaulichung der Assemblersprache und des Programmablaufs In den beiden Maschinenbefehlen wird auf die Variable x mit dem Wert 0004 verwiesen. Durch die Adressierung in Bild 2.24 erkennt man den Sinn: es ist die Adresse im Datenbereich, die auf das Datenobjekt verweist, das x realisiert ist also ein Zeiger (oder Index oder Pointer) auf das Datenobjekt. Eine Adresse ist die Zahl der Bytes vom Anfang des Bereiches bis zum jeweils ersten Byte eines Maschinenbefehls oder eines Datenobjektes (Bild 2.25). Die Adressen geben den Abstand des ersten Byte eines Maschinenbefehls bzw. eines Datenobjektes vom jeweiligen Bereichsanfang an Code SEGMENT 'code' assume cs:code, ds:daten 0000 B R start: mov ax,daten E D8 mov ds,ax 0005 C R 0003 mov x,0003h 000B R 04 add x,0004h 0010 EB FE stop: jmp stop 0012 Code ENDS 0000 Daten SEGMENT 'data' z dw 0 ;Anweisung zur Definition der Variablen z y dw 0 ;Anweisung zur Definition der Variablen y x dw 0 ;Anweisung zur Definition der Variablen x 0006 Daten ENDS Bild 2.25: Adressierung als Abstand vom Bereichsanfang in Byte In diesem Fall hat eine Adresse 16 Adressbits. Man kann also nur 2 16 Adressen bilden. Die Menge der Adressen wird auch Adressierungsraum genannt. Mit 16 Adressbits kann man 64 KByte adressieren. Im vorliegenden Beispiel kann ein Bereich maximal 64KByte umfassen Code SEGMENT 'code' assume cs:code, ds:daten 0000 B R start: mov ax,daten E D8 mov ds,ax 0005 C R 0003 mov x,0003h 000B R 04 add x,0004h 0010 EB FE stop: jmp stop FFFF Code ENDS 0000 Daten SEGMENT 'data' z dw y dw x dw FFFF Daten ENDS Bild 2.26: Die Beschränkung des Adressierungsraumes bei 16 Adressbits Wenn die maximale Größe eines Codebereiches bzw. eines Datenobjektbereiches auf diese Weise beschränkt ist, muss man eine besondere Struktur vorsehen, um 37

20 Ein Exkurs zur Veranschaulichung der Assemblersprache und des Programmablaufs durch Zusammenfassung mehrerer solcher Bereiche ein größeres Programm zu erzeugen. Man macht die einzelnen Bereiche durch Anweisungen eindeutig erkennbar und nennt die dadurch entstehenden Einheiten Segmente. In Bild 2.27 entsteht das Segment mit dem Namen Code und das Segment mit dem Namen Daten. Man kann ein Programm aus mehreren Code- und Datenbereichen zusammensetzen, von denen jeder bis zu 64KByte umfassen kann. Man spricht dann auch von Segmenten. Zu ihrer Unterscheidung bekommen die Segmente eindeutige Namen Code SEGMENT 'code' assume cs:code, ds:daten 0000 B R start: mov ax,daten E D8 mov ds,ax 0005 C R 0003 mov x,0003h 000B R 04 add x,0004h 0010 EB FE stop: jmp stop 0012 Code ENDS 0000 Daten SEGMENT 'data' z dw y dw x dw Daten ENDS Bild 2.27: Code- und Datenbereich als Segmente Sobald man den Adressierungsraum deutlich vergrößert, braucht man die einzeln erkennbaren Segmente nicht mehr. Durch eine Adresse dieses Raumes ist jedes Element des Code- bzw. Datenbereiches eines heute üblichen Programms eindeutig erkennbar. In Bild 2.28 ist die Anfangsadresse des Code- und die des Datenobjektbereiches in diesem Adressraum willkürlich gewählt. Die Adressen haben 32 Bit. Mit 32 Adressbits kann man 4 GigaByte adressieren. Jedes Byte aus der Bytefolge, die bei der Hintereinanderordnung der Maschinenbefehle bzw. Datenobjekte eines heute bekannten Programms entsteht, ist mit einer solchen Adresse lokalisierbar angenommene Anfangsadresse des Codebereiches E D8 mov ds,ax C R 0003 mov x,0003h B R 04 add x,0004h EB FE stop: jmp stop angenommene Anfangsadresse des Datenobjektbereiches y dw x dw 0 FFFF FFFF Wegen der beschränkten Adreßräume der Segmente muss man ein großes Programm durch Zusammenfügen mehrerer Segmente bilden. Hier entfällt das. Bild 2.28: Code- und Datenbereich in einem Adressraum von 4 GigaByte 38

Im Original veränderbare Word-Dateien

Im Original veränderbare Word-Dateien Das Von-Neumann-Prinzip Prinzipien der Datenverarbeitung Fast alle modernen Computer funktionieren nach dem Von- Neumann-Prinzip. Der Erfinder dieses Konzeptes John von Neumann (1903-1957) war ein in den

Mehr

Die Mikroprogrammebene eines Rechners

Die Mikroprogrammebene eines Rechners Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl holen Befehl dekodieren Operanden holen etc.

Mehr

Technische Informatik. Der VON NEUMANN Computer

Technische Informatik. Der VON NEUMANN Computer Technische Informatik Der VON NEUMANN Computer Inhalt! Prinzipieller Aufbau! Schaltkreise! Schaltnetze und Schaltwerke! Rechenwerk! Arbeitsspeicher! Steuerwerk - Programmausführung! Periphere Geräte! Abstraktionsstufen

Mehr

1.7 Assembler Programmierung

1.7 Assembler Programmierung 1.7 Assembler Programmierung Die nach außen sichtbare Programmierschnittstelle eines Prozessors ist der Befehlscode. Dies ist eine binäre Dateninformation, die vom Prozessor Byte für Byte abgearbeitet

Mehr

B1 Stapelspeicher (stack)

B1 Stapelspeicher (stack) B1 Stapelspeicher (stack) Arbeitsweise des LIFO-Stapelspeichers Im Kapitel "Unterprogramme" wurde schon erwähnt, dass Unterprogramme einen so genannten Stapelspeicher (Kellerspeicher, Stapel, stack) benötigen

Mehr

L3. Datenmanipulation

L3. Datenmanipulation L Datenmanipulation Aufbau eines Computers Prozessor, Arbeitsspeicher und system Maschinensprachen und Maschinenbefehle Beispiel einer vereinfachten Maschinensprache Ausführung des Programms und Befehlszyklus

Mehr

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Kap 4. 4 Die Mikroprogrammebene eines Rechners 4 Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten (Befehl holen, Befehl dekodieren, Operanden holen etc.).

Mehr

Zahlendarstellungen und Rechnerarithmetik*

Zahlendarstellungen und Rechnerarithmetik* Zahlendarstellungen und Rechnerarithmetik* 1. Darstellung positiver ganzer Zahlen 2. Darstellung negativer ganzer Zahlen 3. Brüche und Festkommazahlen 4. binäre Addition 5. binäre Subtraktion *Die Folien

Mehr

Teil 1: Prozessorstrukturen

Teil 1: Prozessorstrukturen Teil 1: Prozessorstrukturen Inhalt: Mikroprogrammierung Assemblerprogrammierung Motorola 6809: ein einfacher 8-Bit Mikroprozessor Mikrocontroller Koprozessoren CISC- und RISC-Prozessoren Intel Pentium

Mehr

2.2 Rechnerorganisation: Aufbau und Funktionsweise

2.2 Rechnerorganisation: Aufbau und Funktionsweise 2.2 Rechnerorganisation: Aufbau und Funktionsweise é Hardware, Software und Firmware é grober Aufbau eines von-neumann-rechners é Arbeitsspeicher, Speicherzelle, Bit, Byte é Prozessor é grobe Arbeitsweise

Mehr

Funktionaler Aufbau eines Computers Untersuchung von Delphi-Compilaten

Funktionaler Aufbau eines Computers Untersuchung von Delphi-Compilaten Funktionaler Aufbau eines Computers Im Folgenden soll der Weg untersucht werden, wie ein Programm, das von einem Compiler/Interpreter in Maschinencode übertragen wurde, schließlich vom Prozessor abgearbeitet

Mehr

Übung -- d001_7-segmentanzeige

Übung -- d001_7-segmentanzeige Übung -- d001_7-segmentanzeige Übersicht: Der Steuerungsablauf für die Anzeige der Ziffern 0 bis 9 mittels einer 7-Segmentanzeige soll mit einer speicherprogrammierbaren Steuerung realisiert werden. Lehrziele:

Mehr

Teil VIII Von Neumann Rechner 1

Teil VIII Von Neumann Rechner 1 Teil VIII Von Neumann Rechner 1 Grundlegende Architektur Zentraleinheit: Central Processing Unit (CPU) Ausführen von Befehlen und Ablaufsteuerung Speicher: Memory Ablage von Daten und Programmen Read Only

Mehr

Arbeiten mit Arrays. 4.1 Eigenschaften. 4.1.1 Schlüssel und Element. Kapitel 4

Arbeiten mit Arrays. 4.1 Eigenschaften. 4.1.1 Schlüssel und Element. Kapitel 4 Arbeiten mit s Eine effiziente Programmierung mit PHP ohne seine s ist kaum vorstellbar. Diese Datenstruktur muss man verstanden haben, sonst brauchen wir mit weitergehenden Programmiertechniken wie der

Mehr

Zahlensysteme. Digitale Rechner speichern Daten im Dualsystem 435 dez = 1100110011 binär

Zahlensysteme. Digitale Rechner speichern Daten im Dualsystem 435 dez = 1100110011 binär Zahlensysteme Menschen nutzen zur Angabe von Werten und zum Rechnen vorzugsweise das Dezimalsystem Beispiel 435 Fische aus dem Teich gefischt, d.h. 4 10 2 + 3 10 1 +5 10 0 Digitale Rechner speichern Daten

Mehr

5.BMaschinensprache und Assembler

5.BMaschinensprache und Assembler Die Maschinenprogrammebene eines Rechners Jörg Roth 268 5.BMaschinensprache und Assembler Die vom Prozessor ausführbaren Befehle liegen im Binärformat vor. Nur solche Befehle sind direkt ausführbar. So

Mehr

C:\WINNT\System32 ist der Pfad der zur Datei calc.exe führt. Diese Datei enthält das Rechner - Programm. Klicke jetzt auf Abbrechen.

C:\WINNT\System32 ist der Pfad der zur Datei calc.exe führt. Diese Datei enthält das Rechner - Programm. Klicke jetzt auf Abbrechen. . Das Programm- Icon Auf dem Desktop deines Computers siehst du Symbolbildchen (Icons), z.b. das Icon des Programms Rechner : Klicke mit der rechten Maustaste auf das Icon: Du siehst dann folgendes Bild:

Mehr

Binär- und Hexadezimal-Zahl Arithmetik.

Binär- und Hexadezimal-Zahl Arithmetik. Binär- und Hexadezimal-Zahl Arithmetik. Prof. Dr. Dörte Haftendorn, MuPAD 4, http://haftendorn.uni-lueneburg.de Aug.06 Automatische Übersetzung aus MuPAD 3.11, 24.04.02 Version vom 12.10.05 Web: http://haftendorn.uni-lueneburg.de

Mehr

Technische Informatik I. Übung 3 Speicherhierarchie. v t d 0 d 1 d 2 d 3 0 1 2 3. Technische Informatik I Übung 3. Technische Informatik I Übung 3

Technische Informatik I. Übung 3 Speicherhierarchie. v t d 0 d 1 d 2 d 3 0 1 2 3. Technische Informatik I Übung 3. Technische Informatik I Übung 3 Institut für Kommunikationsnetze und Rechnersysteme Technische Informatik I Paul J. Kühn, Matthias Meyer Übung 3 Speicherhierarchie Inhaltsübersicht Aufgabe 3.1 Daten-Cache Aufgabe 3.2 Virtueller Speicher

Mehr

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13 UNIVERSITÄT LEIPZIG Enterprise Computing Einführung in das Betriebssystem z/os Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13 Verarbeitungsgrundlagen Teil 2 Virtual Storage el0100 copyright

Mehr

1. Übung - Einführung/Rechnerarchitektur

1. Übung - Einführung/Rechnerarchitektur 1. Übung - Einführung/Rechnerarchitektur Informatik I für Verkehrsingenieure Aufgaben inkl. Beispiellösungen 1. Aufgabe: Was ist Hard- bzw. Software? a Computermaus b Betriebssystem c Drucker d Internetbrowser

Mehr

9.0 Komplexe Schaltwerke

9.0 Komplexe Schaltwerke 9.0 Komplexe Schaltwerke Die Ziele dieses Kapitels sind: Lernen komplexe Schaltwerke mittels kleinerer, kooperierender Schaltwerke zu realisieren Verstehen wie aufgabenspezifische Mikroprozessoren funktionieren

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Grundlagen der Rechnerarchitektur

Grundlagen der Rechnerarchitektur Grundlagen der Rechnerarchitektur Einführung Unsere erste Amtshandlung: Wir schrauben einen Rechner auf Grundlagen der Rechnerarchitektur Einführung 2 Vorlesungsinhalte Binäre Arithmetik MIPS Assembler

Mehr

Ein polyadisches Zahlensystem mit der Basis B ist ein Zahlensystem, in dem eine Zahl x nach Potenzen von B zerlegt wird.

Ein polyadisches Zahlensystem mit der Basis B ist ein Zahlensystem, in dem eine Zahl x nach Potenzen von B zerlegt wird. Zahlensysteme Definition: Ein polyadisches Zahlensystem mit der Basis B ist ein Zahlensystem, in dem eine Zahl x nach Potenzen von B zerlegt wird. In der Informatik spricht man auch von Stellenwertsystem,

Mehr

Programmierkurs: Delphi: Einstieg

Programmierkurs: Delphi: Einstieg Seite 1 von 6 Programmierkurs: Delphi: Einstieg Aus Wikibooks Inhaltsverzeichnis 1 Einstieg Einstieg Was ist Delphi Borland Delphi ist eine RAD-Programmierumgebung von Borland. Sie basiert auf der Programmiersprache

Mehr

Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online

Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online Themen heute Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online Besprechung des 3. Übungsblattes Aufgabe 3 Speicherplätze für Mikrocode-Anweisungen

Mehr

JMPCN Sprungbefehl nur ausführen, wenn VKE 0 ist. JMPC Sprungbefehl nur ausführen, wenn VKE 1 ist. JMP Ohne Bedingung zur Sprungmarke wechseln.

JMPCN Sprungbefehl nur ausführen, wenn VKE 0 ist. JMPC Sprungbefehl nur ausführen, wenn VKE 1 ist. JMP Ohne Bedingung zur Sprungmarke wechseln. Grafische Elemente Netzwerke erstellen Netzwerke erstellen Programme werden in KOP durch grafische Elemente dargestellt. Abfrage einer Variable auf den Zustand 1 Abfrage einer Variable auf den Zustand

Mehr

L1 Programmiersprachen

L1 Programmiersprachen 1 Einführung Delphi 1.1 Wie erstelle ich eigene Software? Um spezielle Problemlösungen zu erstellen bzw. Unterstützung durch den Computer zu erfahren, bedient sich der Anwender spezifischer Softwareprogramme,

Mehr

Das Prinzip an einem alltäglichen Beispiel

Das Prinzip an einem alltäglichen Beispiel 3.2 Pipelining Ziel: Performanzsteigerung é Prinzip der Fließbandverarbeitung é Probleme bei Fließbandverarbeitung BB TI I 3.2/1 Das Prinzip an einem alltäglichen Beispiel é Sie kommen aus dem Urlaub und

Mehr

Technische Informatik - Eine Einführung

Technische Informatik - Eine Einführung Martin-Luther-Universität Halle-Wittenberg Fachbereich Mathematik und Informatik Lehrstuhl für Technische Informatik Prof. P. Molitor Ausgabe: 2005-02-21 Abgabe: 2005-02-21 Technische Informatik - Eine

Mehr

Brückenkurs / Computer

Brückenkurs / Computer Brückenkurs / Computer Sebastian Stabinger IIS 23 September 2013 Sebastian Stabinger (IIS) Brückenkurs / Computer 23 September 2013 1 / 20 Content 1 Allgemeines zum Studium 2 Was ist ein Computer? 3 Geschichte

Mehr

Kapitel 1. Programmierkurs. 1.2 Allgemeiner Aufbau des Computers. 1.1 Hallo, Computer...?

Kapitel 1. Programmierkurs. 1.2 Allgemeiner Aufbau des Computers. 1.1 Hallo, Computer...? Kapitel 1 Programmierkurs Birgit Engels, Anna Schulze ZAIK Universität zu Köln Einführung Hallo, Computer...? Aufbau eines Computers Was ist eine Programmiersprache? Der Programmierprozess Warum Java?

Mehr

Instruktionssatz-Architektur

Instruktionssatz-Architektur Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2005/2006 Übersicht 1 Einleitung 2 Bestandteile der ISA 3 CISC / RISC Übersicht 1 Einleitung 2 Bestandteile

Mehr

Ausarbeitung des Interpreter Referats

Ausarbeitung des Interpreter Referats Ausarbeitung des Interpreter Referats Gliederung 1. Programmiersprache 1.2. Syntax 1.2.1. Konkrete Syntax 1.2.2. Abstrakter Syntax Baum (Abstrakte Syntax) 2. Parser 2.1. Syntaktische Struktur einer Sprache

Mehr

D A T E N... 1 Daten Micheuz Peter

D A T E N... 1 Daten Micheuz Peter D A T E N.....! Symbole, Alphabete, Codierung! Universalität binärcodierter Daten! Elementare Datentypen! Speicherung binärcodierter Daten! Befehle und Programme! Form und Bedeutung 1 Daten Micheuz Peter

Mehr

3 Berechnungen und Variablen

3 Berechnungen und Variablen 3 Berechnungen und Variablen Du hast Python installiert und weißt, wie man die Python-Shell startet. Jetzt kannst Du etwas damit machen. Wir fangen mit ein paar einfachen Berechnungen an und wenden uns

Mehr

Einführung (0) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München

Einführung (0) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München Einführung (0) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München Einführung (1) Was ist ein Rechner? Maschine, die Probleme für

Mehr

Der 80535-Übungsrechner

Der 80535-Übungsrechner 6. Für den Test kleinerer Programmodule ohne Berücksichtigung des Echtzeitverhaltens ist der Simulator das geeignete Werkzeug. Durch die Möglichkeit der Einzelschrittausführung sind erste Tests von Programmen

Mehr

Das Rechnermodell von John von Neumann

Das Rechnermodell von John von Neumann Das Rechnermodell von John von Neumann Historisches Die ersten mechanischen Rechenmaschinen wurden im 17. Jahhundert entworfen. Zu den Pionieren dieser Entwichlung zählen Wilhelm Schickard, Blaise Pascal

Mehr

Rechnerorganisation 2 TOY. Karl C. Posch. co1.ro_2003. Karl.Posch@iaik.tugraz.at 16.03.2011

Rechnerorganisation 2 TOY. Karl C. Posch. co1.ro_2003. Karl.Posch@iaik.tugraz.at 16.03.2011 Technische Universität Graz Institut tfür Angewandte Informationsverarbeitung und Kommunikationstechnologie Rechnerorganisation 2 TOY Karl C. Posch Karl.Posch@iaik.tugraz.at co1.ro_2003. 1 Ausblick. Erste

Mehr

TIMI: Technische Informatik für Medieninformatiker

TIMI: Technische Informatik für Medieninformatiker TIMI: Technische Informatik für Medieninformatiker Bachelor-Studiengang Digitale Medien Medieninformatik SS 2004 Niels Pollem Arbeitsgruppe Rechnernetze (Prof. Dr.-Ing. Ute Bormann) Scheduling:

Mehr

Von der Aussagenlogik zum Computer

Von der Aussagenlogik zum Computer Von der Aussagenlogik zum Computer Markus Koch Gymnasium in der Glemsaue Ditzingen Januar 2012 Inhaltsverzeichnis Einleitung...3 Der Computer...3 Grundlagen...4 Wahrheitstabellen...4 Aussagenlogik...4

Mehr

Einführung in Automation Studio

Einführung in Automation Studio Einführung in Automation Studio Übungsziel: Der links abgebildete Stromlaufplan soll mit einer SPS realisiert werden und mit Automation Studio programmiert werden. Es soll ein Softwareobjekt Logik_1 in

Mehr

Lektion 3: Was ist und was kann ein Computer?

Lektion 3: Was ist und was kann ein Computer? Lektion 3: Was ist und was kann ein Computer? Helmar Burkhart Informatik burkhart@ifi.unibas.ch EINFÜHRUNG IN DIE INFORMATIK I 3-0 Übersicht Lektion 3 Hardware Software Aufbau eines Computers Rechnerkern

Mehr

Name: ES2 Klausur Thema: ARM 25.6.07. Name: Punkte: Note:

Name: ES2 Klausur Thema: ARM 25.6.07. Name: Punkte: Note: Name: Punkte: Note: Hinweise für das Lösen der Aufgaben: Zeit: 95 min. Name nicht vergessen! Geben Sie alle Blätter ab. Die Reihenfolge der Aufgaben ist unabhängig vom Schwierigkeitsgrad. Erlaubte Hilfsmittel

Mehr

Compiler: Vom Code zum Maschinen-Code. C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg

Compiler: Vom Code zum Maschinen-Code. C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg Compiler: Vom Code zum Maschinen-Code C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg Prof. Dr. Jan Dünnweber Zusammenhänge: C und Assembler Hochsprachen

Mehr

Programmieren was ist das genau?

Programmieren was ist das genau? Programmieren was ist das genau? Programmieren heisst Computerprogramme herstellen (von griechisch programma für Vorschrift). Ein Computerprogramm ist Teil der Software eines Computers. Als Software bezeichnet

Mehr

FH Jena Prüfungsaufgaben Prof. Giesecke FB ET/IT Binäre Rechenoperationen WS 09/10

FH Jena Prüfungsaufgaben Prof. Giesecke FB ET/IT Binäre Rechenoperationen WS 09/10 FB ET/IT Binäre Rechenoperationen WS 9/ Name, Vorname: Matr.-Nr.: Zugelassene Hilfsmittel: beliebiger Taschenrechner eine selbst erstellte Formelsammlung Wichtige Hinweise: Ausführungen, Notizen und Lösungen

Mehr

Webseitennavigation mit dem Content-Management-System Imperia. Zentrum für Informationsverarbeitung Westfälische Wilhelms-Universität Münster

Webseitennavigation mit dem Content-Management-System Imperia. Zentrum für Informationsverarbeitung Westfälische Wilhelms-Universität Münster Webseitennavigation mit dem Content-Management-System Imperia Zentrum für Informationsverarbeitung Westfälische Wilhelms-Universität Münster 10. Januar 2006 Inhaltsverzeichnis 1. Einführung 4 2. Rubrikenstruktur

Mehr

2. Rechnerarchitektur 2.1 einfache Computer

2. Rechnerarchitektur 2.1 einfache Computer Fakultät Informatik Institut Systemarchitektur Professur Rechnernetze WS 2012 LV Informatik-I für Verkehrsingenieure 2. Rechnerarchitektur 2.1 einfache Computer Dr. rer.nat. D. Gütter Mail: WWW: Dietbert.Guetter@tu-dresden.de

Mehr

Projekt Nr. 15: Einen elektronischen Würfel erstellen

Projekt Nr. 15: Einen elektronischen Würfel erstellen Nun wissen Sie, wie Sie Zufallszahlen erzeugen können. Als Nächstes wollen wir diese neuen Kenntnisse gleich in die Tat umsetzen, indem wir einen elektronischen Würfel konstruieren. Projekt Nr. 15: Einen

Mehr

Rechnernutzung in der Physik. Betriebssysteme

Rechnernutzung in der Physik. Betriebssysteme Rechnernutzung in der Physik Betriebssysteme 1 Betriebssysteme Anwendungsprogramme Betriebssystem Treiber BIOS Direkter Zugriff von Anwenderprogrammen auf Hardware nur in Ausnahmefällen sinnvoll / möglich:

Mehr

1. Geschichte des Computers

1. Geschichte des Computers 1. Geschichte des Computers Als erster Computer galt "Abakus", der vor rund 5 000 Jahren von den Chinesen erfunden wurde. Blaise Pascal (1623-1662): erfand 1643 einen Apparat, mit dem man einfache Additionen

Mehr

Leitung 1 Leitung 2 0 0 0 1 1 0 1 1

Leitung 1 Leitung 2 0 0 0 1 1 0 1 1 1 1 Vorbetrachtungen Wie könnte eine Codierung von Zeichen im Computer realisiert werden? Der Computer arbeitet mit elektrischem Strom, d. h. er kann lediglich zwischen den beiden Zuständen Strom an und

Mehr

Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome

Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome (Timo Heinrich, t_hein03@uni-muenster.de) Inhaltsverzeichnis: 0.Einleitung 1.Teil: Helloworldprogramm 1.1 Quellcode: Helloworld.cpp 1.2

Mehr

Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13

Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13 Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13 Eine Einführung in Aufbau, Funktionsweise, Programmierung und Nutzen von Mikroprozessoren Teil II: Wat iss ene Bit, Byte un Word?

Mehr

Computerarithmetik ( )

Computerarithmetik ( ) Anhang A Computerarithmetik ( ) A.1 Zahlendarstellung im Rechner und Computerarithmetik Prinzipiell ist die Menge der im Computer darstellbaren Zahlen endlich. Wie groß diese Menge ist, hängt von der Rechnerarchitektur

Mehr

Betriebssysteme Kap B: Hardwaremechanismen

Betriebssysteme Kap B: Hardwaremechanismen 1 Betriebssysteme Kap B: Hardwaremechanismen 2 Beispielprozessor Ein- / Ausgabe p[ ] ir Leitwerk pc Register a f sp Rechenwerk Speicher m[ ] Spezielle Register Flagregister f f.i: Interrupt-Enable-Flag

Mehr

Information in einem Computer ist ein

Information in einem Computer ist ein 4 Arithmetik Die in den vorhergehenden Kapiteln vorgestellten Schaltungen haben ausschließlich einfache, Boole sche Signale verarbeitet. In diesem Kapitel wird nun erklärt, wie Prozessoren mit Zahlen umgehen.

Mehr

Software Engineering, SoSe 07, WSI, D. Huson, (Original Author: A. Zeller), 4. Juni 2007 45

Software Engineering, SoSe 07, WSI, D. Huson, (Original Author: A. Zeller), 4. Juni 2007 45 Software Engineering, SoSe 07, WSI, D. Huson, (Original Author: A. Zeller), 4. Juni 2007 45 7 Programmverstehen + Fehlersuche Nach einer Vorlesung von Prof. Andreas Zeller, Lehrstuhl Softwaretechnik Universität

Mehr

Programmieren. Wie entsteht ein Programm

Programmieren. Wie entsteht ein Programm Wie entsteht ein Programm 1/9 1. Schritt: Programmentwurf Der wichtigste Teil beim Erstellen eines Programms ist der Programmentwurf. Dabei wird das vorgegebene Problem analysiert, es wird ermittelt, welche

Mehr

Theoretische Informatik SS 04 Übung 1

Theoretische Informatik SS 04 Übung 1 Theoretische Informatik SS 04 Übung 1 Aufgabe 1 Es gibt verschiedene Möglichkeiten, eine natürliche Zahl n zu codieren. In der unären Codierung hat man nur ein Alphabet mit einem Zeichen - sagen wir die

Mehr

Zentraleinheit (CPU) Arbeitsspeicher. Ausgabegeräte

Zentraleinheit (CPU) Arbeitsspeicher. Ausgabegeräte 2 Zusammenspiel der Hardware mit der Software ( auf dem PC) 2.1. Hardware Etwas zur Historie: Serienproduktion von Computern begann in den 60er Jahren ab etwa 1966 Einsatz von integrierten Schaltungen,

Mehr

Numerische Datentypen. Simon Weidmann

Numerische Datentypen. Simon Weidmann Numerische Datentypen Simon Weidmann 08.05.2014 1 Ganzzahlige Typen 1.1 Generelles Bei Datentypen muss man immer zwei elementare Eigenschaften unterscheiden: Zuerst gibt es den Wertebereich, zweitens die

Mehr

Alle Speicherplatinen können als Programm- bzw. Arbeitsspeicher

Alle Speicherplatinen können als Programm- bzw. Arbeitsspeicher -1-1. Überblick Das System.009 umfaßt programmierbare binäre Steuereinrichtungen für den industriellen Einsatz. Charakteristisch ist, daß die BOOLEschen Gleichungen, die den konkreten Steueralgorithmus

Mehr

ZX81 **Basic Version 1.02 Handbuch

ZX81 **Basic Version 1.02 Handbuch ZX81 **Basic Version 1.02 Handbuch **Basic ist eine Erweiterung für das ZX81-Basic, die ohne Hardwareänderungen auf jedem ZX81 lauffähig ist. Mit **Basic ist es möglicht, Befehle des ZX81-Basics zu ändern

Mehr

L6. Operatoren und Ausdrücke

L6. Operatoren und Ausdrücke L6. Operatoren und Ausdrücke 1. Arithmetische Operatoren: +, -, *, /, %, --, ++ 2. Zuweisung-Operatoren: =, +=, -=, *=, /= 3. Vergleichsoperatoren: =, ==,!= 4. Logische Operatoren:!, &&, 5.

Mehr

IRF2000, IF1000 Application Note ModbusTCP API

IRF2000, IF1000 Application Note ModbusTCP API Version 2.0 Original-Application Note ads-tec GmbH IRF2000, IF1000 Application Note ModbusTCP API Version 2.0 Stand: 28.10.2014 ads-tec GmbH 2014 IRF2000 IF1000 2 Inhaltsverzeichnis 1 Einführung... 3 2

Mehr

Daten, Informationen, Kodierung. Binärkodierung

Daten, Informationen, Kodierung. Binärkodierung Binärkodierung Besondere Bedeutung der Binärkodierung in der Informatik Abbildung auf Alphabet mit zwei Zeichen, in der Regel B = {0, 1} Entspricht den zwei möglichen Schaltzuständen in der Elektronik:

Mehr

Daten- Bus. Steuerbus

Daten- Bus. Steuerbus 1 Grundlagen... 1 1.1 Rechnerarchitektur... 1 1.2 Takt... 2 1.3 Speicherarchitektur... 2 2 Mikroprozessor... 4 2.1 Begriffsbestimmung... 4 2.2 Geschichte... 4 2.3 Aufbau eines einfachen Mikroprozessors...

Mehr

Repräsentation von Daten Binärcodierung von rationalen Zahlen und Zeichen

Repräsentation von Daten Binärcodierung von rationalen Zahlen und Zeichen Kapitel 4: Repräsentation von Daten Binärcodierung von rationalen Zahlen und Zeichen Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht Codierung von rationalen Zahlen Konvertierung

Mehr

syntax.tex Eine Übersicht

syntax.tex Eine Übersicht syntax.tex Eine Übersicht Bernd Worsch 7. Juli 1997 Inhaltsverzeichnis 1 Einleitung 1 2 Bevor es funktioniert... 1 3 Grundelemente von syntax.tex 1 4 Strukturelemente von syntax.tex 3 5 Setzen von Syntaxdiagrammen

Mehr

17.2 MS-Access Projekte

17.2 MS-Access Projekte 964 Von MS-Access 2000 zum SQL-Server 17.2 MS-Access Projekte MS-Access-Projekte, die die Dateiendung adp besitzen, werden als Front-End-Anwendung verwendet. Für die Back-End-Seite gibt es mehrere Möglichkeiten.

Mehr

5 Speicherverwaltung. bs-5.1 1

5 Speicherverwaltung. bs-5.1 1 5 Speicherverwaltung bs-5.1 1 Pufferspeicher (cache) realer Speicher Primärspeicher/Arbeitsspeicher (memory) Sekundärspeicher/Hintergrundspeicher (backing store) (Tertiärspeicher/Archivspeicher) versus

Mehr

Der Rechner. Grundbegriffe. Aufbau. Funktionsweise. Betriebssystem. Kategorisierung. PC-Komponenten. Prof. Dr. Aris Christidis

Der Rechner. Grundbegriffe. Aufbau. Funktionsweise. Betriebssystem. Kategorisierung. PC-Komponenten. Prof. Dr. Aris Christidis Der Rechner Grundbegriffe Aufbau Funktionsweise Betriebssystem Kategorisierung PC-Komponenten Auf der Grundlage eines Programms kann ein Computer Daten mit seiner Umgebung austauschen, mathematische und

Mehr

bereits in A,3 und A.4: Betrachtung von Addierschaltungen als Beispiele für Schaltnetze und Schaltwerke

bereits in A,3 und A.4: Betrachtung von Addierschaltungen als Beispiele für Schaltnetze und Schaltwerke Rechnerarithmetik Rechnerarithmetik 22 Prof. Dr. Rainer Manthey Informatik II Übersicht bereits in A,3 und A.4: Betrachtung von Addierschaltungen als Beispiele für Schaltnetze und Schaltwerke in diesem

Mehr

Informatik I WS 07/08 Tutorium 24

Informatik I WS 07/08 Tutorium 24 Info I Tutorium 24 Informatik I WS 07/08 Tutorium 24 15.11.07 Bastian Molkenthin E-Mail: infotut@sunshine2k.de Web: http://infotut.sunshine2k.de Review / Organisatorisches o Probleme bei Foliendownload?

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm 1 Vom Problem zum Programm Ein Problem besteht darin, aus einer gegebenen Menge von Informationen eine weitere (bisher unbekannte) Information zu bestimmen. 1 Vom Problem zum Programm Ein Algorithmus ist

Mehr

Programmierung mit NQC: Kommunikation zwischen zwei RCX

Programmierung mit NQC: Kommunikation zwischen zwei RCX Programmierung mit NQC: Kommunikation zwischen zwei RCX Teil : Grundlagen Martin Schmidt 7. Februar 24 Teil : Grundlagen Zahlensysteme : Binärsystem Ziffern: und Bit = binary digit (Binärziffer) Einfach

Mehr

2 Darstellung von Zahlen und Zeichen

2 Darstellung von Zahlen und Zeichen 2.1 Analoge und digitale Darstellung von Werten 79 2 Darstellung von Zahlen und Zeichen Computer- bzw. Prozessorsysteme führen Transformationen durch, die Eingaben X auf Ausgaben Y abbilden, d.h. Y = f

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

2 Der Schnelleinstieg *

2 Der Schnelleinstieg * 7 2 Der Schnelleinstieg * Eine Programmiersprache können Sie auf verschiedene Art und Weise lernen. Sie können sich zuerst mit den Konzepten befassen und anschließend mit der Praxis oder umgekehrt. Damit

Mehr

Tooldemo: Soot. Softwareanalyse SS 2011 Veranstalter: Prof. Dr. Klaus Ostermann Tillmann Rendel, M.Sc. Von Kim Maurice Nuspl

Tooldemo: Soot. Softwareanalyse SS 2011 Veranstalter: Prof. Dr. Klaus Ostermann Tillmann Rendel, M.Sc. Von Kim Maurice Nuspl Softwareanalyse SS 2011 Veranstalter: Prof. Dr. Klaus Ostermann Tillmann Rendel, M.Sc. Tooldemo: Soot (http://www.sable.mcgill.ca/soot/) Von Kim Maurice Nuspl Gliederung: Was ist Soot? Eclipse Plugin Grundlagen

Mehr

Aufbau und Funktionsweise eines Computers

Aufbau und Funktionsweise eines Computers Aufbau und Funktionsweise eines Computers Thomas Röfer Hardware und Software von Neumann Architektur Schichtenmodell der Software Zahlsysteme Repräsentation von Daten im Computer Hardware Prozessor (CPU)

Mehr

Anleitung fu r die Vorlage restpunkte.xlsx

Anleitung fu r die Vorlage restpunkte.xlsx Anleitung fu r die Vorlage restpunkte.xlsx Inhalt 1 Einleitung... 1 2 Grundsätzliche Bedienungshinweise... 1 3 Wichtige Regeln für das Ausfüllen... 2 4 Erfassen der Information... 2 4.1 Das Blatt Inspektionen...

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18 Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.

Mehr

Übersichtlichkeit im Dokumentenmanagement

Übersichtlichkeit im Dokumentenmanagement Übersichtlichkeit im Dokumentenmanagement Workshop Software GmbH Siemensstr. 21 47533 Kleve 02821 / 731 20 02821 / 731 299 www.workshop-software.de Verfasser: SK info@workshop-software.de Datum: 02/2012

Mehr

Master-Boot-Record sichern

Master-Boot-Record sichern Master-Boot-Record sichern Allgemeines Mit dem Master-Boot-Record (MBR) kommt der normale Computernutzer nur selten in Kontakt, eigentlich nur zweimal. Bei der Installation von Linux wird in der Regel

Mehr

Handbuch zum Mensurenprogramm

Handbuch zum Mensurenprogramm Handbuch zum Mensurenprogramm Von Reiner Janke March-Buchheim (bei Freiburg) Reiner Janke 1996 Was kann das Programm? Das Programm schreibt Mensurlisten (Weiten-, Längen-, Aufschnittmensuren etc.) von

Mehr

Kurzeinführung in C++

Kurzeinführung in C++ Kurzeinführung in C++ Johannes J. Schneider 27.10.2004 1 Einleitung C++ ist eine heutzutage in vielen Bereichen sehr häufig verwendete Programmiersprache, die auf der Programmiersprache C aufsetzt, aber

Mehr

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Zahlensysteme und Datendarstellung

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Zahlensysteme und Datendarstellung Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Zahlensysteme und Datendarstellung Zahlensysteme Problem: Wie stellt man (große) Zahlen einfach, platzsparend und rechnergeeignet

Mehr

Im Falle der Neueingabe müssen Sie in dem nachfolgendem Formular die Datenquelle auswählen und die Art der Prüfung festlegen.

Im Falle der Neueingabe müssen Sie in dem nachfolgendem Formular die Datenquelle auswählen und die Art der Prüfung festlegen. Ereignismanager Ereignismanager Ereignismanager - Grundsätzliches Allgemeines Mit Hilfe des Ereignismanagers können Sie Feldeingaben (bei Neueingaben oder Änderungen) überprüfen lassen. Sie können für

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

Technische Probleme lösen mit C/C++

Technische Probleme lösen mit C/C++ Technische Probleme lösen mit C/C++ Von der Analyse bis zur Dokumentation von Norbert Heiderich, Wolfgang Meyer 1. Auflage Hanser München 2010 Verlag C.H. Beck im Internet: www.beck.de ISBN 978 3 446 42382

Mehr

Zahlensysteme Seite -1- Zahlensysteme

Zahlensysteme Seite -1- Zahlensysteme Zahlensysteme Seite -- Zahlensysteme Inhaltsverzeichnis Dezimalsystem... Binärsystem... Umrechnen Bin Dez...2 Umrechnung Dez Bin...2 Rechnen im Binärsystem Addition...3 Die negativen ganzen Zahlen im Binärsystem...4

Mehr

Aufgabe 6. Gedichtinterpretation worte sind schatten

Aufgabe 6. Gedichtinterpretation worte sind schatten Aufgabe 6 Dennis Blöte, 08.12.2006 Gedichtinterpretation worte sind schatten Das Gedicht worte sind schatten wurde 1969 von Eugen Gomringer geschrieben und befasst sich auf spielerische Art und Weise mit

Mehr

Die arithmetischen Operatoren sind +, -, *, /, ^ für die Addition, Subtraktion, Multiplikation, Division und Potenzierung

Die arithmetischen Operatoren sind +, -, *, /, ^ für die Addition, Subtraktion, Multiplikation, Division und Potenzierung 4 FORMELN Formeln sind die Grundlagen einer Tabellenkalkulation. Dabei ist der Begriff Formel in unterschiedlicher Weise zu verstehen. So kann eine Formel eine rein rechnerische Auswertung sein, es kann

Mehr

21.10.2013. Vorlesung Programmieren. Agenda. Dezimalsystem. Zahlendarstellung. Zahlendarstellung. Oder: wie rechnen Computer?

21.10.2013. Vorlesung Programmieren. Agenda. Dezimalsystem. Zahlendarstellung. Zahlendarstellung. Oder: wie rechnen Computer? Vorlesung Programmieren Zahlendarstellung Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer Agenda Zahlendarstellung Oder: wie rechnen

Mehr