Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1,...

28
Fachhochschul e Dortmund University of Applied Sciences 1 Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 Programmorganisation Erstellen eines Programms: Programmtext in Quellsprache: Quelldatei oder Sourcedatei Dateikennung z.B. .cpp bei C++ .cpp-Datei Übersetzer .obj-Datei Compiler Objektdatei: Ergebnis der Übersetzung, enthält die Maschineninstruktionen und Datenfelder (mit Anfangswert).

Transcript of Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1,...

Page 1: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

FachhochschuleDortmundUniversity of Applied Sciences

1Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04

Programmorganisation

Erstellen eines Programms:Programmtext in Quellsprache: Quelldatei oder SourcedateiDateikennung z.B. .cpp bei C++

.cpp-Datei Übersetzer .obj-Datei Compiler

Objektdatei: Ergebnis der Übersetzung, enthält die Maschineninstruktionen und Datenfelder (mit Anfangswert).

Page 2: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

FachhochschuleDortmundUniversity of Applied Sciences

2Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04

Programmorganisation

Modulares Programmieren (heute üblich):Programmtext in Quellsprache wird auf mehrere Quelldateien (oder Sourcedateien) aufgeteilt. Bezeichnung: Quellmodule oder Source-module. Dateikennung z.B. .cpp bei C++

.cpp-Modul Übersetzer .obj-Modul Compiler

Das Quellmodul ist die „Texteinheit“, mit der der Compiler etwas anfangen kann: Ausgabe ist das Objektmodul.

Page 3: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 3

FachhochschuleDortmundUniversity of Applied Sciences

Programmorganisation

Was ist ein Quellmodul:

•Programmtext, der eine Menge von Funktionen oder Klassenfunktionen (Memberfunktionen) enthält.•Was sonst noch dazu gehört, bestimmt die jeweilige Programmiersprache.

Page 4: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 4

FachhochschuleDortmundUniversity of Applied Sciences

Programmorganisation

Was ist ein Objektmodul?

•Unvollständiger Maschinentext, der eine Menge von Funktionen umfasst. Es fehlen z. B. Adressen bei den Instruktionen.•Informationen zur Weiterverarbeitung

Page 5: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 5

FachhochschuleDortmundUniversity of Applied Sciences

Programmorganisation

Bindeprogramm, Linker

•Das Programm, das die Objektmodule weiter verarbeitet.•Ein oder mehrere Objektmodule werden zu einer ausführbaren Programmdatei zusammengefasst und fehlende Adressen werden eingetragen.•Die Maschinensprachetexte der einzelnen Module werden einfach hintereinander gepackt.•Den anschließenden Vorgang bezeichnet man als „Binden“ – engl. „to link“.

Page 6: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 6

FachhochschuleDortmundUniversity of Applied Sciences

Programmorganisation

Bei den Programmiersprachen die sich von der Sprache C abstammen, muss genau in einem Modul die Main-Funktion vorkommen, damit eine ausführbare Programmdatei erstellt werden kann.

Diese Main-Funktion hat bei verschiedenen Umgebungen oft verschiedene Namen. (main(), WinMain(),..)

Page 7: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 7

FachhochschuleDortmundUniversity of Applied Sciences

Programmorganisation

Ausführbare Programmdatei:

•Bezeichnung in der Windows-Welt: exe-Datei•Sie enthält das „Image“ für die Ausführung.•„Image“: Maschinensprachetext, der zur Ausführung in den Hauptspeicher geladen wird. Image=Speicherabbild

•Das Laden des Image in den Speicher geschieht durch ein Ladeprogramm (Lader, loader).

Page 8: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 8

FachhochschuleDortmundUniversity of Applied Sciences

Quellmodule Compiler Objektmodule - Adressraum verschiebbar Linker Absolutes „Image“ in exe-Datei Programm Lader „Image“ im Speicher

Nochmals als Übersicht

Page 9: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 9

FachhochschuleDortmundUniversity of Applied Sciences

Programmorganisation

Projekt

Ein Projekt besteht aus einer Mengen von Dateien, die sich üblicherweise in einem eigenen Verzeichnis befinden und die zur Erstellung einer exe-Datei nötig sind.

