Assembler - Adressierungsarten

Größe: px
Ab Seite anzeigen:

Download "Assembler - Adressierungsarten"

Transkript

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

2 Adressierungsarten Einführung Beispiel (C, C++, Java): i n t a, b, c [ 1 0 ] ; s t r u c t { char y ; i n t x ; i n t p } d, e, f [ 5 ] ;... = 1 3 ;... = a ;... = b ;... = c [ i ] ;... = d. x ;... = e >x ;... = f [ i ]. x ;... und Kombinationen davon: c [ f [ e >x ]. y ] =... ; f [ b ]. p =... ; a =... ; b =... ; c [ i ] =... ; d. x =... ; e >x =... ; f [ i ]. x =... ; Assembler - Adressierungsarten 2/

3 Adressierungsarten effektive Adresse Bei vielen Adressierungsarten wird eine sogenannte effektive Adresse dynamisch zur Laufzeit berechnet. Gründe (Beispiele): Basisadresse einer Datenstruktur fest, Index variabel (z.b. beim Array-Zugriff) Basisadresse einer Datenstruktur variabel, Displacement bekannt (z.b. beim Zugriff über Pointer auf Records) Assembler - Adressierungsarten 3/

4 Adressierungsarten effektive Adresse Beispiel: Zugriff auf Array-Elemente: short i n t i ; // A d r e s s e 8 short i n t f [ 5 ] ; // A d r e s s e 14 f [ i ] = 3 00; Adresse von i bekannt (8) Adresse von f bekannt (14) Größe der Elemente von f bekannt (2) Adresse(f [i]) = Adresse(f ) + i 2 Assembler - Adressierungsarten 4/

5 Adressierungsarten effektive Adresse Beispiel: Zugriff auf Record-Elemente über Pointer: s t r u c t r e c { short i n t x ; long i n t i ; short i n t y ; short i n t z ; } ; s t r u c t r e c p ; // A d r e s s e 8 s t r u c t r e c s ; // A d r e s s e 14 p >y = 9 ; Adresse von p bekannt (8) Displacement von s.y bezüglich s bekannt (6) Adresse(p > y) = p + 6 Assembler - Adressierungsarten 5/

6 Adressierungsarten Bei der Ausführung von Befehlen mit Parametern (z.b. Addition zweier Werte) sind folgende Punkte sind zu unterscheiden: wo stehen die eigentlichen Parameter (im Befehl, im Register oder im Speicher) wo stehen die Informationen, wie man an die Parameter kommt (i.a. sind diese Informationen Teil des Befehls) wie berechnet sich die effektive Adresse (wenn die Parameter im Speicher stehen) Assembler - Adressierungsarten 6/

7 Adressierungsarten Überblick Register Immediate Operand Direct (Absolute) Address Register Indirect Register Indirect with Index Register Indirect with Displacement / PC-relative Register Indirect with Index and Displacement Memory Indirect Register Indirect with Pre-/Post-Decrement Register Indirect with Pre-/Post-Increment... Assembler - Adressierungsarten 7/

8 Adressierungsarten Register Register-Name bzw. -Nummer ist Bestandteil des Befehls Operand liegt im Register Syntax-Beispiele (i80x86): movl %eax,... movb..., %a l Verwendung: Schreiben bzw. Lesen von in Registern gespeicherten Variablen r e g i s t e r short i n t r ; / r l i e g t im R e g i s t e r %ax / r e g i s t e r short i n t s ; / s l i e g t im R e g i s t e r %bx / r = s ; ergibt compiliert: movw %bx, %ax Assembler - Adressierungsarten 8/

9 Adressierungsarten Immediate Operand Operand ist Bestandteil des Befehls Syntax-Beispiele (i80x86): movl $14,... movl $0x14,... movb $ a,... Verwendung: Zuweisung von Konstanten an Variablen r e g i s t e r long i n t x ; / x l i e g t im R e g i s t e r %edx / x = 1 4 ; ergibt compiliert: movl $14, %edx Assembler - Adressierungsarten 9/

