Praktikum Technische Informatik T3-3
|
|
|
- Kristian Hofmann
- vor 8 Jahren
- Abrufe
Transkript
1 Praktikum Technische Informatik T3-3 Assemblerebene Fachbereich Informatik Universität Hamburg Vogt-Kölln-Str. 30 D22527 Hamburg
2 1 DIE ASSEMBLEREBENE 1 1 Die Assemblerebene Inhalt dieses Versuchs ist die Programmierung auf der Assemblerebene. Schon beim Erstellen der winzigen Maschinenprogramme für das Aufgabenblatt T3-2 dürfte klargeworden sein, dass die Programmierung in der reinen Maschinensprache sowohl extrem (zeit-) aufwendig als auch fehleranfällig ist. Ohne weitere Unterstützung lassen sich auf diese Weise keine Programme mit mehr als einigen hundert Befehlen erstellen. Andererseits haben Sie beim Erstellen der Maschinenprogramme bereits alle Funktionen kennengelernt, die ein Assembler automatisiert vom Zusammensetzen von Opcode und Registerangaben zu vollständigen Befehlsworten bis zur Berechnung von Sprungadressen. Merkmal einer Assemblersprache ist die 1:1-Abbildung jedes Assemblerbefehls auf einen Maschinenbefehl. Wegen dieser direkten Zuordnung zu Maschinenbefehlen sind Assembler und ihre Eingabesprachen normalerweise auf eine bestimmte Architektur zugeschnitten. Es gibt aber auch universelle Assembler (wie den GNU-Assembler oder TASM), die für eine Reihe von verschiedenen Architekturen und Prozessoren benutzt werden können. Wichtige gemeinsame Merkmale aller Assemblersprachen sind die folgenden: Verwendung von einprägsamen Namen für die einzelnen Befehle (Mnemonics) Einfache und reguläre Syntax für Befehlsargumente wie Register oder Speicheradressen Definition von symbolischen Namen für Konstanten und Sprungmarken Unterstützung von Kommentaren und freie Formatierung Umrechnung der symbolischen Programmadressen in die wirklichen physikalischen Adressen Erstellen von Hilfsdateien, etwa eine Liste aller verwendeten Namen, aller Sprungmarken, usw. Voller Zugriff auf alle Befehle und Register des benutzten Prozessors Evtl. Unterstützung fortgeschrittener Techniken, etwa das Einbinden mehrerer Quelldateien mittels include oder Makrofähigkeit Häufig wird der eigentliche Assembler um weitere Tools wie Debugger und Disassembler ergänzt. Damit können Details völlig vom Benutzer ferngehalten werden (etwa die Umrechnung zwischen Byte- und Wortadressen) Obwohl ein Assemblerprogramm weiterhin auf der Ebene einzelner Befehle geschrieben wird, ist der Produktivitätsgewinn gegenüber der Maschinensprache beträchtlich. Auf der anderen Seite ist die Assemblerprogrammierung natürlich immer noch sehr viel aufwendiger als die Programmierung in Hochsprachen (wie Java oder C usw.). Trotzdem gibt es eine Reihe von guten Gründen, in Assembler zu programmieren: es steht (noch) kein geeigneter Compiler für eine Hochsprache zur Verfügung kritische Programmanteile erfordern maximale Performance Zugriff auf Spezialregister und privilegierte Register, etwa für Gerätetreiber eingeschränkte Resourcen an Programm- und Datenspeicher viele 8-bit Mikrocontroller enthalten weniger als 1KByte RAM
3 1 DIE ASSEMBLEREBENE Format der Assemblersprache Obwohl jede Assemblersprache auf die Struktur der Befehle der zugrundeliegenden Architektur zugeschnitten ist, ähneln sich die Assemblersprachen für verschiedene Prozessoren doch sehr stark. Fast immer werden die Programme mit genau einer Assemberanweisung pro Zeile geschrieben, und jede Zeile wiederum beginnt mit einer optionalen Marke, gefolgt vom Befehl (Opcode), den Operanden, und einem optionalen Kommentar. Der Assembler winasm.exe für den D CORE verwendet das folgende Format für die Eingabedateien: ; write.asm ; einfacher Schreibzugriff auf das RAM ab Adresse 0x8000 ; Start: Label1: Hello: movi r8, 8 ; R8 = 8 lsli r8, 12 ; R8 = 0x8000 (RAM base) movi r0, 0 ; R0 loeschen stw r0, (r8) ; MEM[ R8 ] = 0 addi r0, 1 ; R0 += 1 addi r8, 2 ; R8 += 2 (naechste Addresse) stw r0, 2(r8) ; MEM[ R8 + 2 ] = 1 br Label1 ; naechste Iteration der Schleife halt.defs 2.defw 34 ; Wert 34.assho "Hello processor!".defw 0 ; Null-Wort als String-Ende.end Die Details finden Sie in der ausführlichen, separaten Beschreibung t3asm.pdf für den Assembler. Zusammengefasst gelten die folgenden Regeln für das Eingabeformat: Kommentare beginnen mit ; und reichen bis zum Zeilenende Label-Definitionen sind Strings, die in der ersten Spalte der Datei beginnen und mit einem Doppelpunkt abgeschlossen werden. Hex-Konstanten werden in der Schreibweise 0xCAFE erwartet. Die.org-Direktive sorgt dafür, dass die nachfolgenden Befehle oder Konstanten ab der angegebenen Adresse <addr> im ROM abgelegt werden. Die.defw-Direktive dient dazu, ein bestimmtes Datenwort in die jeweilige Speicherstelle zu schreiben. Die.defs-Direktive reserviert die angegebene Anzahl von Speicherworten. Die.assho-Direktive erlaubt es, Zeichenketten im ROM abzulegen, mit jeweils einem ASCII- Zeichen pro Speicherwort.
4 2 MASCHINENARITHMETIK 3 2 Maschinenarithmetik Die nächsten Aufgaben dienen dazu, noch einmal einige Aspekte der Zahldarstellung und Integerarithmetik aufzufrischen. Achtung: Die folgenden Aufgaben bauen aufeinander auf. Denken Sie deshalb daran, alle Programme abzuspeichern und ausreichend zu kommentieren (z.b. die benutzten Register), damit Sie sie wiederverwenden können! Bitte schreiben Sie zusätzlich einen Kommentar-Header, der neben Programmnamen und -funktion auch ihre Namen und Matrikelnummern enthält. Aufgabe 2.1: Absolutwert (Betrag) Schreiben Sie ein möglichst kurzes Unterprogramm, um den Absolutwert (Betrag) des Inhalts des Registers R14 zu berechnen und in R13 zurückzuliefern. Verwenden Sie möglichst wenig Zwischenregister. Wie behandeln Sie den Eingabewert 0x8000? Label Adresse Befehlscode Mnemonic Kommentar A 000C 000E A 001C 001E Aufgabe 2.2: Betrag und Vorzeichen Verwenden Sie das Unterprogramm aus der letzten Aufgabe um den Wert aus Register R14 von der Zweierkomplementdarstellung in die Betrag-und-Vorzeichen- Darstellung umzuwandeln, wobei das höchste Bit als Vorzeichen interpretiert wird. Die positiven Zahlen bleiben dabei natürlich unverändert. Zum Beispiel soll die negative Zahl -1 von der Zweierkomplementdarstellung 0xffff in die Betrag-und-Vorzeichen-Darstellung 0x8001 umgewandelt werden, 0xfffe in 0x8002 usw.
5 2 MASCHINENARITHMETIK 4 Label Adresse Befehlscode Mnemonic Kommentar A 000C 000E A 001C 001E Aufgabe 2.3: 32-Bit Addition Schreiben Sie ein Unterprogramm zur Addition von 32-Bit Zahlen. Die Argumente werden in (R8,R9) und (R10,R11) übergeben, das Resultat soll in (R12,R13) sowie dem C-Flag abgelegt werden (jeweils MSW,LSW). Wie viele Maschinenbefehle werden benötigt? Label Adresse Befehlscode Mnemonic Kommentar A 000C 000E A 001C 001E Aufgabe 2.4: Multiplikation (optional) Viele Mikroprozessoren für eingebettete Systeme enthalten kein eigenes Rechenwerk für die Multiplikation oder Division, da diese Operationen nicht in allen Programmen benötigt werden und die notwendige Hardware sehr aufwendig ist. Auf solchen Rechnern werden Multiplikation und Division statt dessen als Unterprogramme mit fortgesetztem Addieren und Shiften realisiert. Schreiben Sie das notwendige Unterprogramm zur Multiplikation! Nehmen Sie an, dass die Ausgangswerte positiv sind und in den Registern R10 und R11 stehen. Welche Algorithmen kennen Sie, um auch negative Operanden korrekt behandeln zu können? Wie könnte der Befehlssatz des D CORE verbessert werden, um die Multiplikation zu erleichtern?
6 3 INDIZIERTE ADRESSIERUNG UND ZEICHENKETTEN 5 String s = "Hello"; 0x0000 Beispiel: R2: Pointer auf s R0 R2 81F C 006C 006F x81F0 H e l l o nul R15 Register Speicher 0xffff Abbildung 1: Null-terminierter String im Speicher, ein Zeichen pro Wort 3 Indizierte Adressierung und Zeichenketten Machen Sie sich aus Ihren Vorlesungsunterlagen noch einmal dem Begriff der Adressierungsarten vertraut. Beschreiben Sie die Funktion der folgenden Adressierungsarten (aus Tanenbaum, Computerarchitektur, S.395ff): unmittelbare Adressierung, direkte Adressierung, Registeradressierung, indirekte Registeradressierung, indizierte Adressierung, basisindizierte Adressierung, Stapeladressierung. Aufgabe 3.1: Adressierungsarten Welche der Adressierungsarten werden beim D CORE verwendet: für die arithmetischen Befehle: für Speicherzugriffe: für den jmp-befehl: für die Branch-Befehle: Aufgabe 3.2: Zeichenketten Eine besonders wichtige Anwendung von Arrays und indizierter Adressierung sind Zeichenketten (Strings). In C und verwandte Sprachen wird eine Zeichenkette nur durch ihre Speicheradresse spezifiziert. Alle nachfolgenden Bytes bis zum ersten Null-Byte 0x00 (einschließlich) stellen die Zeichenkette dar. Einige andere Sprachen benutzen statt dessen eine zusammengesetzte Datenstruktur mit einem Integer für die Anzahl der Zeichen und einem separaten Array von Zeichen. Aufgabe 3.3: strlen() Erstellen Sie ein Assemblerunterprogramm zusammen mit einem aufrufenden Hauptprogramm für die Funktion strlen(), die die Länge einer Zeichenkette zurückliefert. Die Startadresse des Strings stehe in R10, das Resultat soll in R11 zurückgeliefert werden. Verwenden Sie die C-Konvention mit null-terminierten Strings und 16-Bit pro Zeichen, wie in Abbildung 1 illustriert. Einen String bekommen Sie dabei mit der Befehlsfolge
7 4 EIN- UND AUSGABE 6.org 0x8000 ; Adresse.ascii "Ein String" ; der String.defw 0 ; terminierende Null in der Speicher. Setzen Sie Sie diese Anweisungen bitte immer ganz an das Ende ihres Programms! Aufgabe 3.4: strcpy() Schreiben Sie jetzt das analoge Assemblerunterprogramm für die Funktion strcpy(), um eine Zeichenkette zu kopieren. Die Startadresse für Original und Kopie stehe in R10 und R11. Testen Sie Ihre Funktion, indem Sie einen nicht zu langen String, der ab der Adresse 0x8000 im Speicher steht, zuerst in einen Bereich ab der Adresse 0x80A0 und dann direkt hinter sich selbst kopieren (verwenden Sie für den zweiten Teil die Funtion strlen(), um die Länge des Strings zu ermitteln. Aufgabe 3.5: itoa() Die Umwandlung von numerischen Werten in Zeichenketten ist eine häufig benötigte Operation zum Beispiel benutzen die Speicherkomponenten in Hades eine solche Funktion, um die Speicherinhalte lesbar darzustellen. Realisieren Sie die Funktion itoa() (Integer to ASCII), die einen Integerwert in einen String zur Basis 16 umwandelt. Zum Beispiel soll die Funktion zu den Eingabewerten 1, 32 und die Zeichenketten "0x0001", "0x0020", "0xFFFD" erzeugen. Da bisher noch keine dynamische Speicherverwaltung zur Verfügung steht, müssen sowohl die Eingabezahl in R10 als auch ein Zeiger auf einen ausreichend großen Speicherbereich (7 Worte) in R11 als Argumente übergeben werden. Natürlich können Sie dabei auf die Funktion aus T zurückgreifen. Der ASCII-Wert für das Zeichen x ist 0x78. 4 Ein- und Ausgabe Gerade bei der Programmierung von Treibern zur Ansteuerung von I/O-Geräten wird Assemblerprogrammierung oft eingesetzt. Beim Konzept von memory mapped I/O werden die Geräte an bestimmten Adressen in den Adressraum des Prozessors eingeblendet und vom Prozessor direkt mit Leseund Schreibbefehlen angesprochen. Zur Demonstration dieses Verfahrens enthält das Hades-Design processor-io.hds neben RAM und ROM zusätzlich zwei I/O-Komponenten: ein einfaches Register zur Ansteuerung einiger LEDs und ein ebenfalls parallel angesteuertes Terminal. Der Adressdekoder in diesem Entwurf ist so eingestellt, dass das ROM im Adressbereich von 0x x6ffe aktiviert wird, das Terminal bei Adresse 0x7000, das Display bei Adresse 0x7002 und das RAM im Bereich von 0x xfffe. Sie können aber diese Aufgaben aber auch mit dem Assembler lösen, der im Emulatorfenster ebenfalls eine Siebensegmentanzeige und ein Terminal hat. Aufgabe 4.1: Ansteuerung der LEDs Schreiben Sie eine Funktion, um den Inhalt von R10 auf den LEDs auszugeben. Demonstrieren Sie die Funktion, indem Sie in einer Endlosschleife einen Zähler inkrementieren und den aktuellen Wert dieses Zählers jeweils auf den LEDs ausgeben.
8 5 SPEICHERBEREICHE UND STACK 7 Aufgabe 4.2: Ansteuerung von Speicher vs. I/O Machen Sie sich an dieser Stelle klar, dass trotz der identischen Ansteuerung ein fundamentaler Unterschied zwischen Speicher und I/O-Komponenten wie dem Terminal oder einem Drucker besteht: mehrfaches Schreiben einer Speicherstelle mit demselben Wert bewirkt keine Änderung, während mehrfaches Schreiben eines Wertes in ein I/O-Geräts durchaus mehrfache Wirkung haben kann. Entsprechendes gilt für das Lesen; insbesondere dürfen Speicherbereiche mit I/O-Geräten normalerweise nicht vom Cache abgedeckt werden! Dies gilt auch für die hier verwendete Ansteuerung des Terminals. Dieses verfügt neben den acht Datenleitungen, die direkt über die Datenbits 7..0 angesprochen werden, zusätzlich über zwei Steuerleitungen nreset und strobe (clk), die an die Datenbits 9 und 8 angeschlossen sind, siehe Abbildung 2. Für jedes Zeichen muss ein clk-impuls erzeugt werden, indem das Datenbit 8 zuerst auf 0 und dann auf 1 gesetzt wird. Für den normalen Betrieb muss das nreset Bit auf 1 gesetzt werden (ansonsten wird der gesamte Bildschirm gelöscht). Zum Beispiel müssen zur Ausgabe des Zeichens A (Ascii-Code 65 bzw. 0x41) nacheinander die Werte 0x0241, 0x0341, 0x0241 an die Adresse 0x7000 geschrieben werden. d[9]/nreset d[8]/strobe d[7..0]/data char Abbildung 2: Ansteuerung des parallelen Terminals: alle Zeichen löschen (links), Ausgabe eines Zeichens (rechts) Aufgabe 4.3: putc() Schreiben Sie eine Funktion, um den Inhalt der unteren 8 Bits von R10 auf das parallele Terminal (an Adresse 0x7000) auszugeben. Demonstrieren Sie die Funktion, indem Sie in einer Endlosschleife einen Zähler inkrementieren und den aktuellen Wert dieses Zählers jeweils auf des Terminal ausgeben. Falls beim Testen Ihres Programms Probleme auftreten, weil das Terminal in einen undefinierten Zustand übergeht, kontrollieren Sie den Microcode für den stw-befehl: Der Datenbus darf sich nicht gleichzeitig mit der nwe oder noe Leitung ändern. Aufgabe 4.4: puts() Schreiben Sie jetzt eine Funktion puts(), um eine Zeichenkette auf einen Drucker (bzw. ein Terminal) auszugeben. Das Argument mit dem Zeiger auf die auszugebende Zeichenkette wird wiederum in R10 übergeben. 5 Speicherbereiche und Stack Da beim von-neumann-rechner sowohl die Programme als auch alle Daten im Hauptspeicher liegen, ist die Organisation des Speichers von zentraler Bedeutung. Die in Unix übliche Konvention zur Einteilung der Speicherbereiche ist in Abbildung 3 gezeigt. Dabei werden die folgenden Speicherbereiche (Segmente) unterschieden:
9 5 SPEICHERBEREICHE UND STACK 8 Stack 0xffff long fak( n ) { long n; // Programmtext: Programm // lokale Variable: Stack if (n == 1) return 1; else return n*fak(n 1); static int i, j, k; // globale Variable: CP Heap CP Programm int main( int argc; char ** argv ) { int* array = malloc( 10000L );// malloc: Heap for( i = 0; i < 100; i++ ) { printf( "Fakultät(%ld)= %ld", i, fak(i)); OS Kern 0x0000 Abbildung 3: Speicherbereiche im Hauptspeicher: Textsegment, Konstantenpool, Heap, Stack Das Textsegment enthält den eigentlichen Programmtext mit allen Befehlen. Sofern keine selbstmodifizierende Programme zum Einsatz kommen, bleibt das Textsegment während des Programmablaufs unverändert. Es wird häufig ab unteren Ende des Speichers abgelegt. der constant pool (Konstantenbereich) nimmt alle Konstanten und statischen Variablen des Programms auf. Typ und Anzahl dieser Variablen ergeben sich unmittelbar aus dem Programm. Der Speicherplatz für diese Variablen wird normalerweise direkt oberhalb des Textsegments angelegt. der Heap (Halde) nimmt alle dynamisch zur Laufzeit des Programms erzeugten Variablen bzw. Objekte auf. Der Heap wird oberhalb des Konstantenpools angelegt und wächst nach oben. Für den Heap werden (Betriebssystem-) Funktionen benötigt, um freie Speicherbereiche für neu anzulegende Variablen zu finden und diese auch wieder freigeben zu können. der Stack (Stapel) wird für die Parameterübergabe zwischen Funktionen und für die Speicherung der lokalen Variablen der einzelnen Funktionen benutzt. Der Stack wird häufig ab oberen Ende des zur Verfügung stehenden Speichers angelegt und wächst mit jedem Aufruf nach unten. Der im Befehlssatz des D CORE definierte Befehl JSR speichert die Rücksprungadresse immer in Register R15. Das bedeutet, dass ohne weitere Maßnahmen immer nur höchstens ein Unterprogramm aufgerufen werden kann, da sonst der zweite Aufruf die Rücksprungadresse des ersten Aufrufs überschreibt. Für geschachtelte Aufrufe muss daher ein Stapel bereitgestellt und vom Anwenderprogramm aus verwaltet werden. Wie bei fast allen RISC-Prozessoren (ausser SPARC), gibt es im Befehlssatz keine weitere Unterstützung für die Stack-Verwaltung. Die Motivation ist, dass der Compiler oft in der Lage ist, soweit möglich alle Parameter über Register zu übergeben und den Stack nur verwendet, wenn sich dies nicht vermeiden lässt.
10 5 SPEICHERBEREICHE UND STACK 9 Aufgabe 5.5: Stack Machen Sie sich aus den Vorlesungsskripten die Funktion eines Stacks klar. Was bedeuten die Begriffe: caller save: callee save: Mit welchen Befehlen kann der D CORE-Stackpointer auf den in Abbildung 4 verwendeten Wert von 0xfffe initialisiert werden? Aufgabe 5.6: push() In den meisten Situationen müssen nicht alle sondern nur einige Register auf den Stack gesichert werden. Notieren Sie als Beispiel die Assemblerbefehle, um den Inhalt der Register R4, R5, R10 auf den Stack zu sichern. Per Konvention soll Register R0 als Stackpointer verwendet werden. Wie behandeln Sie den Stackpointer? Label Adresse Befehlscode Mnemonic Kommentar A 000C 000E Aufgabe 5.7: pop() Notieren Sie die notwendigen Assemblerbefehle, um den Inhalt der Register R4, R5, R10 vom Stack wiederherzustellen: Label Adresse Befehlscode Mnemonic Kommentar A 000C 000E Viele gute Assembler stellen entsprechende Macros zur Verfügung, wobei die betroffenen Register als Argumente übergeben werden. Das gilt für das von uns verwendete Programm. Hier heißen sie.push und.pop. Als Stackpointer wird als Default das Register R0 angenommen, das auf die zuletzt beschriebene Speicherstelle zeigt. Falls Sie ein anderes Register als Stackpointer verwenden möchten (z.b. das R14), können sie dies dem Assembler mit.stack R14 mitteilen. Veregessen Sie bitte nicht, ihren Stackpointer auf einen definierten Wert (z.b. 0) zu initialisieren.
11 5 SPEICHERBEREICHE UND STACK 10 Stack 0xffff Stack Stack Stack SP fak(4) fak(4) fak(4) SP fak(3) fak(3) fak(3) SP fak(2) fak(2) SP fak(1) Heap CP Programm OS Kern 0x0000 Abbildung 4: Rekursiver Aufruf der Faktultätsfunktion. Aufgabe 5.8: Türme von Hanoi Das Problem der Türme von Hanoi ist eine der bekanntesten Aufgaben mit einer einfachen rekursiven Lösung. Es geht dabei darum, die Scheiben von Stab 1 auf Stab 3 zu übertragen, dass jede Scheibe immer auf einem der drei Stäbe liegt und immer eine kleinere Scheibe auf einer größeren liegt. Für drei Scheiben hat man z.b. die sieben Verschiebungen: 1 3,1 2,3 2,1 3,2 1,2 3,1 3. Das folgende Programm zur Lösung des Problems stammt aus [Tanenbaum]:
12 5 SPEICHERBEREICHE UND STACK 11 #include <stdio.h> /* */ Uebertrage n Scheiben von Stab i auf Stab j. (1 <= i,j <= 3). void towers( int n, int i, int j ) { if (n == 1) { printf( "Uebertrage Scheibe von %d nach %d\n", i, j ); else { int k = 6 - i - j; towers( n-1, i, k ); towers( 1, i, j ); towers( n-1, k, j ); void main() { towers( 3, 1, 3 ); Realisieren Sie das Programm in Assembler und testen Sie es zuerst mit dem angegeben Aufruf towers(3,1,3), der zu insgesamt sieben Ausgaben auf dem Terminal führt. Aufgabe 5.9: Stacklayout Welche Parameter liegen beim Aufruf von towers() wo auf dem Stack? Dokumentieren Sie das von ihnen gewählte Stacklayout: Aufgabe 5.10: Laufzeit Für größere Parameter wachsen die Laufzeit und der auf dem Stack benötigte Platz schnell an. Erweitern Sie ihre Funktion so, dass die Anzahl der Aufrufe mitgezählt wird. Wieviele Aufrufe ergeben sich für towers(8,1,3)? Was folgt daraus für die Komplexität des Algorithmus? Literaturempfehlungen Tanenbaum, Goodman: Computerarchitektur, 4. Auflage, Prentice-Hall 1999 Tanenbaum: Modern Operating Systems, Second Ed., Prentice-Hall 2001 Plauger: The Standard C Library, Prentice-Hall 1992
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
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
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
Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free()
Übungspaket 29 Dynamische Speicherverwaltung malloc() und free() Übungsziele Skript In diesem Übungspaket üben wir das dynamische Alloziieren 1. und Freigeben von Speicherbereichen 2. von Zeichenketten
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
Deklarationen in C. Prof. Dr. Margarita Esponda
Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.
2 Einfache Rechnungen
2 Einfache Rechnungen 2.1 Zahlen Computer, auch bekannt als Rechner, sind sinnvoller eingesetzt, wenn sie nicht nur feste Texte ausgeben, sondern eben auch rechnen. Um das Rechnen mit Zahlen zu verstehen,
6 Speicherorganisation
Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für
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
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
Speicher und Adressraum
Linearer Speicher (Adressraum) Technische Universität München Speicher und Adressraum Freie Speicherhalde (Heap) Freier Speicherstapel (Stack) Globale Variablen Bibliotheksfunktionen Laufzeitsystem Programmcode
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
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
Prozessor HC680 fiktiv
Prozessor HC680 fiktiv Dokumentation der Simulation Die Simulation umfasst die Struktur und Funktionalität des Prozessors und wichtiger Baugruppen des Systems. Dabei werden in einem Simulationsfenster
Teil 1: Prozessorstrukturen
Teil 1: Prozessorstrukturen Inhalt: Mikroprogrammierung Assemblerprogrammierung Motorola 6809: ein einfacher 8-Bit Mikroprozessor Mikrocontroller Koprozessoren CISC- und RISC-Prozessoren Intel Pentium
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
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 9. Zeiger Arbeitsspeicher / Adressen Der Arbeitsspeicher des Computers (RAM) besteht aus einem Feld von Speicherzellen, beginnend bei Adresse
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
Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch
darstellung Arbeiten mit darstellung werden im Computer durch (kleine) Zahlen dargestellt in C können im Datentyp char gespeichert werden, dieser umfasst ein Byte und gilt als Ganzzahltyp darstellung Arbeiten
Programmierung in C. Grundlagen. Stefan Kallerhoff
Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/
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
Die Programmiersprache C
Die Programmiersprache C höhere Programmiersprache (mit einigen Assembler-ähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,
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
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/
Welche Informatik-Kenntnisse bringen Sie mit?
Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt
Einstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
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 Tutorübung
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.
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
Technische Informatik II Rechnerarchitektur
Technische Informatik II Rechnerarchitektur 3.Unterprogramme in MMIX Matthias Dräger E-Mail: www: [email protected] www.matthias-draeger.info/lehre/sose2010ti2/ tinyurl.com/sose2010ti2 Zuletzt bearbeitet:
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.
Übungspaket 23 Mehrdimensionale Arrays
Übungspaket 23 Mehrdimensionale Arrays Übungsziele: Skript: Deklaration und Verwendung mehrdimensionaler Arrays Kapitel: 49 Semester: Wintersemester 2016/17 Betreuer: Kevin, Matthias, Thomas und Ralf Synopsis:
Betriebssysteme Teil 4: Übersetzung von C-Programmen
Betriebssysteme Teil 4: Übersetzung von C-Programmen 18.10.13 1 Übersicht Übersetzungsprozess gcc(i) als Steuerprogramm Assembler Binder Hauptprogramme in C In dieser Einheit werden nur die Grundprinzipien
3.0 8051 Assembler und Hochsprachen
3.0 8051 Assembler und Hochsprachen Eine kurze Übersicht zum Ablauf einer Programmierung eines 8051 Mikrocontrollers. 3.1 Der 8051 Maschinencode Grundsätzlich akzeptiert ein 8051 Mikrocontroller als Befehle
Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks)
Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks) Übungsziele: Skript: 1. Definieren einer dynamischen Datenstruktur 2. Dynamische Speicher Speicherallokation 3. Implementierung eines
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
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
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
2Binden 3. und Bibliotheken
3 Vom C-Programm zum laufenden Prozess 3.1 Übersetzen - Objektmodule 1Übersetzen 3. - Objektmodule (2) Teil III 3Vom C-Programm zum laufenden Prozess 2. Schritt: Compilieren übersetzt C-Code in Assembler
Übungen für die Einführung in die Assemblerprogrammierung mit dem Prozessor c515c
Übungen für die Einführung in die Assemblerprogrammierung mit dem Prozessor c515c 1 Transportbefehle 1.1 Verwendung nur Akku und Register (R0, R1,... R7) 1.1.1 Kopieren Sie den Wert aus Register1 nach
Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm
Programmiersprachen Einführung in C Teil 2: Prof. Dr. int main (int argc, char *argv[]) int sum = 0; for (i = 0; i
Fachhochschule Kaiserslautern Fachbereich Angewandte Ingenieurwissenschaften WS2010/11. Zeitpunkt der Prüfung: 18.01.2011 Beginn: 10.
Lehrprozessor: Coldfire MCF-5272 Zeitpunkt der Prüfung: 18.01.2011 Beginn: 10.45 Uhr Raum: Aula Bearbeitungszeit: 180 Minuten Erlaubte Hilfsmittel: Gedrucktes Vorlesungsskript von Prof. Neuschwander mit
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)
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
Hochschule Niederrhein Einführung in die Programmierung Prof. Dr. Nitsche. Bachelor Informatik WS 2015/16 Blatt 3 Beispiellösung.
Zahldarstellung Lernziele: Vertiefen der Kenntnisse über Zahldarstellungen. Aufgabe 1: Werte/Konstanten Ergänzen Sie die Tabelle ganzzahliger Konstanten auf einem 16- Bit- System. Die Konstanten in einer
zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
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
Vorlesung Rechnerarchitektur. Einführung
Vorlesung Rechnerarchitektur Einführung Themen der Vorlesung Die Vorlesung entwickelt an Hand von zwei Beispielen wichtige Prinzipien der Prozessorarchitektur und der Speicherarchitektur: MU0 Arm Speicher
Ü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
Mikroprozessor bzw. CPU (Central Processing. - Steuerwerk (Control Unit) - Rechenwerk bzw. ALU (Arithmetic Logic Unit)
Der Demo-Computer besitzt einen 4Bit-Mikroprozessor. Er kann entsprechend Wörter mit einer Breite von 4 Bits in einem Schritt verarbeiten. Die einzelnen Schritte der Abarbeitung werden durch Lampen visualisiert.
Repetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 14. Okt. 2015 Computeraufbau: nur ein Überblick Genauer: Modul Digitale Systeme (2. Semester) Jetzt: Grundverständnis
Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
Tutorium Rechnerorganisation
Woche 3 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
Algorithmen & Programmierung. Rekursive Funktionen (1)
Algorithmen & Programmierung Rekursive Funktionen (1) Berechnung der Fakultät Fakultät Die Fakultät N! einer nichtnegativen ganzen Zahl N kann folgendermaßen definiert werden: d.h. zur Berechnung werden
Dynamische Speicherverwaltung
Dynamische Speicherverwaltung Tim Dobert 17.05.2013 Inhaltsverzeichnis 1 Allgemeines zur Speichernutzung 2 2 Ziel und Nutzen 2 3 Anwendung in C 2 3.1 malloc............................... 3 3.2 calloc...............................
Praktikum Mikrorechner 3 (Adressierungsarten)
G. Kemnitz Institut für Informatik, Technische Universität Clausthal November 5, 2014 1/15 Praktikum Mikrorechner 3 (Adressierungsarten) G. Kemnitz Institut für Informatik, Technische Universität Clausthal
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
PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl
PROGRAMMIEREN MIT C Allgemeine hinweise Alles was hier beschrieben wird, soll auch ausprobiert werden. Warum C? Weil die coolen Dinge mit C am einfachsten gehen. Das werden wir in den folgenden Übungen
Übungspaket 19 Programmieren eigener Funktionen
Übungspaket 19 Programmieren eigener Funktionen Übungsziele: Skript: 1. Implementierung und Kodierung eigener Funktionen 2. Rekapitulation des Stack-Frames 3. Parameterübergabe mittels Stack und Stack-Frame
Die Programmiersprache C99: Zusammenfassung
Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach
9 Zeiger (Pointer). Dynamischer Speicher
9 Zeiger (Pointer). Dynamischer Speicher Jörn Loviscach Versionsstand: 25. September 2013, 18:07 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html
Technische Informatik 1 - Übung 3 3. & 4. November Philipp Miedl
Technische Informatik 1 - Übung 3 3. & 4. November 2016 Philipp Miedl Philipp Miedl 3. 11. 2016 1 Ziele der Übungen Aufgabe 1 Philipp Miedl 3. 11. 2016 2 Ziele der Übungen Aufgabe 1 Aufbau von Objekt-Dateien
Kap 4. 4 Die Mikroprogrammebene eines Rechners
4 Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten (Befehl holen, Befehl dekodieren, Operanden holen etc.).
Dr. Monika Meiler. Inhalt
Inhalt 11 Dynamische Feldvereinbarung... 11-2 11.1 Dynamische Vereinbarung von Vektoren... 11-3 11.2 Dynamische Vereinbarung von Matrizen... 11-5 11.3 Die Kommandozeile... 11-8 Propädeutikum 11-1/8 11
INFORMATIK Oberstufe. Funktionsweise eines Rechners
INFORMATIK Oberstufe Funktionsweise eines Rechners Lehrplan Inf 12.3 (ca. 17 Std.): Grundlegende Kenntnisse über den Aufbau eines Rechners und seiner prinzipiellen Funktionsweise helfen den Schülern, den
Einführung in die Programmiersprache C
Einführung in die Programmiersprache C Marcel Arndt [email protected] Institut für Numerische Simulation Universität Bonn Der Anfang Ein einfaches Programm, das Hello World! ausgibt: #include
I.1 Die Parrot Assemblersprache
I.1 Die Parrot Assemblersprache Die virtuelle CPU Parrot ermöglicht die Verarbeitung der Parrot Assemblersprache (PASM). Zum Einstieg soll ein erstes Beispiel die Ausführung einer PASM-Datei zeigen. Legen
Einführung in die Programmierung Arrays, Zeiger, Strings. Arvid Terzibaschian
Einführung in die Programmierung Arvid Terzibaschian 1 Arrays 2 Arrays: Motivation Gegeben: monatliche Durchschnittstemperaturen der letzten 5 Jahre Gesucht: Mittelwerte für Jahre, Monate, Jahreszeiten,
Algorithmen und Programmierung II
Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung
11. Rekursion, Komplexität von Algorithmen
11. Rekursion, Komplexität von Algorithmen Teil 2 Java-Beispiele: Power1.java Hanoi.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 23. Nov. 2015 Anwendung der Rekursion Rekursiv
Vorkurs Informatik WiSe 16/17
Java Rekursion Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 11.10.2016 Technische Universität Braunschweig, IPS Überblick Einleitung Beispiele 11.10.2016 Dr. Werner Struckmann / Stephan Mielke,
Teil 1: Prozessorstrukturen
Teil 1: Prozessorstrukturen Inhalt: Mikroprogrammierung Assemblerprogrammierung Motorola 6809: ein einfacher 8-Bit Mikroprozessor Mikrocontroller Koprozessoren CISC- und RISC-Prozessoren Intel Pentium
Elementare Datentypen in C++
Elementare Datentypen in C++ bool signed/unsigned char signed/unsigned short int signed/unsigned int signed/unsigned long int (signed/unsigned long long int) float double long double void enum char Der
M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung
M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales
3AA. Prof. Dr. Wolfgang P. Kowalk. Universität Oldenburg WS 2005/2006
3AA Prof. Dr. Wolfgang P. Kowalk Universität Oldenburg WS 2005/2006 Version vom 24.10.2005 Übersicht Einführung in maschinennahe Programmierung Verständnis für grundlegende Vorgänge im Computer Jedes Programm
Kapitel 1: Einführung
10 Kapitel 1: Einführung 1.1 Was ist eine Programmiersprache? 1.2 Details zu C++ 1.3 Phasen der Programmierung 1.4 Ein erstes Programm: Hello World! 1.5 Addition zweier Zahlen 1.6 Entscheidungen 1.1 Was
Mikrocomputertechnik. Thema: Der Aufbau des XC888-Mikrocontrollers -Teil 1 -
Mikrocomputertechnik Thema: Der Aufbau des XC888-Mikrocontrollers -Teil 1 - Mikroprozessor-Achritekturen Folie 2 Mikroprozessor-Achritekturen Klassifizierung anhand Wortbreite CPU-Architektur und Busleitungen
2017/01/23 15:50 1/5 Bedienung
2017/01/23 15:50 1/5 Bedienung Bedienung (J.Müller, Hilfe zu JTCEMU) Das originale 2K-System Das 2 KByte große Betriebssystem bietet die wichtigsten Funktionen zur Eingabe und Verwaltung von BASIC-Programmen.
S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"
S. d. I.: Programieren in C Folie 4-1 4 Anweisungen 4.1 if-anweisung 1) if (Ausdruck) 2) if (Ausdruck) } else im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then" es wird nur der numerische Wert
Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl
Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt
Neues vom STRIP Forth-Prozessor
Neues vom STRIP Forth-Prozessor Tagung der Forth-Gesellschaft April 2013 in Garmisch-Partenkirchen Willi Stricker 1 STRIP Forth-Prozessor STRIP32 32 Bit-Version Eigenschaften: Die 32-Bit-Version ist nahezu
Einstieg in die Informatik mit Java
1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden
IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken
IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken Im Folgenden finden Sie jeweils die korrekte Antwort zu den im Buch abgedruckten Prüfungsfragen, soweit die Antworten in Textform
Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch
Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch Die wichtigsten Unterlagen/Tools Für das Praktikum Unterlagen/Kenntnisse/Tools wichtig: Datenblatt des AT80USB1287 µc Schaltplan des im Praktikum verwendeten
FH München, FB 03 FA WS 06/07. Ingenieurinformatik. Name Vorname Matrikelnummer Sem.Gr.: Hörsaal Platz
FH München, FB 03 FA WS 06/07 Ingenieurinformatik Name Vorname Matrikelnummer Sem.Gr.: Hörsaal Platz Zulassung geprüft vom Aufgabensteller: Teil I Aufg. 2 Aufg. 3 Aufg. 4 Aufg. 5 Summe Note Aufgabensteller:
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,
C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.
C-Crash-Kurs Eine kurze, keinesfalls erschöpfende Einführung in die Sprache C für Studierende, die eine strukturierte imperative Programmiersprache beherrschen. Die Vorstellung erfolgt am Beispiel von
5.4 Klassen und Objekte
5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen
Dynamischer Speicher
Dynamischer Speicher C-Kurs 2012, 3. Vorlesung Tino Kutschbach [email protected] http://wiki.freitagsrunde.org 13. September 2012 This work is licensed under the Creative Commons Attribution-ShareAlike
Übersicht. Einführung in die Programmierung. main. main. main. main. Speicherverwaltung. Definition nach ANSI C:
Übersicht Einführung in die Programmierung Bachelor of Science die -Funktion Prof. Dr. Rethmann Fachbereich Elektrotechnik und Informatik Hochschule Niederrhein WS 009/0 Einführung in die Programmierung
Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 1
Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 1 SS 2016
Assembler DOS (Beta 1) Copyright 2000 Thomas Peschko. Assembler II - DOS. ASSEMBLER Arbeiten mit Dateien und Daten.
Assembler II - DOS ASSEMBLER Arbeiten mit Dateien und Daten [email protected] 1 Wer nun den Eindruck hat, dass unsere Programme hauptsächlich nur Unterprogramme vor ihren Karren spannen und sich darauf beschränken
Einführung in die C-Programmierung
Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).
6. Bearbeitung von Strings in C Bearbeitung von Strings in C
Bearbeitung von Strings in C 6-1 Definition des String: 6. Bearbeitung von Strings in C Zeichenstrings werden als Felder von Zeichen abgespeichert: char [ ] ; Wie die Daten (Zeichenfolge)
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen 3.3 Mehrdimensionale Arrays W. Tasin, M.Sc. Fakultät 04 [email protected] Allgemeines (1) Ein Feld (Array) kann seinerseits als Komponente wieder ein Array besitzen. Es wird
