Systemprogrammierung (37-023)
|
|
|
- Frieder Schmitt
- vor 8 Jahren
- Abrufe
Transkript
1 Systemprogrammierung (37-023) Assemblerprogrammierung Betriebssystemgrundlagen Maschinenmodelle Dozenten: Thomas Stricker Roman Geus WebSite: Begleit-/Textbuch: R. Paul: SPARC Architecture, Assembly Language Programming and C --- B. Kernigham, D. Richie: The C Programming Language Heute: Kontrollstrukturen in Assembler Branches Schleifenprogrammierung Case Statements 27/ Systemprogrammierung Stricker
2 Branches auf pipelined RISC (architekturspezifischer Aspekt) Hardware muss nicht in schnelleren Zyklen getaktet werden, statt dessen Parallelisierung Tiefe der Pipeline bei SPARC V8: 5 (2 sichtbar) 27/ Systemprogrammierung Stricker
3 Probleme bei Branching (Verzweigungen): Wird ein Branch ausgeführt, so muss die folgende Instruktion aus der Zieladresse des Branches entnommen werden! Instruktion nach branch-anweisung findet sich allerdings noch in der Pipeline. Korrekterweise müsste die Pipeline geleert werden SPARC überlässt diese Kontrolle dem Benutzer Verwendung von zwei Programmzeigern: %pc -> execute %npc-> fetch Branch Delay Slot: Nächste Instruktion wird ausgeführt, bevor die erste Instruktion des Branches wirksam wird. einfachste Vorgehensweise: nop -> Zyklus geht verloren! 27/ Systemprogrammierung Stricker
4 SPARC Maschinen Zyklus Branch Delay Slots können effizient genutzt werden, verschlechtern allerdings die Lesbarkeit des Codes 27/ Systemprogrammierung Stricker
5 Conditional Branches in Assembler Condition Code Register: Bestehend aus 4 Kontrollbits Teil des Prozessor Status Registers Z: zeigt an, ob Resultat 0 N: zeigt an, ob Resultat negativ V: zeigt an, ob Resultat generell zu gross für Register (Overflow) C: Carry Bit des most significant Bit Satz von Instruktionen, welche condition codes setzen! addcc subcc smulcc sdivcc /* typischerweise mit Suffix cc */ 27/ Systemprogrammierung Stricker
6 Branch Instruktionen der SPARC Nach Branch-Instruktion wird Adresszeiger auf Adresse der ersten Instruktion des Branches gesetzt. Labels zur Adress-Markierung. bxy label /* bxy eine der folgenden Instruktionen */ 27/ Systemprogrammierung Stricker
7 While Loop Fundamentale Kontrollstruktur in Computer Programmen Wichtigste loop Da normalerweise sehr oft durchlaufen, muss der resultierende Assemblercode möglichst effizient sein Anzahl der Instruktionen minimieren!! Beispielprogramm in C 1 main() { 2 int temp; 3 int x = 0; 4 int y = 0x9; 5 int z = 0x42; 6 7 temp = y; 8 while (temp>0) { 9 x = x + z; 10 temp = temp - 1; 11 } 12 printf( %d\n,x); 13 } 27/ Systemprogrammierung Stricker
8 While Loop in Assembler.data x:.word 0!bsp8.s y:.word 0x9 z:.word 0x42.text start: set y, %r1 ld [%r1], %r2 set z, %r1 ld [%r1], %r3 mov %r0, %r4 add %r2, 1, %r2 ba test nop top: add %r4, %r3, %r4 test: subcc %r2, 1, %r2 bg top!temp>0 nop!branch DELAY SLOT set x, %r1 st %r4, [%r1] end: ta 0 27/ Systemprogrammierung Stricker
9 Ablauf des Programmzählers Standardzyklus des Prozessors: pc <- npc; npc += 4; Bei Branches pc <- npc /* delay slot */ ncp <- branch_label Sinnvolle Nutzung des Delay Slots Im Beispiel kann die Addition von y und x in den delay slot übertragen werden: x:.word 0 y:.word 0x9 z:.word 0x42 start: set y, %r1 ld [%r1], %r2 set z, %r1 ld [%r1], %r3 mov %r0, %r4 add %r2, 1, %r2 top: subcc %r2, 1, %r2 bg,a top!annulled branch add %r4, %r3, %r4 set x, %r1 st %r4, [%r1] end: ta 0 27/ Systemprogrammierung Stricker
10 Möglichkeit zur Annulierung Branch delay slot Instruktionen können annulliert werden, wenn der branch nicht genommen wird! bg, a /* wird im Code durch,a angezeigt */ Die sinnvolle Verwaltung von Branch-Delay-Slots bleibt dem Benutzer überlassen! 27/ Systemprogrammierung Stricker
11 Allgemeines while statement Situation schwieriger bei folgender while Anweisung: 1 main() { 2 int a= 0; 3 int b= 3; 4 while (a<=17) { 5 a= a+ b; 6 } 7 } Man benötigt eine zusätzliche Vergleichsinstruktion: cmp cmp register1, register2 register2, const. /* synthetische Instruktion */ subccregister1, register2, g0 subccregister2, const, g0 /* vergleicht Register miteinander und setzt Vorzeichenbit des condition codes */ 27/ Systemprogrammierung Stricker
12 1. Variante in Assembler 1.data 2 a:.word0 3 b:.word3!bsp10.s 4 5.global_main 6.text 7 _main: set a, %r1 8 ld [%r1], %r2 9 set b, %r1 10 ld [%r1], %r3 11 loop: cmp %r2, 17! a>17 12 bg store 13 nop!1. delay slot 14 add %r2, %r3, %r2 15 ba loop 16 nop!2. delay slot 17 store: set a, %r1 18 st %r2, [%r1] 19 end: ta 0 Compare Instruktion vergleicht Register mit Konstante Innerhalb der loop keine optimale Programmausführung -> Optimierung 27/ Systemprogrammierung Stricker
13 2. Variante in Assembler 1.data!Variant 2 of while 2 a:.word8!loop is add, cmp, nop 3 b:.word3!bsp11.s 4 5.global_main 6.text 7 _main: set a, %r1 8 ld [%r1], %r2 9 set b, %r1 10 ld [%r1], %r3 11 test: cmp %r2, bg store 13 nop 14 loop: add %r2, %r3, %r2!4 cycles 15 cmp %r2, ble loop 17 nop 18 store: set a, %r1 19 st %r2, [%r1] 20 end: ta 0 Loop konnte gegenüber Variante 1 um zwei Instruktionen verkürzt werden. 27/ Systemprogrammierung Stricker
14 3. Variante in Assembler 1.data!Variant 3 of while 2 a:.word 0! 1. test can be avoided 3 b:.word 3! bsp12.s 4 5.global _main 6 7.text 8 _main: set a, %r1 9 ld [%r1], %r2 10 set b, %r1 11 ld [%r1], %r ba test!unconditional branch 14 nop loop: add %r2, %r3, %r test: cmp %r2, 17!initializes CC 19 ble loop!4 cycles 20 nop store: set a, %r1 23 st %r2, [%r1] 24 end: ta 0 Erster bedingter branch kann durch absoluten branch ersetzt werden! 27/ Systemprogrammierung Stricker
15 4. Variante in Assembler 1.data!Variant 4 of while 2 a:.word0!1. test can be avoided 3 b:.word3!removal of uncond. nop 4!bsp13.s 5.global _main 6.text 7 _main: set a, %r1 8 ld [%r1], %r2 9 set b, %r1 10 ld [%r1], %r ba test!branch always 13 cmp %r2, 17!CC init 14 loop: add %r2, %r3, %r cmp %r2, 17!4 cycles 17 test: ble loop 18 nop store: set a, %r1 21 st %r2, [%r1] 22 end: ta 0 nop im unconditional branch delay slot kann einfach umgangen werden! 27/ Systemprogrammierung Stricker
16 5. Variante in Assembler 23.data!Variant 5 of while 24 a:.word0!1.test can be avoided 25 b:.word3!removal of uncond. nop 26!removal of cond. nop 27!branch delay slot bsp14.s 28.global_main 29.text _main: set a, %r1 32 ld [%r1], %r2 33 set b, %r1 34 ld [%r1], %r loop: cmp %r2, 17!3 cycles 37 ble,aloop 38 add %r2, %r3, %r store: set a, %r1 41 st %r2, [%r1] 42 end: ta 0 Weitere Code-Optimierung durch Annullierung des Branch Delay Slots möglich 27/ Systemprogrammierung Stricker
17 Flussdiagramm (annuled conditional branch) 27/ Systemprogrammierung Stricker
18 Do Loops Wenn Schleife zumindest einmal ausgeführt wird, sollte Do loop verwendet werden. Initialer Test kann entfallen C-Code fragment 1 main() { /* bsp15.c */ 2 3 int a = 0; 4 int b = 3; 5 do { 6 a = a + b; 7 } while (a<=17); 8 } 27/ Systemprogrammierung Stricker
19 DO-Loop in Assembler Code 1.data! 2 a:.word0 3 b:.word3!bsp16.s 4 5.global _main 6 7.text 8 _main: set a, %r1 9 ld [%r1], %r2 10 set b, %r1 11 ld [%r1], %r add %r2, %r3, %r2 14 loop: cmp %r2, ble,aloop 16 add %r2, %r3, %r store: set a, %r1 19 st %r2, [%r1] 20 end: ta / Systemprogrammierung Stricker
20 For loops C-Syntax 1 main() { 2 int a = 0; 3 int b = 3; 4 int i; 5 6 for(i=1; i<=15; i++) {/* bsp17.c */ 7 a = a + b; 8 } 9 } Können in while-schleifen umgesetzt werden! 1 main(){ 2 int a = 0; 3 int b = 3; 4 int i = 1; 5 6 while(i<=15) { 7 a = a + b; 8 i++; 9 } /* bsp18.c */ 10 } 27/ Systemprogrammierung Stricker
21 For Loops in Assembler 1.data 2 a:.word 0 3 b:.word 3!bsp19.s 4 i:.word con:.word global _main 9 10.text 11 _main: set a, %r1 12 ld [%r1], %r2 13 set b, %r1 14 ld [%r1], %r3 15 set i, %r1 16 ld [%r1], %r4 17 set con, %r1 18 ld [%r1], %r ba test!branch always loop: cmp %r4, %r5 23 add %r2, %r3, %r test: ble,a loop 26 inc %r store: set a, %r1 29 st %r2, [%r1] 30 end: ta 0 27/ Systemprogrammierung Stricker
22 C-Syntax und Code If Then Statements 1 main() { 2 int a; 3 int b = 1; 4 int c = 2; /* bsp20.c */ 5 int d = 3; 6 7 printf ( a =?\n ); 8 scanf( %d,&a); 9 10 if ((a + b)>c) { 11 a += b; 12 c++; 13 } 14 a += d; 15 printf( a = %d\n,a); 16 printf( b = %d\n,b); 17 printf( c = %d\n,c); 18 printf( d = %d\n,d); 19 } Branch muss bei Nichterfülltsein der Bedingung genommen werden scanf Funktion ermöglicht Eingabe Kompakte Zuweisungen in C: i += 5 27/ Systemprogrammierung Stricker
23 If/Then in Assembler Wir benötigen die logischen Komplemente der bedingten branch Instruktionen Bedingung Komplement bl less bge ble less equal bg bne not equal be be equal bne bge greater equal bl bg greater ble Ausnutzung des Branch delay slot, erste Anweisung nach der if Abfrage wird wiederholt ble Bedingung als Komplement zur if- Abfrage 27/ Systemprogrammierung Stricker
24 If/then in Assembler (con t) 1.global _main 2 3.text 4 _main: set a, %r1! bsp21.s 5 ld [%r1], %r2 6 set b, %r1 7 ld [%r1], %r3 8 set c, %r1 9 ld [%r1], %r4 10 set d, %r1 11 ld [%r1], %r add %r2, %r3, %r6 14 cmp %r6, %r ble,a store 17 add %r2, %r5, %r2!branch DS 18 inc %r4 19 add %r2, %r3, %r2 20 add %r2, %r5, %r2 21 store: set a, %r1 22 st %r2, [%r1] 23 end: ta 0 27/ Systemprogrammierung Stricker
25 C-Syntax und Code If Else Statement 1 if ((a + b)>=c) { /* bsp22.c */ 2 a += b; 3 c++; 4 } else { 5 a -= b; 6 c--; 7 } 8 c += 10; Assembler Code Fragment 1 add %r2, %r3, %r6!bsp23.s 2 cmp %r6, %r4!a->r2, b->r3, c->r4 3 4 bl,a else 5 sub %r2, %r3, %r2!1. instruction of else 6 add %r2, %r3, %r2!1. instruction of then 7 inc %r4 8 ba store 9 add %r4, 10, %r else: dec %r4 12 add %r4, 10, %r store: set a, %r1 15 st %r2, [%r1] 16 end: ta 0 27/ Systemprogrammierung Stricker
26 erste Instruktion des else Teils wurde in den branch delay slot der bl Condition übernommen Vermeidung jeglicher nops Code wird schwer lesbar 27/ Systemprogrammierung Stricker
27 Annullierung von unbedingten branches ba,a Delay slot wird immer annulliert, aber es wird trotzdem gesprungen!!! Ist sinnvoll, wenn statt einer Instruktion ein branch zu einer Subroutine (call.sqrt) erfolgen soll. Branch verliert in diesem Fall Delay slot. 27/ Systemprogrammierung Stricker
28 Delayed Control Transfer Couples Wenn Branch Instruktion im delay slot einer weiteren branch instruktion liegt ba ble label1 label2 1. Instruktion muss unbedingte Branch Instruktion sein, sonst Reihenfolge der Instruktionen nicht definiert 27/ Systemprogrammierung Stricker
29 Switch Statement Switch Statement: Verzweigung mittels Tabelle Unterschiedliche Anzahl Instruktionen pro case. switch-beispiel (C-Syntax): 1 switch (i + 3) { 2 case 1: i += 1; 3 break; 4 case 2: i += 2; 5 break; 6 case 15: i += 15; 7 case 3: i += 3; 8 break; 9 case 4: i += 4; 10 case 6: i += 6; 11 break; 12 case 5: i += 5; 13 break; 14 default: i--; 15 } 27/ Systemprogrammierung Stricker
30 Berechnung Switch-Adressen Finde grösstes und kleinstes Label Berechne Label-Range Berechne Differenz: switch-ausdruck - kleinstes Label) Vergleiche Range mit Differenz Nehme Wert als Index einer Pointer Tabelle, welche auf switch-anweisungen zeigen Fehlende Pointers in Tabelle werden durch Pointer->Next oder -> default ersetzt Wenn out of range ->default Einträge in gleicher Reihenfolge, wie C- Code 27/ Systemprogrammierung Stricker
31 switch in Assembler 1.data 2.align4 3 table:.word L1,L2,L3,L4,L5,L6,L7,L8,L9 4.word L10,L11,L12,L13,L14,L15 5.text 6.align 4 7 start: mov 0, %l0!initialize i=0 8 add %l0,3,%o0!compute switch expression 9 subcc %o0,1,%o0!reduce by min & cmp to zero 10 blu default!expression too small 11 cmp %o0, 1!compare to range 12 bgu default!too large 13 nop 14 set table, %o1!jump table 15 sll %o0, 2, %o0!word offset in table 16 ld [%o1+%o0],%o0!ptr to executable!code 17 jmpl %o0, %g0!transfer control 18 nop 19 L1: ba end!first ptr in jump table points here 20 add %l0,1,%l0!i++ 21 L2: ba end 22 add %l0,2,%l0!i += 2 23 L15: add %l0,15,%l0!i += 15; note no break 24 L3: ba end 25 add %l0,3,%l0!i += 3 26 L4: add %l0, 4, %l0!i += 4; note no break 27 L6: ba end 28 add %l0,6,%l0!i += / Systemprogrammierung Stricker
32 switch in Assembler (cont.) 30 L4: add %l0, 4, %l0!i += 4; note no break; 31 L6: ba end 32 add %l0,6,%l0!i += 6 33 L5: ba end 34 add %l0,5,%l0!i += 5 35 L7: 36 L8: 37 L9: 38 L10: 39 L11: 40 L12: 41 L13: 42 L14: 43 default:sub %l0, 1, %l0!i-- 44 end: ta / Systemprogrammierung Stricker
Assembler-Programme. Systemprogrammierung (37-023) Elementare Komponenten eines Assembler-Programmes
Systemprogrammierung (37-023) Assemblerprogrammierung Betriebssystemgrundlagen Maschinenmodelle Dozent: Prof. Thomas Stricker krankheitshalber vertreten durch: Felix Rauch WebSite: http://www.cs.inf.ethz.ch/37-023/
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.
Heute nur MIPS-Praxis (4 Aufgaben)
Themen heute Heute nur MIPS-Praxis (4 Aufgaben) Hinweis: Diese Aufgaben findet ihr auf den Übungsblättern zu den Tutorien (bei Aufgabe 4 wurde eine Teilaufgabe und im Tutorium #6 bereits geklärte Wissensfragen
Technische Informatik 1 - HS 2016
Institut für Technische Informatik und Kommunikationsnetze Prof. L. Thiele Technische Informatik 1 - HS 2016 Lösungsvorschläge für Übung 8 Datum: 8. 9. 12. 2016 1 Instruktionsparallelität VLIW Gegeben
Programmierkurs Java
Programmierkurs Java Kontrollstrukturen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Kontrollstrukturen Wichtig: bedingte Ausführung
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 5. Kontrollstrukturen Allgemein Kontrollstrukturen dienen zur Steuerung des Programmablaufs. (Bemerkung: C und C++ besitzen die selben Kontrollstrukturen.)
Die Programmiersprache C Eine Einführung
Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert
Programmieren in C (Übungsblatt 1)
21.02.2017 Aufgabe 1: Programmausführung Programmieren in C (Übungsblatt 1) a) Bitte geben Sie den folgenden Programmcode ein: /* Beispiel fuer Textausgaben */ #include int main() { printf("c-programmierung
Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou ([email protected]) 22./23. Oktober 2015
Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou ([email protected]) 22./23. Oktober 2015 Ziele der Übung Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Codeanalyse
Algorithmen zur Datenanalyse in C++
Algorithmen zur Datenanalyse in C++ Hartmut Stadie 16.04.2012 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 1/ 39 Einführung Datentypen Operatoren Anweisungssyntax Algorithmen zur Datenanalyse in
Beispiele von Branch Delay Slot Schedules
Beispiele von Branch Delay Slot Schedules Bildquelle: David A. Patterson und John L. Hennessy, Computer Organization and Design, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur Prozessor 97 Weniger
Systeme 1: Architektur
slide 1 Vorlesung Systeme 1: Architektur Prof. Dr. Ulrich Ultes-Nitsche Forschungsgruppe Departement für Informatik Universität Freiburg slide 2 Prüfung 18. Februar 2004 8h00-11h40 13h00-18h20 20 Minuten
Lösungsvorschlag 9. Übung Technische Grundlagen der Informatik II Sommersemester 2009
Fachgebiet Rechnerarchitektur Fachbereich Informatik Lösungsvorschlag 9. Übung Technische Grundlagen der Informatik II Sommersemester 2009 Aufgabe 9.1: Dinatos-Algorithmus-Analyse Die folgenden Verilog-Zeilen
Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8
Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen
Einführung in die Programmierung Wintersemester 2011/12
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Kontrollstrukturen Inhalt Wiederholungen - while
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
C- Kurs 04 Anweisungen
C- Kurs 04 Anweisungen Dipl.- Inf. Jörn Hoffmann jhoffmann@[email protected] leipzig.de Universität Leipzig Ins@tut für Informa@k Technische Informa@k Ausdrücke Institut für Informatik Anweisungen C-Programm
Operatoren (1) Operatoren (2)
Operatoren (1) Binäre Operatoren + - * / % < = > & ^ > && Addition Subtraktion Multiplikation Division Divisionsrest Vergl. auf kleiner Vergl. auf kleiner oder gleich Vergl. auf gleich Vergl.
C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22
C++ Teil 2 Sven Groß IGPM, RWTH Aachen 16. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 2 16. Apr 2015 1 / 22 Themen der letzten Vorlesung Hallo Welt Elementare Datentypen Ein-/Ausgabe Operatoren Sven
JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.
JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung
Übersicht Programmablaufsteuerung
Übersicht Programmablaufsteuerung Konditionale Verzweigung: if - else switch-anweisung Schleifenkonstrukte: while, do - while for Schleife Sprung-Anweisungen: break, continue, goto, return Anweisungen
Technische Informatik 1 Übung 5: Eingabe/Ausgabe (Computerübung) Georgia Giannopoulou, ETZ G & 18.
Technische Informatik 1 Übung 5: Eingabe/Ausgabe (Computerübung) Georgia Giannopoulou, ETZ G77 [email protected] 17. & 18. November 2016 Inhalt Implementierung von Device-I/O mittels Polling und
RO-Tutorien 15 und 16
Tutorien zur Vorlesung Rechnerorganisation Tutorienwoche 5 am 25.05.2011 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft
Grundlagen der Programmierung in C++ Kontrollstrukturen
Grundlagen der Programmierung in C++ Kontrollstrukturen Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany [email protected] Block Keine Kontrollstruktur im eigentlichen Sinn Dient
Grundlagen der Programmierung
Grundlagen der Programmierung 8. Vorlesung 25.05.2016 1 Ausdrücke "Befehle", die ein Ergebnis liefern 3 + 4 sin(x) x < 10 getchar() Ausdrücke können Teil eines anderen Ausdrucks sein x = sin( x + y ) Auswertung:
4. Einfache Programmstrukturen in C Einfache Programmstrukturen in C
Einfache Programmstrukturen in C 4-1 Welche einfache Programmstrukturen sind zu unterscheiden? Arithmetische und logische Ausdrücke und Zuweisungen Verzweigungen Unvollständige bedingte Anweisungen Vollständige
Übersicht. C Ein-/Ausgabe und Kontrollanweisungen. I/O-Funktionen aus stdio. printf() Ein-/Ausgabe. Kontrollanweisungen.
Übersicht Ein-/Ausgabe C Ein-/Ausgabe und Kontrollanweisungen Kontrollanweisungen 1 2 I/O-Funktionen aus stdio printf() printf() - zum formatierten Ausgaben #include scanf() - zum formatierten
Dr. Monika Meiler. Inhalt
Inhalt 4 C-Anweisungen...4-2 4.1 Ausdrucksanweisungen...4-3 4.2 Zusammengesetzte Anweisungen (Anweisungsblöcke)...4-3 4.3 Schleifenanweisungen...4-4 4.3.1 while - Schleife...4-4 4.3.2 do - Schleife...4-5
Vorlesung Programmieren
Vorlesung Programmieren 3. Kontrollstrukturen 04.11.2015 Prof. Dr. Ralf H. Reussner Version 1.1 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD),
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
Schleifen in C/C++/Java
Schleifen in C/C++/Java Alle 3 Sprachen stellen mindestens die folgenden 3 Schleifenkonstruktionen zur Verfügung. In C gibt es auch keine weiteren, C++, Java und C# haben noch weitere nützliche Varianten.
Elementare Konzepte von
Elementare Konzepte von Programmiersprachen Teil 2: Anweisungen (Statements) Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Anweisungen (statements) in Java Berechnung (expression statement)
Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn
Ideen und Konzepte der Informatik Programme und Algorithmen Kurt Mehlhorn November 2016 Algorithmen und Programme Algorithmus = Schritt-für-Schritt Vorschrift zur Lösung eines Problems. Formuliert man
Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A
2.4.6. Kontrollstrukturen if-anweisung: Bedingte Ausführung (Verzweigung) 2 Varianten: if (Bedingung) Anweisung (Anweisung = einzelne Anweisung oder Block) Bedeutung: die Anweisung wird nur ausgeführt,
Java: Eine kurze Einführung an Beispielen
Java: Eine kurze Einführung an Beispielen Quellcode, javac und die JVM Der Quellcode eines einfachen Java-Programms besteht aus einer Datei mit dem Suffix.java. In einer solchen Datei wird eine Klasse
Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester Lorenz Schauer Mobile & Verteilte Systeme
Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester 2016 Lorenz Schauer Mobile & Verteilte Systeme 12. Juli 2016 Agenda heute Grundlagen: Unterprogramme I Call-by-Value (CBV) vs. Call-by-Reference
FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung
C Sprachelemente für Übung 2 Typumwandlungen (type casts) Bei Ausdrücken, in denen Operanden mit unterschiedlichem Typ vorkommen, werden diese vom Compiler vor der Ausführung automatisch in einen gemeinsamen
Shangrila. One Instruction Set Computer
Shangrila One Instruction Set Computer Outline One Instruction Set Computer Die Idee Funktion Die Machine Shangrila VM Interfaces Tools Implementation Status & Zukunft OISC >> Die Idee CPU mit nur einer
Rechnergrundlagen SS Vorlesung
Rechnergrundlagen SS 2007 3. Vorlesung Inhalt Zahlensysteme Binäre Darstellung von Integer-Zahlen Vorzeichen-Betrag Binary Offset 1er-Komplement 2er-Komplement Addition und Subtraktion binär dargestellter
2.5 Programmstrukturen Entscheidung / Alternative
Entscheidung, ob der folgende Anweisungsblock ausgeführt wird oder ein alternativer Block Entscheidung ob die Bedingung wahr oder falsch (True / False) ist Syntax: 2.5 Programmstrukturen 2.5.1 Entscheidung
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
Technische Informatik 1
Technische Informatik 1 2 Instruktionssatz Lothar Thiele Computer Engineering and Networks Laboratory Instruktionsverarbeitung 2 2 Übersetzung Das Kapitel 2 der Vorlesung setzt sich mit der Maschinensprache
Fallunterscheidung: if-statement
Fallunterscheidung: if-statement A E 1 E 2 V 1 V 2 Syntax: if ( ausdruck ) Semantik: else anweisungsfolge_1 anweisungsfolge_2 1. Der ausdruck wird bewertet 2. Ergibt die Bewertung einen Wert ungleich 0
Zusammenfassung der Assemblerbefehle des 8051
Zusammenfassung der Assemblerbefehle des 8051 Seite 1 von 5 Befehl Bezeichnung Syntax Wirkung / Beispiel Befehle zum Datentransfer MOV Move MOV [Ziel],[Quelle] MOV P1,P3 Kopiert den Inhalt von P3 nach
2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)
FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Blöcke. Beispiel: Variablen in Blöcken
4 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Blöcke Blöcke erweitern einzelne Anweisungen, etwa bei Kontrollstrukturen später Beispiel: Einzelne Anweisung: anweisung; Erweiterung
Programmieren I. Kontrollstrukturen Heusch 8 Ratz Institut für Angewandte Informatik
Programmieren I Kontrollstrukturen Heusch 8 Ratz 4.5 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Arten von Kontrollstrukturen Neben der Sequenz (Aneinanderreihung von Anweisungen)
Digitaltechnik und Rechnerstrukturen. 2. Entwurf eines einfachen Prozessors
Digitaltechnik und Rechnerstrukturen 2. Entwurf eines einfachen Prozessors 1 Rechnerorganisation Prozessor Speicher Eingabe Steuereinheit Instruktionen Cachespeicher Datenpfad Daten Hauptspeicher Ausgabe
C/C++ Programmierung
1 C/C++ Programmierung Grundlagen: Anweisungen Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Anweisungen (Statements)
Eine JAVA Einführung ... Quellcode:... COMA Übung 3. T.Bosse. A.Griewank. Vorschau JAVA Programme Sprachen Kate
COMA Eine Einführung Quellcode: Anweisung(en)1 Wiederhole: T.Bosse Anweisung(en) 2 Einfache Schleifen (z.b. for-loop) Wiederhole: Falls (Bedingung) wahr, tue: Anweisung(en) 2 sonst führe Verzweigungen
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
DLX-Assembler für Anfänger Kutil, 2004
DLX-Assembler für Anfänger Kutil, 200 Hiermit können Sie die ersten Schritte in die Assemblerprogrammierung am Beispiel des virtuellen DLX-Prozessors machen. Dieses Dokument erklärt aber nicht die Befehle
Programmieren I. Kapitel 5. Kontrollfluss
Programmieren I Kapitel 5. Kontrollfluss Kapitel 5: Kontrollfluss Ziel: Komplexere Berechnungen im Methodenrumpf Ausdrücke und Anweisungen Fallunterscheidungen (if, switch) Wiederholte Ausführung (for,
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
1.8 Kontrollstrukturen 73. default : ziffer = 0; if (ziffer > 0) { cout << "Ziffer = " << ziffer; else { cout << "keine römische Ziffer!
1.8 Kontrollstrukturen 73 default : ziffer = 0; if (ziffer > 0) { cout
3. Kontrollstrukturen Grundlagen der Programmierung 1 (Java)
3. Kontrollstrukturen Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 11. Oktober 2005 Agenda Agenda Verzweigungen
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
Grundbegriffe der Informatik
Grundbegriffe der Informatik Übung Simon Wacker Karlsruher Institut für Technologie Wintersemester 2015/2016 GBI Grundbegriffe der Informatik Karlsruher Institut für Technologie 1 / 13 Programmiersprachen
Pipelining. Die Pipelining Idee. Grundlagen der Rechnerarchitektur Prozessor 45
Pipelining Die Pipelining Idee Grundlagen der Rechnerarchitektur Prozessor 45 Single Cycle Performance Annahme die einzelnen Abschnitte des MIPS Instruktionszyklus benötigen folgende Ausführungszeiten:
Bei der Und-Verknüpfung müssen beide Ausdrücke wahr sein, dass der gesamte Ausdruck wahr wird. a=1; b=2; a=1; b=3; else. endif
1. Kontrollstrukturen in Octave 1.1 Logische Vergleichs- und Verknuepfungsoperatoren Es existieren die gleichen logischen Vergleichs- und Vernüpfungsoperatoren wie bei praktisch allen Programmiersprachen.
Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften
Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften Teil 3: Anweisungen, Blöcke und Programmfluss Martin Nolte Abteilung für Angewandte Mathematik Universität Freiburg i. Br. Vorlesung
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
Systemprogrammierung - Zusammenfassung
Systemprogrammierung - Zusammenfassung Patrick Pletscher 21. September 2004 1 Computerarchitektur 1.1 Ressourcen und Operationen Register Schnellste Speicherzellen, nur sehr wenige (8-32), beschränkte
Entwurf von Algorithmen - Kontrollstrukturen
Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer
Was ist die Performance Ratio?
Was ist die Performance Ratio? Wie eben gezeigt wäre für k Pipeline Stufen und eine große Zahl an ausgeführten Instruktionen die Performance Ratio gleich k, wenn jede Pipeline Stufe dieselbe Zeit beanspruchen
Grundlagen der Programmierung
Grundlagen der Programmierung 7. Vorlesung 18.05.2016 1 Konstanten Ganzzahlkonstante Dezimal: 42, 23, -2 Oktal (0 vorangestellt): 052 Hexadezimal (0x vorangestellt): 0x2A Gleitkommazahlen: 3.1415, 2.71,
4. Ablaufsteuerung (Kontrollstrukturen) 4.1 Anweisungen 4.2 Selektion (bedingte Anweisung) 4.3 Iteration 4.4 Flussdiagramm (Programmablaufplan)
4. Ablaufsteuerung (Kontrollstrukturen) 4.1 Anweisungen 4.2 Selektion (bedingte Anweisung) 4.3 Iteration 4.4 Flussdiagramm (Programmablaufplan) 4. Ablaufsteuerung 4-1 4.1 Anweisungen Ein Programm besteht
Datenpfad einer einfachen MIPS CPU
Datenpfad einer einfachen MIPS CPU Zugriff auf den Datenspeicher Grundlagen der Rechnerarchitektur Prozessor 19 Betrachten nun Load und Store Word Erinnerung, Instruktionen lw und sw sind vom I Typ Format:
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
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
Teil 2: Rechnerorganisation
Teil 2: Rechnerorganisation Inhalt: Zahlendarstellungen Rechnerarithmetik schrittweiser Entwurf eines hypothetischen Prozessors mit Daten-, Adreß- und Kontrollpfad Speicherorganisation Mikroprogrammierung
6. Iteration (Schleifenanweisungen)
6. Iteration (Schleifenanweisungen) Java-Beispiel: TemperatureTable.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 9. Nov. 2015 2 Schwerpunkte While-Anweisung: "abweisende"
Der Toy Rechner Ein einfacher Mikrorechner
Der Toy Rechner Ein einfacher Mikrorechner Dr. Gerald Heim Haid-und-Neu-Str. 10-14 76131 Karlsruhe 16. Mai 1995 Allgemeine Informationen 2 Quelle: Phil Kopmann, Microcoded versus Hard-Wired Logic, Byte
Programmieren I. Kontrollstrukturen Heusch 8 Ratz Institut für Angewandte Informatik
Programmieren I Kontrollstrukturen Heusch 8 Ratz 4.5 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Arten von Kontrollstrukturen Neben der Aneinanderreihung von Anweisungen (Sequenz)
Auch hier wieder. Control. RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite. Instruction[31 26] (also: das Opcode Field der Instruktion)
Auch hier wieder Aus voriger Wahrheitstabelle lässt sich mechanisch eine kombinatorische Schaltung generieren, die wir im Folgenden mit dem Control Symbol abstrakt darstellen. Instruction[31 26] (also:
Kontrollstrukturen Blöcke / Schleifen / Bedingungen
Kontrollstrukturen Blöcke / Schleifen / Bedingungen 1 Einfache Anweisungen und Blöcke einfache Anweisung abgeschlossen mit Semikolon ; typische Fälle: o Deklaration, Zuweisung, Funktionsaufruf Sonderfall
DLX-Assembler-Programmierung Kutil, 2010
DLX-Assembler-Programmierung Kutil, 200 Es gibt mehrere Simulatoren für den DLX-Prozessor. Erstens WinDLX, ein altes 6-Bit-Windows-Programm mit GUI und Dokumentation. Zweitens dlxsim, ein Unix-Programm
Rechnerarchitektur Teil 2
Rechnerarchitektur Teil 2 Fähigkeiten der Registermaschine und Sprachübersetzung Dipl.-Inform. Meiko Lösch 2006-05-12 Inhalt 1 Rechenfähigkeit Zuweisungen Rechnen Relationen 2 Programmierfähigkeit Schleifen
Von-Neumann-Architektur
Von-Neumann-Architektur Bisher wichtig: Konstruktionsprinzip des Rechenwerkes und Leitwerkes. Neu: Größerer Arbeitsspeicher Ein- und Ausgabewerk (Peripherie) Rechenwerk (ALU) Steuerwerk (CU) Speicher...ppppp...dddddd..
Theoretische Informatik SS 03 Übung 3
Theoretische Informatik SS 03 Übung 3 Aufgabe 1 a) Sind die folgenden Funktionen f : partiell oder total: f(x, y) = x + y f(x, y) = x y f(x, y) = x y f(x, y) = x DIV y? Hierbei ist x DIV y = x y der ganzzahlige
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
Kontrollstrukturen, Pseudocode und Modulo-Rechnung
Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1
Tutorium für Fortgeschrittene
Tutorium für Fortgeschrittene Stroop Aufgabe: Die Farbe gesehener Wörter ist zu klassifizieren. Es gibt 4 Farben (rot, blau, gelb, grün) In Eprime: red, blue, yellow and green. Jeder Farbe ist einer Taste
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
Logische Bausteine. Grundlagen der Rechnerarchitektur Logik und Arithmetik 31
Logische Bausteine Sequentielle Schaltungen Shlt Grundlagen der Rechnerarchitektur Logik und Arithmetik 31 Sequentielle Schaltungen n Eingänge m Ausgänge n Eingänge m Ausgänge Zustand Ausgänge hängen nur
1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)
1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.3. Anweisungen und Kontrollsttukturen - 1 - 3. Anweisungen und Kontrollstrukturen
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
Einführung in AVR Assembler
Einführung in AVR Assembler Dennis Fassbender Institut für Technik Autonomer Systeme (LRT8) Universität der Bundeswehr München 09042014 Was ist Assembler? Low-level-Programmiersprache Erlaubt direkten
Kontrollstrukturen. Bedingter Ablauf: if. Bedingter Ablauf: if-else
Kontrollstrukturen 1. Bedingter Ablauf: if, if-else 2. Blöcke von Code 3. Wiederholungsschleife: for mit Inkrement und Dekrement Operatoren 4. erweiterte Eigenschaften von printf() 5. Die relationalen
Korn-Shell: Einführung in Shellscripte 1. Übersicht: Einführung - 2. Die Kornshell im Detail - 3.Grundlagen der Programmierung
1. Übersicht: Einführung - 2. Die Kornshell im Detail - 3.Grundlagen der Programmierung 1. Übersicht und Einführung 1.1 Die Shell allgemein 1.2 Die korn-shell 1.3 Der Weg zum ersten Skript 1.4 Nutzen und
Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration
Algorithmen & Programmierung Steuerstrukturen im Detail Selektion und Iteration Selektion Selektion Vollständige einfache Selektion Wir kennen schon eine Möglichkeit, Selektionen in C zu formulieren: if
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
Daniel Betz Wintersemester 2011/12
Daniel Betz Wintersemester 2011/12 Digitally signed by [email protected] 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
4 Assembler für die 8051-Controller-Familie
4 Assembler für die 8051-Controller-Familie Tabelle 4.1 Wichtige Schreibweisen und Bedeutungen für die Befehle Abkürzung #data data addr Rr @Rr code addr Bedeutung Daten sind in der Instruktion codiert
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.
1.4.12 Sin-Funktion vgl. Cos-Funktion
.4. Sgn-Funktion Informatik. Semester 36 36.4.2 Sin-Funktion vgl. Cos-Funktion Informatik. Semester 37 37 .4.3 Sqr-Funktion Informatik. Semester 38 38.4.4 Tan-Funktion Informatik. Semester 39 39 .5 Konstanten
Random Access Machine (RAM) Berechenbarkeit und Komplexität Random Access Machines
Random Access Machine (RAM) Berechenbarkeit und Komplexität Random Access Machines Wolfgang Schreiner [email protected] Research Institute for Symbolic Computation (RISC) Johannes Kepler University,