Alle Quellmodule des Projektes werden übersetzt und zur exe-Datei zusammengebunden. Wird anschließend etwas geändert, werden nur die betroffenen Module übersetzt. Gebunden wird nur, wenn sich eines der Objektmodule geändert hat.

Page 10: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 10

FachhochschuleDortmundUniversity of Applied Sciences

Programmorganisation

Resourcen

Bei Windowsprogrammen werden zusätzlich zu den Quellmodulen in Resourcedateien in einer speziellen Sprache die Fenster beschrieben. Auch diese Dateien werden bei der exe-Erstellung übersetzt und wie Objektmodule eingebunden.

(weiterer Begriff im Zusammenhang mit der automatischen exe-Erstellung in einem Projekt: Makefile)

Page 11: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 11

FachhochschuleDortmundUniversity of Applied Sciences

Beispiel #include <stdio.h> int a,b,c; int main(void) { a=1; b=3; c=a+b; return 0; }

Vom Quelltext zum „Hauptspeicher-Image“

Page 12: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 12

FachhochschuleDortmundUniversity of Applied Sciences; File E:\lv\ss00\ebs1\kap6example\exam.cpp OBJ-Datei

............... ; Line 9 00017 a1 00 00 00 00 mov eax, a 0001c 03 05 00 00 00 00 add eax, b 00022 a3 00 00 00 00 mov c, eax .......... 0002a c3 ret 0 EXE-Datei (Die Adressen werden im "little endian"-Format dargestellt). A1 80 3C 41 00 03 05 84 3C 41 00 A3 88 3C 41 00 Lader Adressen der Variablen bei der Ausführung a 0x00413c80 b 0x00413c84 c 0x00413c88 Adresse des Programmtextes für main() ab 0x00401010

Page 13: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 13

FachhochschuleDortmundUniversity of Applied Sciences

5: int main(void) { 00401010 push ebp 00401011 mov ebp,esp 6: 7: a=1; 00401013 mov a,1 8: b=3; 0040101D mov b,3 9: c=a+b; 00401027 mov eax, a (0x00413c80) 0040102C add eax, b (0x00413c84) 00401032 mov c (0x00413c88),eax 10: 11: return 0; 00401037 xor eax,eax 12: } 00401039 pop ebp 0040103A ret

a 0x00413c80b 0x00413c84c 0x00413c88

Geladener Programmtext im Hauptspeicher

Variablen im Speicher

Page 14: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 14

FachhochschuleDortmundUniversity of Applied Sciences

Bibliothek, lib-Datei

Bisher: Zieldatei war eine exe-Datei

Eine Bibliothek ist eine weitere Zieldateiform bei der Programmentwicklung.

Eine Bibliothek ist ein Ansammlung (Menge) von Objektmodulen.Zur Erinnerung: ein Objektmodul enthält eine Menge von übersetzten Funktionen oder Klassen.

Page 15: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 15

FachhochschuleDortmundUniversity of Applied Sciences

Bibliothek, lib-Datei

Damit: eine Bibliothek ist eine Menge von Funktionen oder Klassen. Zusätzlich: ein Inhaltsverzeichnis mit den Funktionsnamen in Textform.

Eine Bibliothek, die objektorientiert Klassen enthält, bezeichnet man als Klassenbibliothek.

Page 16: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 16

FachhochschuleDortmundUniversity of Applied Sciences

Bibliothek, lib-Datei

Wozu Bibliotheken?Alle obj-Module eines Projektes werden in die exe-Datei eingefügt.

Gibt es danach noch Bezüge auf Funktionen, die nicht in den obj-Modulen vorliegen, wird in Bibliotheken gesucht. Wird eine Funktion mit dem gesuchten Namen gefunden, so wird sie aus der Bibliothek gelesen und in die exe-Datei eingefügt.

Page 17: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 17

FachhochschuleDortmundUniversity of Applied Sciences

Bibliothek, lib-Datei

Schnittstelle einer Bibliothek für den Programmierer:

Der Programmierer muss alle in der Bibliothek enthaltenen Funktionen oder Klassen kennen.Andere Bezeichnung: API Application Programming Interface

Er kann die Funktionen in seinen Quellmodulen aufrufen, der Linker holt sich die Programmtexte aus seinen Bibliotheken.