10 Adressierungsarten Immediate Operand Anmerkung: Viele Prozessoren (besonders RISC-CPUs) verwenden zur Kodierung der Befehle jeweils gleichlange Byte-Folgen (z.b. m88100: jeder Befehl ist genau 4 Bytes lang). Aber: unmöglich, z.b. einen movl 0x , %eax-befehl (allein Konstante ist 4 Byte lang) in 4 Bytes zu kodieren. Abhilfe: Aufteilen des Befehls in zwei Teil-Befehle: statt einem Befehl zwei Befehle s e t h i $0x1234, %eax movl $0x , %eax s e t l o $0x5678, %eax Assembler - Adressierungsarten 10/

11 Adressierungsarten Direct (Absolute) Address effektive Adresse ist Bestandteil des Befehls Operand liegt im Speicher Syntax-Beispiele (i80x86): movl 1236,... movb..., 4345 Hinweis: Statt der Adressen werden häufig lieber symbolische Werte geschrieben. Z.B.: movl varx,... movb..., f l a g Die symbolischen Werte müssen jedoch auf irgendeine Weise definiert werden (z.b. durch define- oder equ-anweisungen). Definition im Folgenden aus Platzgründen häufig weggelassen. Assembler - Adressierungsarten 11/

12 Adressierungsarten Direct (Absolute) Address Verwendung: Schreiben bzw. Lesen von im Speicher abgelegten Variablen char c ; / c hat A d r e s s e 1245 / char d ; / d hat A d r e s s e 1246 / c = A ; d = c ; ergibt compiliert: movb $65, 1245 movb 1245, 1246 oder (lesbarer) #d e f i n e c 1245 #d e f i n e d 1246 movb $ A, movb c, d c Assembler - Adressierungsarten 12/

13 Adressierungsarten Register Indirect Register-Name/-Nummer ist Bestandteil des Befehls Register enthält effektive Adresse Operand liegt im Speicher Syntax-Beispiele (i80x86): movl (%ebx ),... movb..., (%ebp ) Assembler - Adressierungsarten 13/

14 Adressierungsarten Register Indirect Verwendung: z.b. Schreiben bzw. Lesen von Variablen über Pointer, die in Registern liegen. r e g i s t e r short i n t p ; / p l i e g t im R e g i s t e r %edx short i n t x ; / x hat d i e A d r e s s e 1456 / p = &x ; p = 1 4 ; x = p ; ergibt compiliert: movl $1456, %edx movw $14, (%edx ) movw (%edx ), 1456 Assembler - Adressierungsarten 14/

15 Adressierungsarten Register Indirect with Index Register-Namen/-Nummern sowie Scale-Faktor sind Bestandteile des Befehls Register A enthält Anfangsadresse des Objektes ( Startadresse, Basisadresse ) Register B enthält Index effektive Adresse berechnet sich als Adresse = Basisadresse + Index ScaleFaktor Operand liegt im Speicher Syntax-Beispiele (i80x86): movl (%ebx, %ecx, 4 ),... movb..., (%ebp, %edi, 8) Assembler - Adressierungsarten 15/

16 Adressierungsarten Register Indirect with Index Verwendung: Schreiben bzw. Lesen von Array-Elementen short i n t f [ ] ; / f hat d i e A d r e s s e 1246 / r e g i s t e r short i n t p ; / p l i e g t im R e g i s t e r %ebx r e g i s t e r short i n t i ; / i l i e g t im R e g i s t e r %ecx p = &f [ 0 ] ; p [ i ] = 5 0 ; f [ 1 ] = p [ i ] ; ergibt compiliert: movl $1246, %ebx movw $50, (%ebx, %ecx, 2) movw (%ebx, %ecx, 2 ), 1248 Assembler - Adressierungsarten 16/

17 Adressierungsarten Register Indirect with Displacement Register-Name/-Nummer sowie Displacement sind Bestandteile des Befehls Register enthält Basisadresse effektive Adresse berechnet sich als Adresse = Basisadresse + Displacement Operand liegt im Speicher Syntax-Beispiele (i80x86): movl 4(%ebp ),... movb..., 17(% e s i ) Assembler - Adressierungsarten 17/

18 Adressierungsarten Register Indirect with Displacement Bemerkungen: wird für das Register der Instruction-Pointer/Program-Counter verwendet, spricht man auch von PC-relativer -Adressierung statt der Bezeichnung Displacement wird auch häufig die Bezeichnung Offset verwendet Assembler - Adressierungsarten 18/

