Spezielle Techniken und Technologien der Informatik
|
|
- Eduard Schenck
- vor 7 Jahren
- Abrufe
Transkript
1 1 / 32 Spezielle Techniken und Technologien der Informatik Reverse Engineering Robert Baumgartl 23. Mai 2016
2 Reverse Engineering Unter Reverse Engineering versteht man die Analyse von Software mit dem Ziel, ihren inneren Aufbau, ihre Struktur zu erkennen und zu verstehen. Zwei typische Anwendungsfälle sind die Rekonstruktion des Quellcodes von Programmen, die nur als Binärabbild vorliegen, z.b. Schadsoftware die Analyse von Kommunikationsprotokollen proprietärer Software 1 In der Lehrveranstaltung werden wir entsprechende Techniken und Werkzeuge kennenlernen, als Übungsplattform nutzen wir die Intel-IA-32-Architektur unter dem Betriebssystem Linux. Empfehlenswerte Literatur Bruce Dang, Alexandre Gazet und Elias Bachaalany. Practical Reverse Engineering. Wiley, 2014 Eldad Eilam. Reversing: Secrets of Reverse Engineering. Wiley, Beispielsweise ist das der populären Software Samba zugrundeliegende Protokoll SMB/CIFS per Reverse Engineering aufgeklärt worden. 2 / 32
3 3 / 32 Weitere Informationsquellen Intel 64 and IA-32 Architectures Software Developer s Manual (3 Volumes, knapp 4000 S.); frei verfügbar: Einführung in die AT&T-Assembler-Syntax für IA-32 Informationen zum Gnu Debugger gdb
4 Wozu? Sicherheitsbezogene Arbeiten Analyse bösartiger Software (z. B. Kryptotrojaner) Analyse von Applikationen und Betriebssystemen mit dem Ziel, Schwachstellen zu finden Analyse kryptografischer Algorithmen und deren Implementierung (Vortrag 2 von Philippe Oechslin auf dem 26C3) Unterwanderung von DRM Softwareentwicklung Herstellung der Interoperabilität zu proprietärer Software bzw. Protokollen (.doc-format, NTFS-Treiber in Linux, Samba, Hacking der Sony Playstation 3) Entwicklung konkurrierender Software Test der Robustheit und allgemeinen Qualität von Software / 32
5 5 / 32 Rechtliche Aspekte unterschiedliche nationale Gesetzgebung in Dt. grundsätzlich zunächst erlaubt; Ausnahme: Umgehung von Kopierschutzmechanismen aka Cracking (privat legal, gewerblich illegal 95a UrhG) Lizenz verbietet das Reverse Engineering häufig Analyse von protokollen ist grundsätzlich erlaubt USA: DMCA (vgl. Sony vs. Georg Hotz; PS3-Hack)
6 Beschränkung HLL 3 : C, weil leicht zu disassemblieren, da maschinennah, BS und die meisten Applikationen (und Schadcode) in C implementiert wurden und werden, alle Teilnehmer C könnten müssten. ISA 4 : IA-32 = Intel-Prozessoren im 32-Bit-Betrieb, weil in den Laboren diese Prozessoren verbaut sind, Befehlssatz gut zu verstehen; viel Literatur. (IMHO) leichter zu verstehen, als 64-Bit-Assembler BS: Linux, weil offene und freie Werkzeuge existieren, ich offene und freie Software bevorzuge. 3 High Level Language Höhere Programmiersprache 4 Instruction Set Architecture - der Befehlssatz und die Architektur des Prozessors 6 / 32
7 Werkzeuge 7 / Disassembler überführt (maschinenlesbares) Binary in (menschenlesbaren) Assemblercode objdump -d gdb 2. Decompiler überführt (maschinenlesbares) Binary in Hochsprachencode (bzw. versucht dies) z. B. Hex-Rays IDAPro (kommerziell) 3. Debugger zur schrittweisen Ausführung des zu analysierenden Codes, Speicherinspektion usw. 4. keine vergleichbaren Open-Source-Tools
8 Intel-Syntax vs. AT&T-Syntax 8 / 32
9 9 / 32 IA-32 CPU Wichtigste Register 2 Chapter 1 x86 and x64 by having user-mode applications run in ring 3, and the kernel in ring 0. The ring level is encoded in the CS register and sometimes referred to as the current privilege level (CPL) in official documentation. This chapter discusses the x86/ia-32 architecture as defined in the Intel 64 8 Universalregister and IA-32 Architectures ásoftware 32 Bit: Developer s EAX, Manual, EBX, Volumes ECX, 1 3 EDX, ( ESI, EDI,.com/content/www/us/en/processors/architectures-software-developer- EBP, ESP manuals.html). Befehlszähler EIP Register Set and Data Types Flagregister EFLAGS When operating in protected mode, the x86 architecture has eight 32-bit general- Datentypen: purpose registers 8 Bit (GPRs): (Byte), EAX, EBX, 16 ECX, Bit EDX, (Word), EDI, ESI, 32 EBP, Bit and (Double ESP. Some of Word), 64 them can be further divided into 8- and 16-bit registers. The instruction pointer Bit (Quad Word, nur EDX:EAX) is stored in the EIP register. The register set is illustrated in Figure 1-1. Table 1-1 describes some of these GPRs and how they are used EAX EBP AX BP AH AL ESP ESI SP SI EIP EDI EFLAGS Figure 1-1 DI
10 IA-32 CPU Registerbedeutungen Register EAX ECX ESP EBP ESI EDI Semantik Resultatregister Zählerregister in Schleifen Stack Pointer (TOS) zeigt auf Beginn des aktuellen Stackframes Quelladresse bei Blockoperationen Zieladresse bei Blockoperationen Viele weitere Register existieren, haben aber Spezialbedeutung Gleitkommaarithmetik, Control Registers CR, Model-Specific-Registers (MSR), MMX & SSE Co.) 10 / 32
11 11 / 32 IA-32 CPU EFLAGS 18 Chapter 1 x86 and x System flags. Flags There can be up to OF 16 conditional S codes, Z but the most CF common ones are described in Table 1-3. Carry: 1, wenn Übertrag (unsigned) Zero: 1, wenn Resultat=0 Sign: =MSB des Resultats Table 1-3: Common Conditional Codes Overflow: 1, wenn Resultat die max. Länge übersteigt (signed) CONDITIONAL CODE B/NAE ENGLISH DESCRIPTION Below/Neither Above nor Equal. Used for unsigned operations. MACHINE DESCRIPTION CF=1 NB/AE Not Below/Above or Equal. Used for CF=0 unsigned operations. E/Z Equal/Zero ZF=1 NE/NZ Not Equal/Not Zero ZF=0 L GE/NL G/NLE Less than/neither Greater nor Equal. Used for signed operations. Greater or Equal/Not Less than. Used for signed operations. Greater/Not Less nor Equal. Used for signed operations. (SF ^ OF) = 1 (SF ^ OF) = 0 ((SF ^ OF) ZF) = 0
12 12 / 32 Übersicht Kopieren von Daten Speicher Register und Register Register: mov arithmetische Operationen: mul, add, sub, inc, dec logische Operationen: or, and, shr, shl, xor Stackoperationen und Funktionsaufrufe: push, pop, call, ret Sprünge/bedingte Sprünge mit Vergleichen: jmp, jcc mit cmp und test
13 Der Stack 13 / 32 Bereich des Speichers wächst in Richtung kleinerer Adressen LIFO- (Last In First Out) Prinzip für Daten mit begrenzter Gültigkeitsdauer Parameter einer Funktion Rückkehradresse beim Sprung in eine Funktion (CALL) lokale Variablen einer Funktion temporäre Kopien von Registerinhalten (Save/Restore) nutzerdefinierte DS alloca() organisiert in Frames, die jeweils durch die Register EBP und ESP begrenzt werden ESP zeigt stets auf oberstes Element des Stacks (Top of Stack, TOS) Instruktionen: pop und push
14 Der Stack Aufbau eines Stackframes hohe Adressen EBP ESP niedrige Adressen Funktionsparameter <Ret> SFP lokale Variablen Top of Stack (TOS) Stack- Frame 14 / 32
15 15 / 32 push und pop push pop inkrementiert zuerst ESP (gewöhnlich +=4, da 32-Bit-Worte abgelegt werden) legt danach den Operanden auf die Adresse, auf die ESP verweist schreibt zuerst das Datum, auf das ESP verweist, in den übergebenen Operanden dekrementiert danach den Stackpointer ESP Operand ist in beiden Fällen ein Register oder eine Speicherstelle
16 16 / 32 push und pop Ablauf bei einer push-instruktion EBP ESP Hi Lo Funktionsparameter <Ret> SFP lokale Variablen 0xaffedead Register EAX enthält Wert 0x23. ausgeführte Instruktion: pushl %eax EBP ESP Funktionsparameter <Ret> SFP lokale Variablen 0xaffedead 0x a) vor push-operation b) nach push-operation
17 Calling Conventions aka Wie werden Parameter und Resultate beim Funktionsaufruf kommuniziert? In welcher Reihenfolge werden Parameter übergeben? Wie werden Parameter übergeben (in Register oder über den Stack)? Wie wird das Funktionsergebnis zurückgeliefert? 16 Chapter 1 x86 and x64 Welche Registerwerte dürfen durch die Funktion nicht zerstört werden (müssen ggf. innerhalb der Funktion gesichert und restauriert werden)? Table 1-2: Calling Conventions Parameters CDECL STDCALL FASTCALL Pushed on the stack from rightto-left. Caller must clean up the stack after the call. Same as CDECL except that the callee must clean the stack. First two parameters are passed in ECX and EDX. The rest are on the stack. Return value Stored in EAX. Stored in EAX. Stored in EAX. Non-volatile registers EBP, ESP, EBX, ESI, EDI. EBP, ESP, EBX, ESI, EDI. EBP, ESP, EBX, ESI, EDI. We now return to the code snippet to discuss how the function addme is Abbildung: Die wichtigsten Calling Conventions der IA-32 5 invoked. In line 1 and 3, the two parameters are pushed on the stack; ECX and EAX are the first and second parameter, respectively. Line 4 invokes the addme function with the CALL instruction. This immediately pushes the return address, 0x4129FE, on the stack and begins execution at 0x4113A0. Figure 1-4 illustrates 5 Bruce Dang, Alexandre Gazet und Elias Bachaalany. Practical Reverse Engineering. Wiley, 2014, S / 32
18 18 / 32 Elementare Konstrukte in C if-else-statement Schleifen Funktionsaufrufe Systemrufe (Linux) switch-case-statement ( Praktikum)
19 if-else-statement 19 / 32 Listing 1: ifelse.c #include <stdio.h> #include <stdlib.h> int main(int argc, char* argv[]) { int a, b=1; if (b==42) { a=23; } else { a=42; } exit(0); }
20 if-else-statement 20 / 32 Listing 2: Disassemblat zu ifelse.c (gdb) disas main Dump of assembler code for function main: 0x080483fb <+0>: lea 0x4(%esp),%ecx 0x080483ff <+4>: and $0xfffffff0,%esp 0x <+7>: pushl -0x4(%ecx) 0x <+10>: push %ebp 0x <+11>: mov %esp,%ebp 0x <+13>: push %ecx 0x <+14>: sub $0x14,%esp 0x c <+17>: movl $0x1,-0xc(%ebp) 0x <+24>: cmpl $0x2a,-0xc(%ebp) 0x <+28>: jne 0x <main+39> 0x <+30>: movl $0x17,-0x10(%ebp) 0x <+37>: jmp 0x <main+46> 0x <+39>: movl $0x2a,-0x10(%ebp) 0x <+46>: sub $0xc,%esp 0x c <+49>: push $0x0 0x e <+51>: call 0x80482e0 <exit@plt> End of assembler dump.
21 21 / 32 if-else-konstrukt PAP für den Assemblerquelltext Start b=1 no b = 42? yes a=42 a=23 exit(0) Stop
22 22 / 32 Schleifen for-konstrukt Listing 3: loop1.c #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int c; for(c=0; c<23; c++) { printf("%d\n", c); } exit(0); }
23 23 / 32 Schleifen for-konstrukt Listing 4: Disassemblat zu loop1.c (gdb) disas main Dump of assembler code for function main: 0x b <+0>: lea 0x4(%esp),%ecx 0x f <+4>: and $0xfffffff0,%esp 0x <+7>: pushl -0x4(%ecx) 0x <+10>: push %ebp 0x <+11>: mov %esp,%ebp 0x <+13>: push %ecx 0x <+14>: sub $0x14,%esp 0x c <+17>: movl $0x0,-0xc(%ebp) 0x <+24>: jmp 0x804845c <main+49> 0x <+26>: sub $0x8,%esp 0x <+29>: pushl -0xc(%ebp) 0x b <+32>: push $0x x <+37>: call 0x80482f0 <printf@plt> 0x <+42>: add $0x10,%esp 0x <+45>: addl $0x1,-0xc(%ebp) 0x c <+49>: cmpl $0x16,-0xc(%ebp) 0x <+53>: jle 0x <main+26> 0x <+55>: sub $0xc,%esp 0x <+58>: push $0x0 0x <+60>: call 0x <exit@plt>
24 24 / 32 for-konstrukt PAP für den Assemblerquelltext Start c=0 c 22? no yes printf("%d\n",c); exit(0) c++ Stop
25 25 / 32 Schleifen Nutzung von goto Listing 5: loop2.c #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int c; c = 0; label: printf("%d\n", c); c++; if (c<23) goto label; exit(0); } es resultiert gleiches Assemblat
26 26 / 32 Funktionsaufrufe Beispiel Listing 6: mul.c #include <stdio.h> #include <stdlib.h> int mul(int x, int y) { int res; res = x * y; return res; } int main(int argc, char* argv[]) { int a=23, b=42, erg; erg = mul(a, b); printf("ergebnis: %d\n", erg); exit(0); }
27 Funktionsaufrufe Listing 7: Disassemblat zu mul.c (gdb) disas main... 0x b <+11>: mov %esp,%ebp ; neuer Stackframe 0x d <+13>: push %ecx 0x e <+14>: sub $0x14,%esp ; Platz fuer lokale Variablen 0x <+17>: movl $0x17,-0xc(%ebp) ; a=23 0x <+24>: movl $0x2a,-0x10(%ebp) ; b=42 0x f <+31>: pushl -0x10(%ebp) ; push b 0x <+34>: pushl -0xc(%ebp) ; push a 0x <+37>: call 0x804842b <mul> 0x a <+42>: add $0x8,%esp ; Parameter vom Stack 0x d <+45>: mov %eax,-0x14(%ebp) ; erg=mul(a,b); 0x <+48>: sub $0x8,%esp 0x <+51>: pushl -0x14(%ebp) ; push erg 0x <+54>: push $0x ; push &"Ergebnis: %d\n" 0x b <+59>: call 0x80482f0 <printf@plt> 0x <+64>: add $0x10,%esp ; Parameter vom Stack 0x <+67>: sub $0xc,%esp 0x <+70>: push $0x0 ; push 0 0x <+72>: call 0x <exit@plt> ; exit(0) (gdb) disas mul 0x b <+0>: push %ebp ; akt. Stackframe sichern 0x c <+1>: mov %esp,%ebp ; neuer Stackframe 0x e <+3>: sub $0x10,%esp ; Platz fuer lokale Variablen 0x <+6>: mov 0x8(%ebp),%eax ; eax:=a (Parameter) 0x <+9>: imul 0xc(%ebp),%eax ; eax:=a*b 0x <+13>: mov %eax,-0x4(%ebp) ; result=a*b 0x b <+16>: mov -0x4(%ebp),%eax ; Resultat in eax 0x e <+19>: leave ; esp:=ebp; pop ebp 0x f <+20>: ret ; pop eip 27 / 32
28 28 / 32 Funktionsaufrufe Parameter- und Ergebniskommunikation Funktionsparameter per Stack übergeben (Parameterliste wird von rechts nach links auf den Stack gepusht ) Parameter-Bereich wird auf Vielfaches von 16 Byte aufgefüllt Resultat einer Funktion in Register EAX geliefert rufende Instanz räumt Parameter nach Rückkehr vom Stack (Caller Cleanup) CDECL-Konvention genutzt
29 29 / 32 Funktionsaufrufe Struktur Struktur einer Funktion 1. Prolog: aktuellen Framepointer auf Stack sichern (push %ebp) neuen Framepointer setzen (mov %esp,%ebp) Platz für lokale Variablen schaffen (sub imm16,%esp) 2. Funktionskörper 3. Epilog aktuellen Frame zerstören (mov %ebp,%esp) gesicherten Framepointer restaurieren (pop %ebp) beides zusammen ist die leave-instruktion Fortsetzung an auf Funktionsaufruf folgender Adresse (pop eip aka ret)
30 30 / 32 Systemrufe Wiederholung BS1: Systemrufe sind Dienste, die das Betriebssystem mitbringt werden im Adressraum des Kernels erbracht (Umschaltung Usermode Kernelmode nötig) können daher nicht durch Call-Return-Mechanismus erbracht werden stattdessen: Nutzung eines Interrupts oder sysenterund sysleave-instruktionen Beispiele: fork(), open(), read(), socket() usw.
31 31 / 32 Aufrufkonvention Systemruf Linux (32Bit) Systemrufnummer in eax Argumente in ebx, ecx, edx, esi, edi, ebp (in dieser Reihenfolge) Systemeintritt durch int 0x80 (Systemdienst wird im Kernelmode ausgeführt) Resultatwert in eax Systemaustritt mittels iret Systemrufnummern:
32 32 / 32 Systemrufe Beispiel Listing 8: helloasm.text.global _start _start: movl $0, %eax xorl %ebx, %ebx xorl %edx, %edx jmp string /* push string addr */ code: pop %ecx /* ecx <-- string addr */ movb $01, %bl /* filedesc, stdout */ movb $15, %dl /* string lgth */ movb $04, %al /* write(stdout, addr, lgth) */ int $0x80 decb %bl movb $01,%al /* exit(0) */ int $0x80 string: call code.ascii "Hello, world!\x0a\x00"
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
MehrU23 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
MehrRechnernetze 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
Mehrx86 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
MehrAssembler (NASM) Crashkurs von Sönke Schmidt
Sönke Schmidt (NASM) Crashkurs von Sönke Schmidt Berlin, 4.11.2015 Meine Webseite: http://www.soenke-berlin.de NASM Was ist das? nach Wikipedia: Ein ist ein Programmierwerkzeug, das ein in maschinennaher
MehrAufgabe 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
Mehr6. 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
MehrHinweise 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
MehrU23 - 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
MehrAssembler 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
MehrEinfü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
MehrKarlsruher 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
MehrEinfü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
Mehr2. 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Übungen zur Vorlesung Systemsicherheit
Übungen zur Vorlesung Systemsicherheit Address Space Layout Randomization Tilo Müller, Reinhard Tartler, Michael Gernoth Lehrstuhl Informatik 1 + 4 19. Januar 2011 c (Lehrstuhl Informatik 1 + 4) Übungen
MehrGCC 3.x Stack Layout. Auswirkungen auf Stack-basierte Exploit-Techniken. Tobias Klein, 2003 tk@trapkit.de Version 1.0
1 GCC 3.x Stack Layout Auswirkungen auf Stack-basierte Exploit-Techniken Tobias Klein, 2003 tk@trapkit.de Version 1.0 2 Abstract Eine spezielle Eigenschaft des GNU C Compilers (GCC) der Version 3.x wirkt
MehrGrundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes
Grundlagen der Informatik III Wintersemester 2010/2011 5. Vorlesung Dr.-Ing. Wolfgang Heenes int main() { printf("hello, world!"); return 0; } msg: main:.data.asciiz "Hello, world!".text.globl main la
MehrAlgorithmen 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.
MehrAssembler - 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Ü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
MehrAssembler - 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
MehrEinleitung Funktionsaufrufe Berechnungen Verzweigungen Systemaufrufe Speicherzugriffe Fazit Quellen. Laufzeitkosten in C.
Laufzeitkosten in C Tobias Fechner Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg 19-12-2013 Tobias Fechner
MehrEinfü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
MehrAssembler - 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Ü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"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
MehrAbstrakte C-Maschine und Stack
Abstrakte C-Maschine und Stack Julian Tobergte Proseminar C- Grundlagen und Konzepte, 2013 2013-06-21 1 / 25 Gliederung 1 Abstrakte Maschine 2 Stack 3 in C 4 Optional 5 Zusammenfassung 6 Quellen 2 / 25
MehrGrundlagen 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Übungen zu Softwaresysteme I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2004 K-Uebung9.fm
K 9. Übung K 9. Übung K-1 Überblick Besprechung 7. Aufgabe (jbuffer) Unix, C und Sicherheit K.1 Mögliche Programmsequenz für eine Passwortabfrage in einem Server- Programm: int main (int argc, char *argv[])
MehrAssembler 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
MehrBuffer Overflow. Denis Graf, Tim Krämer, Konstantin Schlese. Universität Hamburg Fachbereich Informatik. 6. Januar 2013
Buffer Overflow Denis Graf, Tim Krämer, Konstantin Schlese Universität Hamburg Fachbereich Informatik 6. Januar 2013 Agenda 1. Einführung Allgemeines über Buffer Overflows Historische Angriffe Definition
MehrBetriebssysteme Teil 3: Laufzeitsystem für Programme
Betriebssysteme Teil 3: Laufzeitsystem für Programme 23.10.15 1 Literatur [3-1] Stack: http://fbim.fh-regensburg.de/~hab39652/pg1/skriptum/ ausdruecke/maschinenmodell.html [3-2] https://de.wikipedia.org/wiki/dynamischer_speicher
MehrDatenstrukturen, 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
MehrTIn 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
MehrBetriebssystembau. 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
MehrGrundlagen 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
MehrGrundlagen der Informatik III Wintersemester 2010/2011
Grundlagen der Informatik III Wintersemester 2010/2011 Wolfgang Heenes, Patrik Schmittat 4. Aufgabenblatt mit Lösungsvorschlag 22.11.2010 Hinweis: Der Schnelltest und die Aufgaben sollen in den Übungsgruppen
MehrUse of the LPM (Load Program Memory)
Use of the LPM (Load Program Memory) Use of the LPM (Load Program Memory) Instruction with the AVR Assembler Load Constants from Program Memory Use of Lookup Tables The LPM instruction is included in the
Mehr6. Grundlagen der Programmierung
Computeranwendung in der Chemie Informatik für Chemiker(innen) 6. Grundlagen der Programmierung Jens Döbler 2003 "Computer in der Chemie", WS 2003-04, Humboldt-Universität VL6 Folie 1 Dr. Jens Döbler Grundlagen
Mehr0 C (Carry) Überlauf des 8ten Bits. 1 DC (Digit Carry) Überlauf des 4ten Bits. Mnemonic Parameter Beschreibung Status-Flags.
3. Assembler-Programmierung Der PIC 16F84A Microcontroller kennt 35 verschiedene Befehle. Für eine ausführliche Beschreibung aller Befehle siehe PIC16F84A-Datenblatt Kapitel 7.1. 3.1 Wichtige Flaggen im
MehrMaschinencode Dateiformat und Stackframes
Maschinencode Dateiformat und Stackframes Proseminar C-Programmierung - Grundlagen und Konzepte Julian M. Kunkel julian.martin.kunkel@informatik.uni-hamburg.de Wissenschaftliches Rechnen Fachbereich Informatik
Mehr1 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.
MehrProgrammier-Befehle - Woche 10
Funktionen Rekursion Selbstaufruf einer Funktion Jeder rekursive Funktionsaufruf hat seine eigenen, unabhängigen Variablen und Argumente. Dies kann man sich sehr gut anhand des in der Vorlesung gezeigten
MehrGrundlagen 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
MehrCOMPILER & 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
MehrB1 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
MehrTechnische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015
Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Ziele der Übung Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Codeanalyse
MehrHinweise 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
MehrInhaltsverzeichnis. 1 Einleitung 2
Inhaltsverzeichnis 1 Einleitung 2 2 Installation 3 2.1 Windows............................................. 3 2.1.1 Yasm per Konsole nutzen............................... 3 2.1.2 Integration mit Visual
MehrProgrammiersprachen 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
MehrUnterprogramme. 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
MehrDas Paging: Stellen wir uns eine Zahlenmenge vor mit 12 Zahlen und zwar von 0 bis 11.
Das Paging: Stellen wir uns eine Zahlenmenge vor mit 12 Zahlen und zwar von 0 bis 11. {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11} Stellen wir uns nun vor, die 12 Zahlen sind nicht in der richtigen Reihenfolge,
MehrFAKULTÄ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
MehrC-Kurs 2010 Pointer. 16. September v2.7.3
C-Kurs 2010 Pointer Sebastian@Pipping.org 16. September 2010 v2.7.3 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License. C-Kurs Mi Konzepte, Syntax,... printf, scanf Next
MehrZusammenfassung 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
MehrÜbung 3: VHDL Darstellungen (Blockdiagramme)
Übung 3: VHDL Darstellungen (Blockdiagramme) Aufgabe 1 Multiplexer in VHDL. (a) Analysieren Sie den VHDL Code und zeichnen Sie den entsprechenden Schaltplan (mit Multiplexer). (b) Beschreiben Sie zwei
MehrMalware-Analyse und Reverse Engineering. 9: Polymorphe Viren und selbstmodifizierender Code Prof. Dr. Michael Engel
Malware-Analyse und Reverse Engineering 9: Polymorphe Viren und 18.5.2017 Prof. Dr. Michael Engel Überblick Themen: Erschweren des Disassemblierens von Code Ver- und Entschlüsselung von Code Selbstmodifizierender
MehrBuffer Overflow 1c) Angriffsstring: TTTTTTTTTTTTTTTT (16x) Beachte: Padding GCC-Compiler Zusatz: gcc O2 verhindert hier den Angriff (Code Optimierung)
Buffer Overflow 1c) 1 char passok='f'; 2 char password[8]; 3 printf( Passwort: ); 4 gets(password); 5 if(!strcmp(password, daspassw )){passok = 'T';} 6 if(passok=='t'){printf( %s, Willkommen! );} 7 else
MehrJava Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation
Java Tools JDK http://www.oracle.com/technetwork/java/javase/ Downloads IDEs Java SE 8 Java SE 8 Documentation Eclipse http://www.eclipse.org IntelliJ http://www.jetbrains.com/idea/ NetBeans https://netbeans.org/
MehrKap.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
MehrAssembler-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
MehrBetriebssysteme Übung 2. Tutorium System Calls & Multiprogramming
Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming Task Wiederholung 1 System SysCalls (1) Wozu? Sicherheit Stabilität Erfordert verschiedene modes of execution: user mode privileged mode
MehrHardware-Programmierung mit Linux/NASM
Hardware-Programmierung mit Linux/NASM Daniel Grün 12. Februar 2007 Zusammenfassung Direkte Ansteuerung der Parallel-Schnittstelle mittels NASM unter Linux nur unter Einsatz von reinen Assembler-Routinen
MehrProblem: Keine Integers in JavaCard. ToDo: Rechnen mit Bytes und Shorts
Kapitel 6: Arithmetik in JavaCard Problem: Keine Integers in JavaCard ToDo: Rechnen mit Bytes und Shorts Java SmartCards, Kap. 6 (1/20) Hex-Notation 1 Byte = 8 Bit, b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 0101
MehrJust-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
MehrCompilerbau Instruktionsauswahl 168. Instruktionsauswahl
Instruktionsauswahl Compilerbau Instruktionsauswahl 168 Instruktionsauswahl Ziel: Übersetzung der IR-Bäume in Assemblerinstruktionen mit (beliebig vielen) abstrakten Registern. Die x86 (Pentium) Architektur
MehrFAKULTÄ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
MehrFunktionaler Aufbau eines Computers Untersuchung von Delphi-Compilaten
Funktionaler Aufbau eines Computers Im Folgenden soll der Weg untersucht werden, wie ein Programm, das von einem Compiler/Interpreter in Maschinencode übertragen wurde, schließlich vom Prozessor abgearbeitet
MehrInstruktionssatz-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
Mehri386 Interrupt-Deskriptortabelle (IDT)
Agenda: IRQ-Behandlung in OO-Stubs Interrupts und Traps bei x86 Die Interrupt-Deskriptor-Tabelle (IDT) Aufbau der IDT Traps und Hardware IRQs Der Programmierbare Interruptcontroller PIC 8295A Aufbau Verwendung
MehrInstitut 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.
Mehr1. Grundlagen der Informatik Organisation und Architektur von Rechnern
1. Grundlagen der Informatik Organisation und Architektur von Rechnern Inhalt Grundlagen digitaler Systeme Boolesche Algebra / Aussagenlogik Organisation und Architektur von Rechnern Algorithmen, Darstellung
MehrBetriebssysteme KU - Einführungstutorium
Betriebssysteme KU - Einführungstutorium SWEB-Tutoren irc://irc.at.euirc.net/bs Teamwork Arbeitsaufteilung? Zeiteinteilung? Codeeinteilung? Kommunikation! Kommunikation Kommunikation mit dem Team Gruppentreffen
Mehr7 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Übung zu Betriebssystembau (Ü BS)
Übung zu Betriebssystembau (Ü BS) Interruptbehandlung in OOStuBS Wanja Hofer Lehrstuhl für Informatik IV WS 07/08 1 Agenda: IRQ-Behandlung in OOStuBS Interrupts und Traps beim x86 Die Interrupt-Deskriptor-Tabelle
MehrSoftware Security. Andreas Kostecka Alexander Miller Patrick Rappensberger
Software Security Andreas Kostecka Alexander Miller Patrick Rappensberger Inhalt Buffer Overrruns Integer Overflows Heap-Overflow Attack Format String Attack SQL Injection Buffer Overrruns Was ist 'Buffer
MehrJust-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
MehrGrundlagen der Informatik III Wintersemester 2010/2011
Grundlagen der Informatik III Wintersemester 2010/2011 Wolfgang Heenes, Patrik Schmittat 10. Aufgabenblatt mit Lösungsvorschlag 24.01.2011 Hinweis: Der Schnelltest und die Aufgaben sollen in den Übungsgruppen
MehrMoritz Höppner. m-hoeppner@gmx.net
Linux-Assembler Tutorial Moritz Höppner m-hoeppner@gmx.net 1 Inhalt 1. Grundlagen... 3 1.1 Einführung... 3 1.2 Zahlensysteme... 3 1.3 Register... 5 1.4 Die benötigten Tools... 6 2. Das erste Programm...
MehrProgrammiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften
Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder
MehrRechnern netze und Organisatio on
Rechnernetze und Organisation Konstruktionsübung SS2009 Vorbesprechung 1 Übersicht Einleitung Motivation Administratives i ti Generelles zur KU Assignment A1 Vorbereitung Johannes Wolkerstorfer Vorstellung
Mehr3 Assembler- und Maschinenbefehle, Programmablauf-Steuerung
3 Assembler- und Maschinenbefehle, Programmablauf-Steuerung In der Vorlesung wurde folgendes Beispiel-Programm in der höheren Programmiersprache C vorgestellt: int x=0; int i= 0; for (i=1;i
MehrMikroprozessoren 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)
MehrLegen 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
MehrFallbeispiel Unix. Betriebssysteme. Hermann Härtig TU Dresden
Fallbeispiel Unix Betriebssysteme Hermann Härtig TU Dresden Wegweiser Geschichte und Struktur von Unix Vom Programm zum Prozess Unix-Grundkonzepte Dateien Prozesse Prozess-Kommunikation Signale Pipes Sockets
MehrÜ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
MehrAssembler 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
MehrMikrocomputertechnik
Assembler Aufgaben: Übersetzt mnemotechnische Abkürzungen (z.b. move, add...) in die Maschinenbefehle des Prozessors Ermöglicht die Vergabe von Namen für Speicheradressen (Label) Berechnet relative Adressedistanz
MehrGefahrenreduzierung nach stackbasierten BufferOverflows
Gefahrenreduzierung nach stackbasierten s Lars Knösel 22. Dezember 2005 Wichtiger Hinweis Dieses Dokument und die Live-nstration liefern Informationen, mit deren Hilfe es möglich wird, stackbasierte Pufferüberläufe
MehrSicheres C Programmieren in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester 2010-2011
Sicheres C in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester 2010-2011 Dipl. Ing. (FH) Ebrecht Roland, Infineon Technologies AG M.Eng (Electronic Systems) Güller Markus, Infineon Technologies
MehrWas kann ein Assembler?
Assemblerprogrammierung Assembler und Maschinensprache Befehle und Pseudo-Befehle C-Konstrukte in Assembler übersetzt Aufrufkonventionen (ABI) Der netwide assembler nasm Binärformate Was ist ein Assembler?
Mehr8. Intel IA-32 Prozessoren: Befehlsübersicht
8. Intel IA-32 Prozessoren: Befehlsübersicht Ganzzahlarithmetik Kontrollstrukturen Bitmanipulation Schieben und Rotieren 20.10.2007 Meisel 1 8.1 Ganzzahl-Arithmetik 8.1.1 Übersicht add adc sub sbb imul
MehrEinführung in die Programmierung mit C++
Seite 1 Einführung in die Programmierung mit C Teil IV - Weiterführende Themen 16. SIMD Programmierung Was bedeutet SIMD Seite SIMD Single-Instruction, Multiple-Data, also eine Instruktion, mehrere Daten
MehrEmbedded-Linux-Seminare. Linux als Betriebssystem
Embedded-Linux-Seminare Linux als Betriebssystem http://www.embedded-linux-seminare.de Diplom-Physiker Peter Börner Spandauer Weg 4 37085 Göttingen Tel.: 0551-7703465 Mail: info@embedded-linux-seminare.de
MehrTI-Ü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,
Mehr1.7 Assembler Programmierung
1.7 Assembler Programmierung Die nach außen sichtbare Programmierschnittstelle eines Prozessors ist der Befehlscode. Dies ist eine binäre Dateninformation, die vom Prozessor Byte für Byte abgearbeitet
MehrRechnerorganisation. Überblick über den Teil 13
Rechnerorganisation Teil 3 9. Juni 2 KC Posch Überblick über den Teil 3 Arbiter: Wie können sich 2 aktive Partner vertragen? Direkter Speicherzugriff: Ein Ko Prozessor zum Daten Schaufeln Die Verbesserung
MehrBetriebssysteme 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
MehrVorlesung Betriebssysteme I
1 / 19 Vorlesung Betriebssysteme I Thema 4: Grundlegende Begriffe, Teil 2 Robert Baumgartl 22. November 2016 2 / 19 Begriffe: Schnittstelle beschreibt den statischen Aspekt einer Kommunikationsbeziehung
Mehr