Page 18: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 18

FachhochschuleDortmundUniversity of Applied Sciences

Bibliothek, lib-Datei

Wie kommt man zu einer lib-Datei?

ProjektIn das Projekt werden eingefügt:Quellsprachemodule, bereits vorhandene Objektmodule.

Erstellungsziel: Bibliothek (engl. (static) Library)Wichtig: im Projekt darf keine main-Funktion sein!

Page 19: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 19

FachhochschuleDortmundUniversity of Applied Sciences

DLL

DLL=Dynamic Loadable Library(Gegensatz: die vorher behandelte „static“ Library)Dynamisch ladbare Bibliothek

Wenn viele Maschinenprogrammtexte aus Bibliotheken in die exe-Datei eingebunden werden, kann die exe-Datei sehr groß werden.

Page 20: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 20

FachhochschuleDortmundUniversity of Applied Sciences

DLL

•Viele Funktionen in dem „Image“ werden bei einem bestimmten Programmlauf überhaupt nicht benötigt.Z.B. Fehlerfunktionen, wenn kein Fehler auftritt.

•Viele Programme enthalten dieselben Funktionen in ihrem „Image“. Z.B. Fensterfunktionen bei Windows-Programmen.

Page 21: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 21

FachhochschuleDortmundUniversity of Applied Sciences

DLL

Abhilfe: DLL

exe-Datei DLL

Zur Ausführung wird das Image der exe-Datei geladen. Bei Aufruf von Funktionen, die in der DLL sind, wird dynamisch das DLL-Image nachgeladen.Weiterer Vorteil: Ist ein DLL-Image geladen, so können sich mehrere Programme der Funktionen aus der DLL bedienen. Das Betriebssystem führt Buch darüber!

Page 22: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 22

FachhochschuleDortmundUniversity of Applied Sciences

DLL

Wie kommt man zu einer DLL?

Voraussetzung wie bei einer Bibliothek:Menge von obj‘s oder Quellmodulen in einem Projekt.(keine main-Funktion!)

Erstellungsziel: DLL

Allerdings: spezielle Syntax nötig –Definition und Aufruf von Funktionen in DLL‘s haben eine besondere Form.

Page 23: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 23

FachhochschuleDortmundUniversity of Applied Sciences

„mobile“ Programmierung

Vorangehend wurde der Fall einer Übersetzung in einen „native“ Maschinentext behandelt.

Native heißt, die exe-Datei benötigt eine spezielle Hardware und ein spezielles Betriebssystem. Mobil heißt, die Programme laufen auf verschiedenen Plattformen (Hardware und Betriebssystem).

Page 24: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 24

FachhochschuleDortmundUniversity of Applied Sciences

„mobile“ Programmierung

Vorgehen bei der mobilen Programmierung:

„Schlanke“ Sprachen: keine plattformabhängige Dialekte.

Der Compiler erzeugt keinen „native“ Programmtext, sondern eine Zwischensprache.Für jede Plattform gibt es eine „virtuelle“ Maschine, die Programme dieser Zwischensprache ausführen kann.Virtuell= über Software-Simulation realisiert

Page 25: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 25

FachhochschuleDortmundUniversity of Applied Sciences

„mobile“ Programmierung

Beispiel:JAVAZwischensprache: „Bytecode“Java Virtual Maschine

Klassenbibliotheken: Packages

Page 26: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 26

FachhochschuleDortmundUniversity of Applied Sciences

„mobile“ Programmierung

Beispiel:.NET Technologie von MicrosoftEine Reihe von Programmiersprachen übersetzen für eine gemeinsame Plattform (.NET-Plattform)

Zwischensprache: CIL Common Intermediate Language

Virtuelle Machine: CLR Common Language Runtime

Page 27: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 27

FachhochschuleDortmundUniversity of Applied Sciences

.NET Struktur

Page 28: Fachhochschule Dortmund University of Applied Sciences Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/041 Programmorganisation Erstellen.

Einf. In die Wirtschaftsinformatik 1, DV-Infrastruktur WS 03/04 28

FachhochschuleDortmundUniversity of Applied Sciences

.NET Struktur