19 Adressierungsarten Register Indirect with Displacement Verwendung: Schreiben bzw. Lesen von Record-Elementen über Pointer s t r u c t r e c { long i n t x ; char c ; short i n t s ; } ; s t r u c t r e c r ; / r hat d i e A d r e s s e 3456 / r e g i s t e r s t r u c t r e c p ; / p l i e g t im R e g i s t e r %eax p = &r ; p >c = A ; r. s = p >s ; ergibt compiliert: movl $3456, %eax movb $ A, 4(%eax ) movw 6(%eax ), 3462 / = ; mit Alignment / Assembler - Adressierungsarten 19/

20 Adressierungsarten Register Indirect with Index and Displacement Register-Name/-Nummer, Scale-Faktor sowie Displacement sind Bestandteile des Befehls Register A enthält Basisadresse Register B enthält Index effektive Adresse berechnet sich als Adresse = Basisadresse + Index ScaleFaktor + Displacement Operand liegt im Speicher Syntax-Beispiele (i80x86): movw 4(%ebp, %eax, 8 ),... movl..., 16(%edx, %ebx, 4) Assembler - Adressierungsarten 20/

21 Adressierungsarten Register Indirect with Index and Displacement Verwendung: Schreiben bzw. Lesen von Record-Elementen eines Arrays s t r u c t r e c { long i n t x ; char c ; short i n t s ; } ; s t r u c t r e c f [ ] ; / f hat d i e A d r e s s e 452 / r e g i s t e r s t r u c t r e c p ; / p l i e g t im R e g i s t e r %ecx r e g i s t e r long i n t i ; / i l i e g t im R e g i s t e r %eax p = &f [ 0 ] ; p [ i ]. c = A ; f [ 2 ]. s = p [ i ]. s ; ergibt compiliert: movl $452, %ecx movb $ A, 4(%ecx, %eax, 8) movw 6(%ecx, %eax, 8 ), 474 / = ; mit Alignm Assembler - Adressierungsarten 21/

22 Adressierungsarten Memory Indirect Speicheradresse ist Bestandteil des Befehls effektive Adresse ist der Inhalt der angegebenen Speicherzelle Operand liegt im Speicher Syntax-Beispiele: movl ( 2 4 ),... movb..., (465) Assembler - Adressierungsarten 22/

23 Adressierungsarten Memory Indirect Verwendung: Schreiben bzw. Lesen von Variablen über Pointer, die im Speicher liegen short i n t x ; / x hat d i e A d r e s s e 340 / short i n t p ; / p hat d i e A d r e s s e 342 / p = &x ; p = 4 5 ; x = p ; ergibt compiliert: movl $340, 342 movw 45, (342) movw ( ), 340 Assembler - Adressierungsarten 23/

24 Adressierungsarten Register Indirect with Pre-/Post-Increment/Decrement Register-Name/Nummer sowie die Größe des Operanden sind Bestandteile des Befehls Register enthält effektive Adresse Operand liegt im Speicher vor/nach dem Zugriff auf den Operanden wird Registerinhalt inkrementiert/dekrementiert (um die Größe des Operanden) Syntax-Beispiele (i80x86): movw (%esp ),... movb +(%eax ),... movl..., (%ebp)+ movw..., (%ecx) Assembler - Adressierungsarten 24/

25 Adressierungsarten Register Indirect with Pre-/Post-Increment/Decrement Verwendung: Push und Pop von Werten auf dem Stack (später) s t r u c t r e c { long i n t x ; short i n t y ; char c ; } ; s t r u c t r e c a ; / a hat d i e A d r e s s e 1232 / s t r u c t r e c b ; / b hat d i e A d r e s s e 344 / a = b ; ergibt compiliert: movl $1232, %eax movl $344, %ebx movl (%ebx )+, (%eax)+ movw (%ebx )+, (%eax)+ movb (%ebx )+, (%eax)+ Assembler - Adressierungsarten 25/

26 Adressierungsarten m68x05 tax / Reg. > Reg. / txa l d a #12 / Immediate Operand > Reg. / l d x #34 l d a 1234 / D i r e c t Address > Reg. / l d x 5678 s t a 1234 / Reg. > D i r e c t Address / s t x 5678 l d a, x / Reg. I n d i r e c t > Reg. / l d x, x s t a, x / Reg. > Reg. I n d i r e c t / s t x, x l d a 12, x / Reg. I n d i r e c t with Displacement > Re l d x 34, x s t a 56, x / Reg. > Reg. I n d i r e c t with Displaceme s t x 78, x Assembler - Adressierungsarten 26/

