2. Aufgabenblatt Musterlösung

Größe: px
Ab Seite anzeigen:

Download "2. Aufgabenblatt Musterlösung"

Transkript

1 2. Aufgabenblatt Musterlösung Technische Informatik II Sommersemester 2011 Problem 2: Assembler Syntax Register eines 32-bit Intel-Prozessors: 16 bits 8 bits 8 bits general purpose registers EAX Accumulator Register AH AL AX EBX Base Register BH BL BX ECX Counter Register CH CL CX EDX Data Register DH DL DX ESI Source Index EDI Destination Index EBP ESP Base Pointer Stack Pointer 32 bits Weiterführende Informationen zu den Registern und deren Verwendung finden sich in The Art of Picking Intel Registers ( Hallo-Welt-Programm in C hello-world.c #include "stdio.h" int main(int argc, int **argv) { printf("%s\n", "Hello World!"); urn 0;

2 gcc -m32 -S hello-world.c, Inhalt von hello-world.s.lc0:.file "hello-world.c".section.rodata.string "Hello World!" movl $.LC0, (%esp) call puts movl $0, %eax leave.ident "GCC: (Ubuntu/Linaro ubuntu5) Vergleichbares hello-world-programm, handgeschrieben (AT&T-Syntax).section.data hello:.ascii "Hello World!\n".section.globl _start _start: mov $4, %eax mov $1, %ebx mov $hello, %ecx mov $13, %edx int $0x80 mov $1, %eax mov $0, %ebx int $0x80 # 4 fuer den Syscall 'write' # File Descriptor # Speicheradresse des Textes # Laenge des Textes # Exit-Code setzen # Funktion 0 (exit) auswählen Vergleichbares hello-world-programm, handgeschrieben (Intel-Syntax).intel_syntax noprefix.section.data hello:.ascii "Hello World!\n".section.globl _start _start: mov eax, 4 mov ebx, 1 mov ecx, offset hello mov edx, 13 int 0x80 mov eax, 1 mov ebx, 0 int 0x80 # 4 fuer den Syscall 'write' # File Descriptor # Speicheradresse des Textes # Laenge des Textes # Exit-Code setzen # Funktion 0 (exit) auswählen

3 Problem 3: Recherchieren Sie (Bewertete Aufgabe) Hinweis: Statt der Summe das Produkt zu berechnen, würde die Fakultät berechnen, 5000! sprengt ein 32- bit Register aber um ein Vielfaches. Daher bleiben wir hier bei der Summe. Auf dem Institutsrechner andorra benötigt die handgeschriebene Assembler-Funktion grob 5000 CPU-Zyklen, die kompilierte C-Version hingegen um die Kompiliert man das Programm hingegen mit der stärksten Optimierung (gcc -O3 -m32 assembler.s framework.c), benötigt die kompilierte C-Version nur noch knapp 200 Zyklen. Woran liegt das? Betrachtet man diese simple Variante der gauss-summe: int main() { int a = 5000; int x = 0; for (; a; a--) { x += a; urn x; und lässt sich die generierte Assembler-Datei einmal mit und einmal ohne Optimierung anzeigen, so sieht man die folgenden beiden Programme: ohne Optimierung -O3.file "gauss-super-simple.c" leal 4(%esp), %ecx pushl -4(%ecx) pushl %ecx movl $5000, -12(%ebp) movl $0, -8(%ebp) jmp.l2.l3: movl -12(%ebp), %eax addl %eax, -8(%ebp) subl $1, -12(%ebp).L2: cmpl $0, -12(%ebp) jne.l3 movl -8(%ebp), %eax addl $16, %esp popl %ecx popl %ebp leal -4(%ecx), %esp.file "gauss-super-simple.c".p2align 4,,15 leal 4(%esp), %ecx pushl -4(%ecx) movl $ , %eax pushl %ecx popl %ecx popl %ebp leal -4(%ecx), %esp Die Unterschiede sind lila hervorgehoben. In der linken Variante erkennt man die Schleife. Da sie aber immer das gleiche ausgeben wird ( nämlich), wurde in der optimierten Variante diese Schleife vom Compiler direkt durch den Wert ersetzt.

4 TI II - Uebung 2 Felix Herter, Moritz Niklas Paul May 12, Aufgabe 3 Kompiliert man die framework.c erhält man für die Berechnung der Gaußschen Summe von n = 5000 die Taktzahlen: Assembler: C: Der geringere Rechenaufwand der Assemblerfunktion ist leicht zu erkennen, auch wenn das auf dem Heimrechner (Intel(R) Core(TM)2 CPU 2.00GHz ) erzielte Verhältnis von ca. 1:6 auf den Uni Rechnern nicht zu reprodizieren war (Verhältnis von ca. 1:2). Die folgenden Codeauszüge zeigen die geänderten Stellen des Ursprungsprogramms, sodass sie nun die Fakultät anstelle der Gaußschen Summe ausgeben. Assembler: mov %eax, %ecx dec %ecx 1: imul %eax, %ecx dec %ecx jnz 1b C: int fak(int a){ int x=1 for(;a;a--){ x*=a; urn 0; So weit so gut, die entsprechende Ausgabe für die Berechnung der Fakultät von n = 13 liefert folgende Taktzahlen: Assembler: 708 C: 960 Auch hier ist der Assembler schneller, wenn auch nicht mehr ganz so eindeutig wie bei der Summenberechnung, welche jedoch auch mit einem deutlich größeren Parameter aufgerufen wurde. Kompilieren wir nun die framework.c zusätzlich mit der Optimierungsflag -O3, so erwarten wir, dass der C- Code schneller laufen wird als der Assembler-Code. Auf jeden Fall zumindest schneller, als vor dem Setzen der Flag. Die Ausgabe hingegen straft unsere Naivität mit den Werten: 1

5 Assembler: C: Allein ein Blick auf die angebliche Anzahl der benötigten Takte, welche die Assemblerfunktion benötigt haben soll zeigt, dass es hier wohl nicht mit rechten Dingen zugehen kann: Bei den 2GHz des benutzten Prozessors ist es Recht unwahrscheinlich, dass in den Sekundenbruchteilen, die die Berechnung gedauert hat, über Takte stattgefunden haben... Leider war es auch auf anderen Rechnern (Netbook, Unirechner) nicht möglich zufriedenstellende Ergebnisse zu erzielen. Aufgrund erheblich Zeitmangels (ALP2 Klausur) konnten wir uns nicht so ausgiebig mit den optimierten Assemblercodes auseinandersetzen (der des framework.c betrug 134 Zeilen(!)). Zur Vereinfachung haben wir eine separate fakultaet.c geschrieben, die die Fakultät von 13 ausgibt. Optimieren und dissassemblieren führten zu:.file "fakultaet.c".section.rodata.str1.1,"ams",@progbits,1.lc0:.string "13! = %i\n".p2align 4,,15 #Basepointer wird auf den Stack gespeichert #Basepointer wird auf Stackpointer gesetzt (AT&T?) #ist %esp==-16? movl $ , 8(%esp) #Der Compiler hat den Wert bereits ausgerechnet(!) und speichert diesen in der Adresse, auf die %esp gerade Zeigt (reserviert 8 Speichereinheiten?) movl $.LC0, 4(%esp) movl $1, (%esp) call printf chk xorl %eax, %eax #effizient %eax auf 0 gesetzt? leave #%eax-wert wird zurückgegeben?.ident "GCC: (Ubuntu ubuntu5) 4.4.3".section.note.GNU-stack,"",@progbits Unsere spartanischen Vermutungen stehen als Kommentar hinter den jeweiligen Anweisungen. Allerdings ist vielleicht noch erwähnenswert, dass der Compiler selbst anscheinen bereits gesehen hat, dass das Ergebnis betragen wird, und dies nun einfach auf dem Stack speichert, anstatt die tatsächliche Implementierung der fakultaet.c im Assemblercode wieder zu spiegeln. 2

Übung 1 - Betriebssysteme I

Übung 1 - Betriebssysteme I Prof. Dr. Th. Letschert FB MNI 13. März 2002 Aufgabe 0: Basiswissen Rechnerarchitektur: Übung 1 - Betriebssysteme I Aus welchen Komponenten besteht ein Rechner mit Von-Neumann Architektur? Was sind Bits

Mehr

Rechnernetze und -Organisation. Teil B (30. März 2011) 2011 Michael Hutter Karl C. Posch

Rechnernetze und -Organisation. Teil B (30. März 2011) 2011 Michael Hutter Karl C. Posch Rechnernetz R Teil B (30. März 2011) 2011 Michael Hutter Karl C. Posch www.iaik.tugraz.at/content/teaching/bachelor_courses/rechnernetze_und_organisation/ 1 Zeitplan für Teil B Mittwoch 23. März 2011 Mittwoch

Mehr

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 1 / 53 Inhaltsverzeichnis 1 Einführung 2 Assembler Syntax, Register und Flags 3 Hauptspeicher 4 Stack 5 Assemblerbefehle

Mehr

Übersicht der wichtigsten Assemblerbefehle in ATT-Syntax. Operanden, Statusflags und Registersatz

Übersicht der wichtigsten Assemblerbefehle in ATT-Syntax. Operanden, Statusflags und Registersatz Übersicht der wichtigsten Assemblerbefehle in ATT-Syntax Autoren: Wolfgang Heenes, Patrik Schmittat Version: 0.4 Datum: 26. März 2011 Operanden, Statusflags und Registersatz Die vier Operanden sind: Direkter

Mehr

U23 - Shellcode. Twix Chaos Computer Club Cologne. Motivation Einstieg Der erste Shellcode Nullbytes, NOP Slides

U23 - Shellcode. Twix Chaos Computer Club Cologne.  Motivation Einstieg Der erste Shellcode Nullbytes, NOP Slides Twix e.v. http://koeln.ccc.de 2016-11-28 Überblick 1 Motivation Was ist Shellcode? Beispiel 2 Einstieg Erzeugen, Testen von Shellcode 3 Der erste Shellcode Strings in Shellcode 4 Nullbytes, NOP Slides

Mehr

6. Grundlagen der Programmierung

6. Grundlagen der Programmierung Computeranwendung in der Chemie Informatik für Chemiker(innen) 6. Grundlagen der Programmierung Jens Döbler 2003 "Computer in der Chemie", WS 2003-04, Humboldt-Universität VL6 Folie 1 Dr. Jens Döbler Grundlagen

Mehr

U23 Assembler Workshop

U23 Assembler Workshop Ike e.v. http://koeln.ccc.de 2016-11-05 Überblick 1 CPU, Assembler Überblick x86 x86 Assembler 2 RAM, Stack, Calling Conventions Stack Calling Conventions Stackframes 3 Branches Jumps 4 Speicher, C-Interface

Mehr

Grundlagen der Informatik III Wintersemester 2010/2011

Grundlagen der Informatik III Wintersemester 2010/2011 Grundlagen der Informatik III Wintersemester 2010/2011 Wolfgang Heenes, Patrik Schmittat 2. Aufgabenblatt mit Lösungsvorschlag 08.11.2010 Hinweis: Der Schnelltest und die Aufgaben sollen in den Übungsgruppen

Mehr

Grundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes

Grundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes Grundlagen der Informatik III Wintersemester 2010/2011 5. Vorlesung Dr.-Ing. Wolfgang Heenes int main() { printf("hello, world!"); return 0; } msg: main:.data.asciiz "Hello, world!".text.globl main la

Mehr

U23 Assembler Workshop

U23 Assembler Workshop Ike e.v. http://koeln.ccc.de 2016-11-05 Überblick 1 CPU, Assembler Überblick x86 x86 Assembler 2 RAM, Stack, Calling Conventions Stack Calling Conventions Stackframes 3 Branches Jumps 4 Speicher, C-Interface

Mehr

Assembler - Adressierungsarten

Assembler - Adressierungsarten Assembler - Adressierungsarten Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Adressierungsarten 1/31 2008-04-01

Mehr

1 Maschinenunabhängige Optimierungen. Maschinenunabhängige Optimierungen Wintersemester 2008/09 1 / 17

1 Maschinenunabhängige Optimierungen. Maschinenunabhängige Optimierungen Wintersemester 2008/09 1 / 17 1 Maschinenunabhängige Optimierungen Maschinenunabhängige Optimierungen Wintersemester 2008/09 1 / 17 Optimierungen Automatische Optimierungen sind nötig, weil unoptimierter Code meist besser lesbar ist.

Mehr

Karlsruher Institut für Technologie

Karlsruher Institut für Technologie Karlsruher Institut für Technologie Lehrstuhl für Programmierparadigmen Sprachtechnologie und Compiler WS 2010/2011 Dozent: Prof. Dr.-Ing. G. Snelting Übungsleiter: Matthias Braun Lösung zu Übungsblatt

Mehr

Kompaktkurs C-Programmierung

Kompaktkurs C-Programmierung Kompaktkurs C-Programmierung 26. 03. 2007 Franz Schenk Organisatorisches Vorlesung Accountvergabe Skriptverkauf Übungen: zwei Blöcke (13:15-14:45 / 14:45-16:15) Gruppenübung Rechnerübung Klausur Ferien:

Mehr

Assembler - Einleitung

Assembler - Einleitung Assembler - Einleitung Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Einleitung 1/19 2008-04-01 Teil 1: Hochsprache

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013. Vorlesung 9, Dienstag 18.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013. Vorlesung 9, Dienstag 18. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013 Vorlesung 9, Dienstag 18. Dezember 2012 (Performance Tuning, Profiling, Maschinencode) Prof. Dr.

Mehr

6. Intel IA-32 Prozessoren Aufbau und Adressierungsarten

6. Intel IA-32 Prozessoren Aufbau und Adressierungsarten 6. Intel IA-32 Prozessoren Aufbau und Adressierungsarten 6.1 Gegenstand der Vorlesung Interne Organisation - Architektur - Register - Statusbits - Speicherstruktur Basis-Adressierungsarten - direct - absolute

Mehr

FAKULTÄT FÜR INFORMATIK

FAKULTÄT FÜR INFORMATIK FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN Lehrstuhl für Rechnertechnik und Rechnerorganisation Prof. Dr. Arndt Bode Einführung in die Rechnerarchitektur Wintersemester 2016/2017 Zentralübung

Mehr

Moritz Höppner. m-hoeppner@gmx.net

Moritz Höppner. m-hoeppner@gmx.net Linux-Assembler Tutorial Moritz Höppner m-hoeppner@gmx.net 1 Inhalt 1. Grundlagen... 3 1.1 Einführung... 3 1.2 Zahlensysteme... 3 1.3 Register... 5 1.4 Die benötigten Tools... 6 2. Das erste Programm...

Mehr

Hinweise 80x86-Architektur

Hinweise 80x86-Architektur Hinweise 80x86-Architektur Rainer Müller Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2014/2015 R. Müller Hinweise 80x86-Architektur

Mehr

Assembler - Variablen

Assembler - Variablen Assembler - Variablen Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Variablen 1/30 2008-04-21 Variablen Variablen

Mehr

Inhaltsverzeichnis. 1 Einleitung 2

Inhaltsverzeichnis. 1 Einleitung 2 Inhaltsverzeichnis 1 Einleitung 2 2 Installation 3 2.1 Windows............................................. 3 2.1.1 Yasm per Konsole nutzen............................... 3 2.1.2 Integration mit Visual

Mehr

Assembler Unterprogramme

Assembler Unterprogramme Assembler Unterprogramme Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler Unterprogramme 1/43 2008-06-03 Unterprogramme

Mehr

Einführung in (Intel) 80x86 Assembler. Einführung in (Intel) 80x86 Assembler Wintersemester 2009/10 1 / 31

Einführung in (Intel) 80x86 Assembler. Einführung in (Intel) 80x86 Assembler Wintersemester 2009/10 1 / 31 Einführung in (Intel) 80x86 Assembler Einführung in (Intel) 80x86 Assembler Wintersemester 2009/10 1 / 31 Einführung Die folgenden Folien geben einen Überblick über die weit verbreitet x86 Architektur

Mehr

Programmieren in C. Funktionen mit Zeigern und Adressen. Prof. Dr. Nikolaus Wulff

Programmieren in C. Funktionen mit Zeigern und Adressen. Prof. Dr. Nikolaus Wulff Programmieren in C Funktionen mit Zeigern und Adressen Prof. Dr. Nikolaus Wulff ByValue versus byreferenz C übergibt immer Kopien der Variablen an Funktionen. Es ist nur dann möglich die Werte von Variablen

Mehr

GCC 3.x Stack Layout. Auswirkungen auf Stack-basierte Exploit-Techniken. Tobias Klein, 2003 tk@trapkit.de Version 1.0

GCC 3.x Stack Layout. Auswirkungen auf Stack-basierte Exploit-Techniken. Tobias Klein, 2003 tk@trapkit.de Version 1.0 1 GCC 3.x Stack Layout Auswirkungen auf Stack-basierte Exploit-Techniken Tobias Klein, 2003 tk@trapkit.de Version 1.0 2 Abstract Eine spezielle Eigenschaft des GNU C Compilers (GCC) der Version 3.x wirkt

Mehr

Einführung in (Intel) 80x86 Assembler. Einführung in (Intel) 80x86 Assembler Wintersemester 2008/09 1 / 26

Einführung in (Intel) 80x86 Assembler. Einführung in (Intel) 80x86 Assembler Wintersemester 2008/09 1 / 26 Einführung in (Intel) 80x86 Assembler Einführung in (Intel) 80x86 Assembler Wintersemester 2008/09 1 / 26 1 Geschichte 2 Programmiermodell 3 Befehlssatz 4 Konventionen 5 Beispiele 6 SSE 7 Literatur Einführung

Mehr

Einführung zum MS Visual Studio

Einführung zum MS Visual Studio 0 Visual Studio Verzeichnispfade einstellen Stellen Sie nach dem Start von Visual Studio zunächst Ihr Home-Laufwerk, d.h. den Pfad für Ihre Projektverzeichnisse und Dateien ein. Beenden Sie Visual Studio

Mehr

"Organisation und Technologie von Rechensystemen 4"

Organisation und Technologie von Rechensystemen 4 Klausur OTRS-4, 29.09.2004 Seite 1 (12) INSTITUT FÜR INFORMATIK Lehrstuhl für Rechnerarchitektur (Informatik 3) Universität Erlangen-Nürnberg Martensstr. 3, 91058 Erlangen 29.09.2004 Klausur zu "Organisation

Mehr

Grundlagen der Informatik III Wintersemester 2010/2011

Grundlagen der Informatik III Wintersemester 2010/2011 Grundlagen der Informatik III Wintersemester 2010/2011 Wolfgang Heenes, Patrik Schmittat 5. Aufgabenblatt mit Lösungsvorschlag 29.11.2010 Hinweis: Der Schnelltest und die Aufgaben sollen in den Übungsgruppen

Mehr

Übungen zu Softwaresysteme I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2004 K-Uebung9.fm

Übungen zu Softwaresysteme I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2004 K-Uebung9.fm K 9. Übung K 9. Übung K-1 Überblick Besprechung 7. Aufgabe (jbuffer) Unix, C und Sicherheit K.1 Mögliche Programmsequenz für eine Passwortabfrage in einem Server- Programm: int main (int argc, char *argv[])

Mehr

Rechnernetze und -Organisation. Teil D3 2010, Ver 0.9 Michael Hutter Karl C. Posch

Rechnernetze und -Organisation. Teil D3 2010, Ver 0.9 Michael Hutter Karl C. Posch Rechnernetz R Teil D3 2010, Ver 0.9 Michael Hutter Karl C. Posch www.iaik.tugraz.at/content/teaching/bachelor_courses/rechnernetze_und_organisation/ 1 Contents of lecture TOY x86 Networks Hardware, Stack,

Mehr

Assembler (NASM) Crashkurs von Sönke Schmidt

Assembler (NASM) Crashkurs von Sönke Schmidt Sönke Schmidt (NASM) Crashkurs von Sönke Schmidt Berlin, 4.11.2015 Meine Webseite: http://www.soenke-berlin.de NASM Was ist das? nach Wikipedia: Ein ist ein Programmierwerkzeug, das ein in maschinennaher

Mehr

Übungen zur Vorlesung Systemsicherheit

Übungen zur Vorlesung Systemsicherheit Übungen zur Vorlesung Systemsicherheit Address Space Layout Randomization Tilo Müller, Reinhard Tartler, Michael Gernoth Lehrstuhl Informatik 1 + 4 19. Januar 2011 c (Lehrstuhl Informatik 1 + 4) Übungen

Mehr

Informatik I (D-MAVT)

Informatik I (D-MAVT) Informatik I (D-MAVT) Übungsstunde 1 simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich kurze Stunden mit Stoffueberblick -> mehr Zeit fuer Fragen This semester s menu... Imperative Programmierung

Mehr

Grundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes

Grundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes Grundlagen der Informatik III Wintersemester 2010/2011 4. Vorlesung Dr.-Ing. Wolfgang Heenes int main() { printf("hello, world!"); return 0; } msg: main:.data.asciiz "Hello, world!".text.globl main la

Mehr

Hardware-Programmierung mit Linux/NASM

Hardware-Programmierung mit Linux/NASM Hardware-Programmierung mit Linux/NASM Daniel Grün 12. Februar 2007 Zusammenfassung Direkte Ansteuerung der Parallel-Schnittstelle mittels NASM unter Linux nur unter Einsatz von reinen Assembler-Routinen

Mehr

Einleitung Funktionsaufrufe Berechnungen Verzweigungen Systemaufrufe Speicherzugriffe Fazit Quellen. Laufzeitkosten in C.

Einleitung Funktionsaufrufe Berechnungen Verzweigungen Systemaufrufe Speicherzugriffe Fazit Quellen. Laufzeitkosten in C. Laufzeitkosten in C Tobias Fechner Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg 19-12-2013 Tobias Fechner

Mehr

Fallbeispiel Unix. Betriebssysteme. Hermann Härtig TU Dresden

Fallbeispiel Unix. Betriebssysteme. Hermann Härtig TU Dresden Fallbeispiel Unix Betriebssysteme Hermann Härtig TU Dresden Wegweiser Geschichte und Struktur von Unix Vom Programm zum Prozess Unix-Grundkonzepte Dateien Prozesse Prozess-Kommunikation Signale Pipes Sockets

Mehr

Rechnernetze und -Organisation. Teil D Tomislav Nad Karl C. Posch

Rechnernetze und -Organisation. Teil D Tomislav Nad Karl C. Posch Rechnernetze und -Organisation Teil D3 2012 Tomislav Nad Karl C. Posch www.iaik.tugraz.at/content/teaching/bachelor_courses/rechnernetze_und_organisation/ 1 Contents of lecture TOY Networks x86 Hardware,

Mehr

Grundlagen der Informatik III Wintersemester 2010/2011

Grundlagen der Informatik III Wintersemester 2010/2011 Grundlagen der Informatik III Wintersemester 2010/2011 Wolfgang Heenes, Patrik Schmittat 4. Aufgabenblatt mit Lösungsvorschlag 22.11.2010 Hinweis: Der Schnelltest und die Aufgaben sollen in den Übungsgruppen

Mehr

Systemprogrammierung

Systemprogrammierung Systemprogrammierung Rechnerorganisation: Maschinenprogramme Wolfgang Schröder-Preikschat Lehrstuhl Informatik 4 Ergänzende Materialien c wosch (Lehrstuhl Informatik 4) Systemprogrammierung SP1 # SS 2012

Mehr

Klausur zur Mikroprozessortechnik

Klausur zur Mikroprozessortechnik Prof. Dr. K. Wüst WS 2001 FH Gießen Friedberg, FB MNI Studiengang Informatik Klausur zur Mikroprozessortechnik Nachname: Vorname: Matrikelnummer: 7.3.2001 Punkteverteilung Aufgabe Punkte erreicht 1 3 2

Mehr

Legen Sie den Ausweis (mit Lichtbild!) griffbereit auf den Platz! Dieses Aufgabenheft umfasst 24 Seiten. Überprüfen Sie die Vollständigkeit!

Legen Sie den Ausweis (mit Lichtbild!) griffbereit auf den Platz! Dieses Aufgabenheft umfasst 24 Seiten. Überprüfen Sie die Vollständigkeit! Department Informatik Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg Martensstraße 3, 91058 Erlangen 25.09.2013 Klausur zu Grundlagen der Rechnerarchitektur

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

Aufgabe 1 Entwicklung einer Virtuellen Maschine

Aufgabe 1 Entwicklung einer Virtuellen Maschine Aufgabe 1 Entwicklung einer Virtuellen Maschine Rainer Müller Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2014/2015 R. Müller Entwicklung

Mehr

Just-In-Time-Compiler (2)

Just-In-Time-Compiler (2) Just-In-Time-Compiler (2) Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2011/2012 Just-In-Time-Compiler (2) 1/13 2011-09-12 Just-In-Time-Compiler

Mehr

FAKULTÄT FÜR INFORMATIK

FAKULTÄT FÜR INFORMATIK FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN Lehrstuhl für Rechnertechnik und Rechnerorganisation Prof. Dr. Arndt Bode Einführung in die Rechnerarchitektur Wintersemester 2016/2017 Zentralübung

Mehr

Betriebssysteme BS-V SS 2015. Hans-Georg Eßer. Foliensatz V: Ulix: Interrupts und Faults Ulix: System Calls. Dipl.-Math., Dipl.-Inform.

Betriebssysteme BS-V SS 2015. Hans-Georg Eßer. Foliensatz V: Ulix: Interrupts und Faults Ulix: System Calls. Dipl.-Math., Dipl.-Inform. BS-V Betriebssysteme SS 2015 Dipl.-Math., Dipl.-Inform. Foliensatz V: Ulix: Interrupts und Faults Ulix: System Calls v1.0, 2015/05/28 (klassische Dokumentation) Folie V-1 Übersicht: BS Praxis und BS Theorie

Mehr

Einführung. Übungen zur Vorlesung Virtuelle Maschinen. Stefan Potyra. SoSe 2009

Einführung. Übungen zur Vorlesung Virtuelle Maschinen. Stefan Potyra. SoSe 2009 Einführung Übungen zur Vorlesung Virtuelle Maschinen Stefan Potyra Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg SoSe 2009 Übungsaufgaben 1 Entwickeln

Mehr

Just-In-Time-Compiler (2)

Just-In-Time-Compiler (2) Just-In-Time-Compiler (2) Dr.-Ing. Volkmar Sieh Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2015/2016 V. Sieh Just-In-Time-Compiler

Mehr

C-Kurs 2010 Pointer. 16. September v2.7.3

C-Kurs 2010 Pointer. 16. September v2.7.3 C-Kurs 2010 Pointer Sebastian@Pipping.org 16. September 2010 v2.7.3 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License. C-Kurs Mi Konzepte, Syntax,... printf, scanf Next

Mehr

Disclaimer: Das sind Lösungsvorschläge, keine Musterlösungen.

Disclaimer: Das sind Lösungsvorschläge, keine Musterlösungen. Autor: Sebastian Sossalla Disclaimer: Das sind Lösungsvorschläge, keine Musterlösungen. Aufgabe 1: Allgemeines (22 Punkte) 1. Welche der nachfolgenden Informationen werden i.a. im Condition- Code-Register

Mehr

Formale Systeme, Automaten, Prozesse

Formale Systeme, Automaten, Prozesse Formale Systeme, Automaten, Prozesse Peter Rossmanith Theoretische Informatik, RWTH Aachen 28. April 2009 Organisatorisches Termine (Folie 1, Seite 1 im Skript) Vorlesung Dienstags, 8:15-9:00 Uhr, Grüner

Mehr

Rechnern netze und Organisatio on

Rechnern netze und Organisatio on Rechnernetze und Organisation Konstruktionsübung SS2009 Vorbesprechung 1 Übersicht Einleitung Motivation Administratives i ti Generelles zur KU Assignment A1 Vorbereitung Johannes Wolkerstorfer Vorstellung

Mehr

7 Ein einfacher CISC-Prozessor

7 Ein einfacher CISC-Prozessor 7 Ein einfacher CISC-Prozessor In diesem Kapitel wird ein einfacher Prozessor vorgestellt. Die Architektur, die wir implementieren, wurde von R. Bryant und D. O Hallaron entworfen und verwendet eine Untermenge

Mehr

Spezielle Techniken und Technologien der Informatik

Spezielle Techniken und Technologien der Informatik 1 / 32 Spezielle Techniken und Technologien der Informatik Reverse Engineering Robert Baumgartl 23. Mai 2016 Reverse Engineering Unter Reverse Engineering versteht man die Analyse von Software mit dem

Mehr

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens Grundlagen von C Jonas Gresens Proseminar C Grundlagen und Konzepte Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität

Mehr

Betriebssysteme KU - Einführungstutorium

Betriebssysteme KU - Einführungstutorium Betriebssysteme KU - Einführungstutorium SWEB-Tutoren irc://irc.at.euirc.net/bs Teamwork Arbeitsaufteilung? Zeiteinteilung? Codeeinteilung? Kommunikation! Kommunikation Kommunikation mit dem Team Gruppentreffen

Mehr

Grundlagen der Informatik III Wintersemester 2010/2011

Grundlagen der Informatik III Wintersemester 2010/2011 Grundlagen der Informatik III Wintersemester 2010/2011 Wolfgang Heenes, Patrik Schmittat 9. Aufgabenblatt mit Lösungsvorschlag 17.01.2011 Hinweis: Der Schnelltest und die Aufgaben sollen in den Übungsgruppen

Mehr

Embedded-Linux-Seminare. Linux als Betriebssystem

Embedded-Linux-Seminare. Linux als Betriebssystem Embedded-Linux-Seminare Linux als Betriebssystem http://www.embedded-linux-seminare.de Diplom-Physiker Peter Börner Spandauer Weg 4 37085 Göttingen Tel.: 0551-7703465 Mail: info@embedded-linux-seminare.de

Mehr

Assembler Integer-Arithmetik

Assembler Integer-Arithmetik Assembler Integer-Arithmetik Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler Integer-Arithmetik 1/23 2008-04-01 Arithmetik

Mehr

DHBW Stuttgart Mikrocomputertechnik Labor KEIL Entwicklungsumgebung. Projektstruktur

DHBW Stuttgart Mikrocomputertechnik Labor KEIL Entwicklungsumgebung. Projektstruktur Projektstruktur 25.10.12 K.Kraft D\MCT_Labor_2013\Dokumente\Projektdetails.odt 1 Typischer Aufbau eines 8051 Programms Start Adresse = 0003H External Interrupt 0 ISR Interrupt Service Routinen Start Adresse

Mehr

Abstrakte C-Maschine und Stack

Abstrakte C-Maschine und Stack Abstrakte C-Maschine und Stack Ausarbeitung Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg Vorgelegt von:

Mehr

TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems

TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems Mitglied der Zürcher Fachhochschule TIn 1: Lecture 4 Data transfer Feedback Laboratories Question: What is the IP? Why do we NEED an IP? Lecture 3: Lernziele Moving data, the why s and wherefores Moving

Mehr

GI Vektoren

GI Vektoren Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung

Mehr

Zum Aufwärmen nocheinmal grundlegende Tatsachen zum Rechnen mit reelen Zahlen auf dem Computer. Das Rechnen mit Gleitkommazahlen wird durch den IEEE

Zum Aufwärmen nocheinmal grundlegende Tatsachen zum Rechnen mit reelen Zahlen auf dem Computer. Das Rechnen mit Gleitkommazahlen wird durch den IEEE Zum Aufwärmen nocheinmal grundlegende Tatsachen zum Rechnen mit reelen Zahlen auf dem Computer. Das Rechnen mit Gleitkommazahlen wird durch den IEEE 754 Standard festgelegt. Es stehen sogenannte einfach

Mehr

Buffer Overflow 1c) Angriffsstring: TTTTTTTTTTTTTTTT (16x) Beachte: Padding GCC-Compiler Zusatz: gcc O2 verhindert hier den Angriff (Code Optimierung)

Buffer Overflow 1c) Angriffsstring: TTTTTTTTTTTTTTTT (16x) Beachte: Padding GCC-Compiler Zusatz: gcc O2 verhindert hier den Angriff (Code Optimierung) Buffer Overflow 1c) 1 char passok='f'; 2 char password[8]; 3 printf( Passwort: ); 4 gets(password); 5 if(!strcmp(password, daspassw )){passok = 'T';} 6 if(passok=='t'){printf( %s, Willkommen! );} 7 else

Mehr

Übungspaket 7 Angemessenes Formatieren von C-Programmen

Übungspaket 7 Angemessenes Formatieren von C-Programmen Übungspaket 7 Angemessenes Formatieren von C-Programmen Übungsziele: Skript: 1. Gute Layout-Struktur durch Einrücken. Richtiges Verwenden von Kommentaren Kapitel: 19 Semester: Wintersemester 016/17 Betreuer:

Mehr

Netzwerksicherheit. Teil 2: Buffer Overflows und andere Gemeinheiten. Philipp Hagemeister. Sommersemester 2017 Heinrich-Heine-Universität Düsseldorf

Netzwerksicherheit. Teil 2: Buffer Overflows und andere Gemeinheiten. Philipp Hagemeister. Sommersemester 2017 Heinrich-Heine-Universität Düsseldorf Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten Philipp Hagemeister Sommersemester 2017 Heinrich-Heine-Universität Düsseldorf Netzwerksicherheit Teil 2: Buffer Overflows und andere

Mehr

COMPILER & CODE ANALYSE. Eine Einführung in die Code Analyse auf Grundlage von Compilern und deren Optimierung. 1

COMPILER & CODE ANALYSE. Eine Einführung in die Code Analyse auf Grundlage von Compilern und deren Optimierung. 1 1 COMPILER & CODE ANALYSE Eine Einführung in die Code Analyse auf Grundlage von Compilern und deren Optimierung. 1 INHALT Einleitung Werkzeuge Compiler Aufbau Optimierung Beispiel Code Analyse Einführung

Mehr

Übung Augmented Reality

Übung Augmented Reality Ludwig-Maximilians-Universität München LFE Medieninformatik Prof. Dr. Andreas Butz Fabian Hennecke Sommersemester 2009 Übungsblatt 1 28. April 2009 Übung Augmented Reality Abgabetermin: Die Lösung zu diesem

Mehr

Test-Klausuraufgaben Softwaretechnik Fachbereich BW, für WINFO

Test-Klausuraufgaben Softwaretechnik Fachbereich BW, für WINFO Test-Klausuraufgaben Softwaretechnik Fachbereich BW, für WINFO Dipl.-Ing. Klaus Knopper 21.12.2006 Hinweis: Bitte schreiben Sie auf das Deckblatt und auf jede Seite Ihren Namen und Ihre Matrikelnummer,

Mehr

Netzwerksicherheit Musterlösung Übungsblatt 4: Viren

Netzwerksicherheit Musterlösung Übungsblatt 4: Viren Institut für Informatik Alina Barendt und Philipp Hagemeister Netzwerksicherheit Musterlösung Übungsblatt 4: Viren 1 Vorbereitung msg db "Virus" mov ah, 40h mov bx, 1 mov cx, $5 mov dx, msg int 21h ; Write

Mehr

Lesen Sie alle Aufgabenstellungen sorgfältig durch, bevor Sie mit der Bearbeitung der ersten Aufgabe beginnen.

Lesen Sie alle Aufgabenstellungen sorgfältig durch, bevor Sie mit der Bearbeitung der ersten Aufgabe beginnen. INE1 Musteraufgaben für die Semesterendprüfung Hilfsmittel Vier Seiten selbst verfasste Zusammenfassung keine weiteren Hilfsmittel keine elektronischen Hilfsmittel Abgabe Füllen Sie das erste Aufgabenblatt

Mehr

Was kann ein Assembler?

Was kann ein Assembler? Assemblerprogrammierung Assembler und Maschinensprache Befehle und Pseudo-Befehle C-Konstrukte in Assembler übersetzt Aufrufkonventionen (ABI) Der netwide assembler nasm Binärformate Was ist ein Assembler?

Mehr

Aufgaben zur IA32-Assembler-Programmierung

Aufgaben zur IA32-Assembler-Programmierung Aufgaben zur IA32-Assembler-Programmierung Prof. Dr. Ralf Möller AG Technische Informatik Technische Fakultät Universität Bielefeld www.ti.uni-bielefeld.de Version 1.15 vom 17. Februar 2011, SS 2011 SS

Mehr

3D Programmierpraktikum: Einführung in C++ - Teil 1

3D Programmierpraktikum: Einführung in C++ - Teil 1 3D Programmierpraktikum: Einführung in C++ - Teil 1 Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 27. April 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum

Mehr

Übung zu Betriebssystembau (Ü BS)

Übung zu Betriebssystembau (Ü BS) Übung zu Betriebssystembau (Ü BS) Interruptbehandlung in OOStuBS Wanja Hofer Lehrstuhl für Informatik IV WS 07/08 1 Agenda: IRQ-Behandlung in OOStuBS Interrupts und Traps beim x86 Die Interrupt-Deskriptor-Tabelle

Mehr

Übungspaket 12 Der Datentyp char

Übungspaket 12 Der Datentyp char Übungspaket 12 Der Datentyp char Übungsziele: Skript: 1. Umgang mit dem Datentyp char, 2. Deklarationen von char-variablen, 3. char-konstanten 4. und char-rechenoperationen. Kapitel: 29 bis 31 sowie 24,

Mehr

Teil I Debuggen mit gdb

Teil I Debuggen mit gdb Teil I Debuggen mit gdb Wer kennt das nicht? $./a.out Segmentation fault Was tun dagegen? printf()s in den Code einfügen? Besser (und professioneller): Einen Debugger verwenden Wer kennt das nicht? $./a.out

Mehr

Debuggen mit GDB (Gnu DeBugger) unter Eclipse

Debuggen mit GDB (Gnu DeBugger) unter Eclipse Debuggen mit GDB (Gnu DeBugger) unter Eclipse Boris Budweg, 16.11.2009 Version 0.4 Abstract: Kleine Einführung in die Bedienung des GDB über Eclipse und die Möglichkeiten eines Debuggers. Viele Screenshots

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

Gliederung. Systemprogrammierung. Beispiel: Matrizenmultiplikation. Verschiedenheit zwischen Quell- und Zielsprache

Gliederung. Systemprogrammierung. Beispiel: Matrizenmultiplikation. Verschiedenheit zwischen Quell- und Zielsprache B V-1 Schichtenstruktur Gliederung Systemprogrammierung Rechnerorganisation: Schichtenstruktur Wolfgang Schröder-Preikschat Lehrstuhl Informatik 4 14. Mai 2014 Fallstudie Maschinenhierarchie Maschinen

Mehr

01 Einführung in PHP. Einführung in PHP 1/13 PHP in Aktion

01 Einführung in PHP. Einführung in PHP 1/13 PHP in Aktion 01 Einführung in PHP Einführung in PHP 1/13 PHP in Aktion PHP ist eine Programmiersprache, die ganz verschiedene Dinge tun kann: von einem Browser gesendete Formularinhalte auswerten, angepasste Webinhalte

Mehr

Metaprogrammierung 372

Metaprogrammierung 372 Metaprogrammierung 372 thales$ g++ -c -fpermissive -DLAST=30 Primes.cpp 2>&1 fgrep In instantiation Primes.cpp: In instantiation of void Prime_print::f() [with int i = 29] : Primes.cpp: In instantiation

Mehr

Primzahlen und Programmieren

Primzahlen und Programmieren Primzahlen Wir wollen heute gemeinsam einen (sehr grundlegenden) Zusammenhang zwischen Programmieren und Mathematik herstellen. Die Zeiten in denen Mathematiker nur mit Zettel und Stift (oder Tafel und

Mehr

Übungspaket 9 Logische Ausdrücke

Übungspaket 9 Logische Ausdrücke Übungspaket 9 Logische Ausdrücke Übungsziele: Skript: 1. Umgang mit logischen Vergleichs- und Verknüpfungsoperatoren 2. Bilden einfacher und komplexer logischer Ausdrücke Kapitel: 22 Semester: Wintersemester

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

Programmiersprachen Einführung in C

Programmiersprachen Einführung in C Programmiersprachen Einführung in C Teil 1: Von der Maschinensprache zu C Prof. Dr. Maschinensprache: MIPS R2000 Was bewirkt folgendes Programm: 00100111101111011111111111100000 10101111101111110000000000010100

Mehr

System Monitoring mit strace. Systemcall tracing

System Monitoring mit strace. Systemcall tracing System Monitoring mit strace Systemcall tracing 1 Gliederung Einleitung: Was ist strace Grundlagen zu strace Kernel Kernelspace vs. Userspace Systemcalls ptrace Simple strace (Demo) strace die wichtigsten

Mehr

ERA-Zentralübung Maschinenprogrammierung

ERA-Zentralübung Maschinenprogrammierung Marcel Meyer LRR TU München 04.11.2016 Inhalt Aufgabe 1.1 Aufgabe 1.2 Speicherzugriffe Unbedingte Sprünge Stapelspeicher Unterprogramme Aufgabe 1.1 Quellregister AX, BX, CX Konstante deklarieren Werte

Mehr

Übungspaket 32 Einfach verkettete, sortierte Liste

Übungspaket 32 Einfach verkettete, sortierte Liste Übungspaket 32 Einfach verkettete, sortierte Liste Übungsziele: Skript: 1. Aufbau einer einfach verketteten, sortierten Liste 2. Traversieren von Listen 3. Vereinfachung durch ein Dummy-Element Kapitel:

Mehr

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes Variablen Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes v ist Stück im Speicher, der 4 Bytes lang ist Speicherzugriff? Über Adressen!

Mehr

DLLs (dynamic loaded libraries) mit MingW erstellen

DLLs (dynamic loaded libraries) mit MingW erstellen DLLs (dynamic loaded libraries) mit MingW erstellen Autor: Michel D. Schmid Datum: April 2, 2009 Contents 1 Einführung 1 1.1 Open-Source Tools.......................................... 1 2 Beispiel 1:

Mehr

Unterprogramme. Unterprogramme

Unterprogramme. Unterprogramme Unterprogramme Unterprogramme wichtiges Hilfsmittel für mehrfach benötigte Programmabschnitte spielen in höheren Programmiersprachen eine wesentliche Rolle in Assembler sind bestimmte Konventionen nötig

Mehr

Unterlagen. CPP-Uebungen-08/

Unterlagen.  CPP-Uebungen-08/ Unterlagen http://projects.eml.org/bcb/people/ralph/ CPP-Uebungen-08/ http://www.katjawegner.de/lectures.html Kommentare in C++ #include /* Dies ist ein langer Kommentar, der über zwei Zeilen

Mehr

Zeiger, Arrays und Strings in C und C++

Zeiger, Arrays und Strings in C und C++ Zeiger, Arrays und Strings in C und C++ 1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für

Mehr