27 Adressierungsarten Hinweise nicht alle CPUs können alle Adressierungsarten (insbesondere viele Einschränkungen bei RISC-CPUs und kleinen Mikro-Controllern) nicht alle Adressierungsarten sind mit allen Registern möglich (z.b. ist der Instruction Pointer nicht als Basis- oder Index-Register erlaubt) nicht alle Kombinationen von Adressierungsarten (Ziel und Quelle) sind möglich (z.b. erlauben viele CPUs movl 1232, 432 nicht) es existieren i.a. Einschränkungen für die möglichen Werte bzw. die Größe von Scale-Faktor und Displacement (z.b. kann der Scale-Faktor nur 1, 2, 4 oder 8 betragen; Displacement häufig < 256) Assembler - Adressierungsarten 27/

28 Adressierungsarten Hinweise Zum Teil werden Befehle und Adressierungsarten (z.b. aus historischen Gründen) anders geschrieben. Beispiele (i80x86): statt movl %eax, (%esp ) movl (%esp )+, %eax wird verwendet p u s h l %eax p o p l %eax movl %e f l a g s, (%esp ) movl (%esp )+, %e f l a g s p u s h f l p o p f l movl $1234, %e i p jmp 1234 movl (%esp )+, %e i p r e t Assembler - Adressierungsarten 28/

29 Adressierungsarten lea-befehl Nicht alle Programmier-Konstrukte zum Zugriff auf Variablen innerhalb von (verschachtelten) Arrays und Records sind direkt umsetzbar. Z.B.: char f [ 1 0 ] [ 1 0 ] ; i n t i, j ; f [ i ] [ j ] =... ; Adresse(f [i][j]) wäre im Beispiel Adresse(f ) + i 10 + j. Dafür existiert keine Adressierungsart (bei den meisten Prozessoren). In diesen Fällen muss die Adresse explizit berechnet werden lea-befehl explizite Arithmetik (später) Assembler - Adressierungsarten 29/

30 Adressierungsarten lea-befehl s t r u c t r e c { short i n t v a l u e ; char name [ 6 ] ; } ; s t r u c t r e c r ; / r hat d i e A d r e s s e 432 / r e g i s t e r s t r u c t r e c p ; / p l i e g t im R e g i s t e r %eax r e g i s t e r long i n t i ; / i l i e g t im R e g i s t e r %ebx p = &r ; p >name [ i ] = A ; ist equivalent zu r e g i s t e r char n ; / n l i e g t im R e g i s t e r %ecx p = &r ; n = &p >name [ 0 ] ; n [ i ] = A ; ergibt compiliert movl $432, %eax l e a 2(%eax ), %ecx movb $ A, (%ecx, %ebx, 1) ; Assembler - Adressierungsarten 30/

31 Adressierungsarten Hinweise Ersatz für fehlende Adressierungsarten: movl , %eax movl ( ), %eax movl $ , %eax movl (%eax ), %eax movl $ , %eax movl (%eax ), %eax movl (%eax ), %eax movl 8(%eax,%ebx,1),% eax l e a l 8(%eax ), %eax movl (%eax,%ebx,1),% eax Weitere Adressierungsarten können über Arithmetik-Befehle nachgebildet werden. Assembler - Adressierungsarten 31/

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

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

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

Grundlagen der Rechnerarchitektur und -organisation Technische Informatik II Organisation und Technologie von Rechensystemen IV

Grundlagen der Rechnerarchitektur und -organisation Technische Informatik II Organisation und Technologie von Rechensystemen IV Grundlagen der Rechnerarchitektur und -organisation Technische Informatik II Organisation und Technologie von Rechensystemen IV Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität

Mehr

Assembler-Programmierung

Assembler-Programmierung Assembler-Programmierung Dr.-Ing. Volkmar Sieh Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 Assembler-Programmierung 1/48 2012-02-29 Assembler-Programmierung

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

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

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 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

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

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

Assembler Kontrollstrukturen

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

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

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

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

Mikrocomputertechnik. Adressierungsarten

Mikrocomputertechnik. Adressierungsarten Adressierungsarten Ein Mikroprozessor bietet meist eine Reihe von Möglichkeiten, die Operanden für eine Rechenoperation zu bestimmen. Diese Möglichkeiten bezeichnet man als Adressierungsarten. unmittelbare

Mehr

10. Die Adressierungsarten des MSP 430

10. Die Adressierungsarten des MSP 430 10. Die Adressierungsarten 10.1 Übersicht über die Adressierungsarten 10.2 -Operanden 10.3 Indexregister mit Distanz 10.4 Symbolische (relativ zum ) 10.5 Absolute 10.6 Indirekte 10.7 Indirekte Adressierung

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

PC/XT/AT ASSEMBLER-BUCH

PC/XT/AT ASSEMBLER-BUCH PC/XT/AT ASSEMBLER-BUCH Alle Befehle + Makro-Assembler KLAUS-DIETER THIES t

Mehr

Technische Informatik 2 Adressierungsarten

Technische Informatik 2 Adressierungsarten Technische Informatik 2 Adressierungsarten Prof. Dr. Miroslaw Malek Sommersemester 2009 www.informatik.hu-berlin.de/rok/ca Thema heute X-Adressmaschine 0-Adressmaschine 1-Adressmaschine 2-Adressmaschine

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

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

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

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

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

Ü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

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

TECHNISCHE HOCHSCHULE NÜRNBERG GEORG SIMON OHM Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl

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

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

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

Daniel Betz Wintersemester 2011/12

Daniel Betz Wintersemester 2011/12 Daniel Betz Wintersemester 2011/12 Digitally signed by daniel.betz@daniel-betz.com Date: 2011.12.04 17:24:40 +01'00' Insgesamt 16 Register von je 16 Bit (=WORD) Breite Untere 8 Register auch als 2 Register

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

Hinweise C-Programmierung

Hinweise C-Programmierung Hinweise C-Programmierung Dr.-Ing. Volkmar Sieh Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2016/2017 V. Sieh Hinweise C-Programmierung

Mehr

Cache II. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011

Cache II. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 Cache II Dr.-Ing. Volkmar Sieh Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 Cache II 1/14 2012-02-29 Schreibstrategien Es sind verschiedene Fälle

Mehr

68000 Assembler. WAS ist ein Assembler? Ein System, das den Programmierer hilft, eine maschinennahe Programmierung zu realisieren.

68000 Assembler. WAS ist ein Assembler? Ein System, das den Programmierer hilft, eine maschinennahe Programmierung zu realisieren. WAS ist ein Assembler? Ein System, das den Programmierer hilft, eine maschinennahe Programmierung zu realisieren. Ein Programm liegt der CPU in binärer Form vor und wird durch den Assembler in einer primitiven

Mehr

05. Assembler-Programmierung. Datenstrukturen des ATMega32. Literatur

05. Assembler-Programmierung. Datenstrukturen des ATMega32. Literatur 0. Assembler-Programmierung Datenstrukturen des ATMega32 Literatur mikrocontroller.net avr-asm-tutorial.net asm Alles über AVR AVR-Assembler-Einführung Assembler AVR-Aufbau, Register, Befehle 2008: ouravr.com/attachment/microschematic/index.swf

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

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

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

DATEN UND BEFEHLSFORMATE, ADDRESSIERUNGSARTEN UND MASCHINEN- PROGRAMMIERUNGSKONZEPTE

DATEN UND BEFEHLSFORMATE, ADDRESSIERUNGSARTEN UND MASCHINEN- PROGRAMMIERUNGSKONZEPTE D - CA - IV - AA - 1 HUMBOLDT-UNIVERSITÄT ZU BERLIN INSTITUT FÜR INFORMATIK Vorlesung 4 DATEN UND BEFEHLSFORMATE, ADDRESSIERUNGSARTEN UND MASCHINEN- PROGRAMMIERUNGSKONZEPTE Sommersemester 2003 Leitung:

Mehr

Pentium. Die Intel-Pentium CPU. AK Pentium. Packaging. Pentium Busse. RISC oder CISC?

Pentium. Die Intel-Pentium CPU. AK Pentium. Packaging. Pentium Busse. RISC oder CISC? Pentium Die Intel-Pentium CPU Äußerst komplexes Ding IA-32 Intel Architecture Software Developer s Manual Vol 1: Basic Architecture: 426 Seiten Vol 2: Instruction Set Reference: 976 Seiten Vol 3: System

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

x86-assemblerprogrammierung

x86-assemblerprogrammierung x86-assemblerprogrammierung von Michael Röhrs (Ergänzend zum Vortrag am 25.04.01) Einleitung Die Familie der x86-prozessoren gehört zur Klasse der CISC-Prozessoren ( Complex Instruction Set Computer ).

Mehr

Grundlagen der Informatik 6. Arrays I

Grundlagen der Informatik 6. Arrays I 6. Arrays I Motivation Array (konstante Länge) Speicherbereich Eingabe von Arrays Grundlagen der Informatik (Alex Rempel) 1 Motivation Beispiel: Bildschirmpixel zeichnen Auflösung 800x600, d.h. insgesamt

Mehr

C++ Templates - eine kleine Einführung

C++ Templates - eine kleine Einführung C++ Templates - eine kleine Einführung Peter Ulbrich, Martin Hoffmann Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik 4 (Verteilte Systeme und Betriebssysteme) www4.informatik.uni-erlangen.de

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

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

Mikrorechentechnik 1. Befehlssatzarchitektur. Professur für Prozessleittechnik Wintersemester 2011/2012

Mikrorechentechnik 1. Befehlssatzarchitektur. Professur für Prozessleittechnik Wintersemester 2011/2012 Fakultät Elektrotechnik und Informationstechnik, Professur für Prozessleittechnik Mikrorechentechnik 1 Befehlssatzarchitektur Professur für Prozessleittechnik Wintersemester 2011/2012 Qualifikationsziele

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

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r 1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen

Mehr

1. Referenzdatentypen: Felder und Strings

1. Referenzdatentypen: Felder und Strings 1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen

Mehr

Teil 5: Zeiger, Felder, Zeichenketten Gliederung

Teil 5: Zeiger, Felder, Zeichenketten Gliederung Teil 5: Zeiger, Felder, Zeichenketten Gliederung Zeiger und Adressen Felder (Arrays) Zeichenketten (Strings) Zeigerarithmetik Mehrdimensionale Felder Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik

Mehr

Betriebssystembau. 7. Übung. Michael Engel Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund

Betriebssystembau. 7. Übung. Michael Engel Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund Betriebssystembau 7. Übung Michael Engel Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund michael.engel@tu-dortmund.de http://ess.cs.uni-dortmund.de/~me/ 1 Agenda Coroutinen

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

TI-Übung Assembler. Andreas I. Schmied AspectIX-Team Abteilung Verteilte Systeme Universität Ulm WS2005

TI-Übung Assembler. Andreas I. Schmied AspectIX-Team Abteilung Verteilte Systeme Universität Ulm WS2005 TI-Übung 2 6809-Assembler Andreas I. Schmied (andreas.schmied@uni-ulm.de) AspectIX-Team Abteilung Verteilte Systeme Universität Ulm WS2005 6809 Wiederholung (1) 8/16-Bit Prozessor Register: A/B/D, S, U,X,

Mehr

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht Kap.2 Befehlsschnittstelle Prozessoren, externe Sicht 2 Befehlsschnittstelle 2.1 elementare Datentypen, Operationen 2.2 logische Speicherorganisation 2.3 Maschinenbefehlssatz 2.4 Klassifikation von Befehlssätzen

Mehr

Übungsblatt 10 (Block C 2) (16 Punkte)

Übungsblatt 10 (Block C 2) (16 Punkte) georg.von-der-brueggen [ ] tu-dortmund.de ulrich.gabor [ ] tu-dortmund.de pascal.libuschewski [ ] tu-dortmund.de Übung zur Vorlesung Rechnerstrukturen Wintersemester 2016 Übungsblatt 10 (Block C 2) (16

Mehr

Technische Informatik-I. Speicherorganisation und Adressierungsarten. Otto-von-Guericke-Universität Magdeburg

Technische Informatik-I. Speicherorganisation und Adressierungsarten. Otto-von-Guericke-Universität Magdeburg Technische Informatik-I Speicherorganisation und Adressierungsarten Otto-von-Guericke-Universität Magdeburg Speicherorganisation Wort-orientierter Speicher Wort 00 Wort 01 Wort 02 Wort 03 2 n -1 0 Bit

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

F Zeiger, Felder und Strukturen in C

F Zeiger, Felder und Strukturen in C F Zeiger, Felder und Strukturen in C F Zeiger, Felder und Strukturen in C F.1 Zeiger(-Variablen) 1 Einordnung Konstante: Bezeichnung für einen Wert a 0110 0001 Variable: Bezeichnung eines Datenobjekts

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

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Kapitel 22: Mima-X Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik

Mehr

C- Kurs 08 Zeiger. Dipl.- Inf. Jörn Hoffmann leipzig.de. Universität Leipzig Ins?tut für Informa?k Technische Informa?

C- Kurs 08 Zeiger. Dipl.- Inf. Jörn Hoffmann leipzig.de. Universität Leipzig Ins?tut für Informa?k Technische Informa? C- Kurs 08 Dipl.- Inf. Jörn Hoffmann jhoffmann@informa?k.uni- leipzig.de Universität Leipzig Ins?tut für Informa?k Technische Informa?k Überblick Datentyp zur Verwaltung von Adressen (auf Speicherplätze)

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 in C. Speicher anfordern, Unions und Bitfelder. Prof. Dr. Nikolaus Wulff

Programmieren in C. Speicher anfordern, Unions und Bitfelder. Prof. Dr. Nikolaus Wulff Programmieren in C Speicher anfordern, Unions und Bitfelder Prof. Dr. Nikolaus Wulff Vergleich: Felder und Strukturen Felder müssen Elemente vom selben Typ enthalten. Strukturen können Elemente unterschiedlichen

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 17 Vom Programm zur Maschine Prof. Dr. Ralf H. Reussner Version 1.0 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD),

Mehr

C- Kurs 07 Höhere Datentypen

C- Kurs 07 Höhere Datentypen C- Kurs 07 Höhere Datentypen Dipl.- Inf. Jörn Hoffmann jhoffmann@informa?k.uni- leipzig.de Universität Leipzig Ins?tut für Informa?k Technische Informa?k Höhere Datentypen Überblick Höhere Datentypen Werden

Mehr

2. Aufgabenblatt Musterlösung

2. Aufgabenblatt Musterlösung 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

Mehr

Übersetzung von Datenstrukturen

Übersetzung von Datenstrukturen Übersetzung von Datenstrukturen bisher: Übersetzung von Mini-Java-Exp: Datenkeller zur Auswertung arithm. Ausdrücke Mini-Java: Sprünge zur Simulation von Kontrollstrukturen Mini-Java-FunProc: rekursive

Mehr

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04.

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04. Kontrollstrukturen Informatik II SS 2004 Teil 4: Assembler Programmierung Sprünge (bedingte und unbedingte) If-then-else, Case Loop (n Durchläufe) While (Abbruchbedingung) Institut für Informatik Prof.

Mehr

Tag 4 Repetitorium Informatik (Java)

Tag 4 Repetitorium Informatik (Java) Tag 4 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Arrays (Reihungen)

Mehr

Ü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

DieÜbersetzung funktionaler Programmiersprachen

DieÜbersetzung funktionaler Programmiersprachen DieÜbersetzung funktionaler Programmiersprachen 107 11 Die Sprache PuF Wir betrachten hier nur die Mini-Sprache PuF( Pure Functions ). Insbesondere verzichten wir(vorerst) auf: Seiteneffekte; Datenstrukturen;

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)

Mehr

Grundlagen der Rechnerarchitektur

Grundlagen der Rechnerarchitektur Grundlagen der Rechnerarchitektur ARM, x86 und ISA Prinzipien Übersicht Rudimente des ARM Assemblers Rudimente des Intel Assemblers ISA Prinzipien Grundlagen der Rechnerarchitektur Assembler 2 Rudimente

Mehr

Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures

Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures Vorbesprechung U8 Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures Basistypen Alignment der Basistypen auf deren Grösse Grössen (abhängig

Mehr

C++ Templates - eine kleine Einführung. Funktionstemplates. Fabian Scheler, Peter Ulbrich, Niko Böhm. 20. Oktober 2008

C++ Templates - eine kleine Einführung. Funktionstemplates. Fabian Scheler, Peter Ulbrich, Niko Böhm. 20. Oktober 2008 Überblick 1 Allgemein C++ Templates - eine kleine Einführung Fabian Scheler, Peter Ulbrich, Niko Böhm Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik 4 (Verteilte Systeme und Betriebssysteme)

Mehr

Rechnersysteme. Speicherorganisation und Adressierungsarten. Otto-von-Guericke-Universität Magdeburg

Rechnersysteme. Speicherorganisation und Adressierungsarten. Otto-von-Guericke-Universität Magdeburg Rechnersysteme Speicherorganisation und Adressierungsarten Otto-von-Guericke-Universität Magdeburg Speicherorganisation Wort-orientierter Speicher Wort 00 Wort 01 Wort 02 Wort 03 2 n -1 0 Bit Wort 2 k

Mehr

Hydroinformatik I: Referenzen und Zeiger

Hydroinformatik I: Referenzen und Zeiger Hydroinformatik I: Referenzen und Zeiger Prof. Dr.-Ing. habil. Olaf Kolditz 1 Helmholtz Centre for Environmental Research UFZ, Leipzig 2 Technische Universität Dresden TUD, Dresden Dresden, 06. Januar

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

Grundlagen der Informatik 11. Zeiger

Grundlagen der Informatik 11. Zeiger 11. Zeiger Motivation Zeiger und Adressen Zeiger und Funktionen Zeiger und Arrays Dynamische Objekte Grundlagen der Informatik (Alex Rempel) 1 Motivation Dynamische Speicherverwaltung Oft müssen große

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

Hydroinformatik I: Referenzen und Zeiger

Hydroinformatik I: Referenzen und Zeiger Hydroinformatik I: Referenzen und Zeiger Prof. Dr.-Ing. habil. Olaf Kolditz 1 Helmholtz Centre for Environmental Research UFZ, Leipzig 2 Technische Universität Dresden TUD, Dresden Dresden, 08. Januar

Mehr

Tag 4 Repetitorium Informatik (Java)

Tag 4 Repetitorium Informatik (Java) Tag 4 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2016/2017 Willkommen zum Informatik-Repetitorium!

Mehr

CPU II. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011

CPU II. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 CPU II Dr.-Ing. Volkmar Sieh Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 CPU II 1/77 2012-02-29 CPU Bisher: Pipeline mit 5 sequentiellen Pipeline-Stufen

Mehr

Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen:

Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen: 1 ADRESSIERUNG IN MMIX Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen: no base address is close enough to the address A! relative address

Mehr

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen Mikroprozessoren Grundlagen Aufbau, Blockschaltbild Grundlegende Datentypen AVR-Controller Anatomie Befehlssatz Assembler Speicherzugriff Adressierungsarten Kontrollstrukturen Stack Input / Output (I/O)

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

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 16 Vom Programm zur Maschine Dr.-Ing. Erik Burger Version 1.0 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION

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

Multiprozessoren. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011

Multiprozessoren. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 Multiprozessoren Dr.-Ing. Volkmar Sieh Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 Multiprozessoren 1/29 2011-06-16 Multiprozessoren Leistungsfähigkeit

Mehr

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

Grundlagen der Informatik 0

Grundlagen der Informatik 0 Technische Universität Darmstadt 01.07.2013 Grundlagen der Informatik 0 Vorlesung 0 Java ist eine Programmiersprache Ilkay Baytekin Douglas Crockford http://media.smashingmagazine.com/wp-content/uploads/2012/04/doug-crockford-image.jpg

Mehr

C++ - Objektorientierte Programmierung Konstante und statische Elemente

C++ - Objektorientierte Programmierung Konstante und statische Elemente C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja

Mehr

Computer-Systeme Teil 10: Komplexe Datentypen

Computer-Systeme Teil 10: Komplexe Datentypen Computer-Systeme Teil 10: Komplexe Datentypen Computer-Systeme WS 12/13 Teil 10/Datentypen 18.12.2012 1 Literatur [10-1] [10-2] [10-3] Engelmann, Lutz (Hrsg.): Abitur Informatik Basiswissen Schule. Duden-Verlag,

Mehr