Rechnernetze und -Organisation. Teil B (30. März 2011) 2011 Michael Hutter Karl C. Posch
|
|
- Beate Beckenbauer
- vor 6 Jahren
- Abrufe
Transkript
1 Rechnernetz R Teil B (30. März 2011) 2011 Michael Hutter Karl C. Posch 1 Zeitplan für Teil B Mittwoch 23. März 2011 Mittwoch 30. März 2011 Mittwoch 6. April 2011 (Mittwoch 13. April 2011: Beginn Teil C) Freitag 15. April 2011: Abgabe Assignment 2 2 1
2 Two different assemblers GNU Assembler as : Uses AT&T syntax mov %ax, %bx thi we use this one NASM Assembler: Uses Intel syntax mov bx, ax Both translate t to machine code 0x6689C3 Meaning: Copy contents from AX to BX 3 Architectural elements of a CPU CPUs have an instruction set CPUs have a register set (Intel) CPUs can operate in various modes: We use: protected flat 32-bit mode AMD64 / Intel 64 Check out:
3 Flat 32-bit memory model Byte-addressable linear address space for Code Data x x+1 x+2 x+3 Stacks Adresses from 0 to x: E5 A x+4: x+8: x+12: x+16: x+20: 8B D D0 A D C3 5 8 general-purpose registers + 2 special registers EAX EBX ECX EDX accumulator, results data pointer to data in the data segment counter register data register, expands EAX in some cases, I/O pointer ESI EDI EBP ESP EIP EFLAGS source index register destination index register base pointer register stack pointer register instruction pointer, ( program counter, PC) flags (is being used implicitly) 6 3
4 32, 16, and 8 bits 32 bits EAX long oder double AX word AH Im GDB: w bedeutet auch long : AL byte x/3w examine 3 locations with 32 bits each 7 Registers and memory Registers live inside the CPU: Quick access There are always only a few registers Memory is outside the CPU: Slower access But a lot more If speed is important: Prioritise the use of registers over the use of memory 8 4
5 Addressing modes movl $9, %ebx Register mode: Copy the value 9 to register EBX movl $9, (%ebx) Indirect addressing mode: Copy the value 9 to memory location, whose address is stored in EBX movl $9, x Direct addressing mode: Copy the value 9 to memory location x Source operand is always specified in immediate mode here. 9 More addressing modes decl x(%ebx) # indexed mode: # decrement content of memory # location with address (x + EBX) decl 8(%ebx) # based mode (same as indexed): # decrement content of memory # location with address (8 + EBX) decl (%eax,%ebx,4) # scale factor: # operand address is # EAX + EBX*4 decl x(%eax,%ebx,4) # based scale factor: # operand address is # x + EAX + EBX*4 10 5
6 move kopiert von source nach dest movl source, dest dest source 11 long, word, byte movl source, dest dest source long, word, byte %eax, %ax, %ah, %al (double) 12 6
7 movl source, dest exchange dest source long, word, byte %eax, %ax, %ah, %al xchgl op1, op2 exchange 13 movl source, dest exchange dest source long, word, byte %eax, %ax, %ah, %al xchgl op1, op2 exchange Beispiele 14 7
8 Arithmetik: Addition und Subtraktion movl source, dest dest source addl source, dest dest source + dest subl source, dest dest source dest 15 movl source, dest ++, --, *, / dest source addl source, dest dest source + dest subl source, dest dest source dest (inc, dec, mul, div, ) Beispiele 16 8
9 movl source, dest Logik: AND dest source addl source, dest dest source + dest subl source, dest dest source dest andl source, dest dest source & dest 17 OR, XOR, NOT, NEG, SHL, SHR movl source, dest dest source addl source, dest dest source + dest subl source, dest dest source dest andl source, dest dest source & dest (or, xor, not, neg, shl, shr) 18 9
10 Programmflusskontrolle jmp label jump zuerst: testl op1, op1 EFLAGS wird beeinflusst cmpl op1, op2 Vergleiche (EFLAGS danach: je label jump if equal jne label jump if not equal jz label jump if zero jnz label jump if not zero jge label jump if greater or equal 19 Call und Return call label ESP ESP 4; mem[esp] EIP; EIP label; ret EIP mem[esp] ESP ESP
11 Push und Pop pushl source ESP ESP 4; mem[esp] source (push und pushl sind identisch) (pushb gibt es nicht) popl dest dest mem[esp] ESP ESP Load Effective Address leal source, dest dest Adresse von source Beispiele: leal label, %eax EAX label leal 4(%esp), %ecx ECX ESP+4 leal (%eax, %ebx), %ecx ECX EAX + EBX 22 11
12 Beispiele mit LEA 23 MOVZ: Move Zero Extended movzbw source, dest movzbl source, dest byte to word: Nur das niederwertige Byte von dest wird verändert byte to long: Nur das niederwertige Byte von dest wird verändert movzwl source, dest word to long: Nur das niederwertige Word von dest wird verändert 24 12
13 pushl %ebp movl %esp, %ebp subl $8, %esp ENTER und LEAVE Currently not used, since this instruction is too slow enter 8, 0 Prologue movl %ebp, %esp popl %ebp leave Epilogue 25 main1.c add.c Unterprogrammaufruf 26 13
14 gcc S main1.c main1_0.s Unterprogrammaufruf 27 main1_0.s add_1.s Return 28 14
15 main1_0.s add_1.s Return 29 main1_0.s add_1.s Return 30 15
16 main1_0.s add_1.s Return 31 main1_0.s add_1.s Return 32 16
17 What happens call label: push return address Decrease contents of stack pointer ESP by 4 Store current contents of program counter on stack, i.e. on memory location pointed to by register ESP Load program counter with the symbolic address (= label). ret: pop return address Load program counter with value from memory location pointed to by ESP Increase contents of ESP by 4 33 What if Return without Call The CPU does not know about this. There is always something on the stack. CPU will interpret this memory word as return address. If you are lucky, this jump leads to an address to which the operating system will not let your program go. and the operating system will flag a segmentation fault
18 The stack Stack is a memory section Stack is organised last in first out Typical operations for stack: Push & Pop CPU has a special register for operations on stack: Stack Pointer (ESP) ESP points to Top of Stack Usually stack grows from higher addresses to lower addresses Stack has NO fence; wherever ESP points, there is the Top of Stack ; even if no stack is used at all! 35 Watch out! When you pop a value from stack, the value is NOT removed from the stack; only the contents of ESP will be changed; nothing is taken from stack, but just copied
19 main000.s: So wäre es am einfachsten 37 main000.s: So wäre es am einfachsten Wir beginnen (wie immer) beim Label main
20 main000.s: So wäre es am einfachsten Wir beginnen (wie immer) beim Label main. Im ersten Befehl von main springen wir zum Label sub. 39 main000.s: So wäre es am einfachsten Wir beginnen (wie immer) beim Label main. Im ersten Befehl von main springen wir zum Label sub. Der Befehl call merkt sich die Rücksprungadresse am Stack
21 main000.s: So wäre es am einfachsten Wir beginnen (wie immer) beim Label main. Im ersten Befehl von main springen wir zum Label sub. Der Befehl call merkt sich die Rücksprungadresse am Stack. Der einzige Befehl des Unterprogramms sub ist ret. 41 main000.s: So wäre es am einfachsten Wir beginnen (wie immer) beim Label main. Im ersten Befehl von main springen wir zum Label sub. Der Befehl call merkt sich die Rücksprungadresse am Stack. Der einzige Befehl des Unterprogramms sub ist ret. ret holt sich die Rücksprungadresse vom Stack und macht nach dem Call-Befehl weiter
22 main000.s: So wäre es am einfachsten Wir beginnen (wie immer) beim Label main. Im ersten Befehl von main springen wir zum Label sub. Der Befehl call merkt sich die Rücksprungadresse am Stack. Der einzige Befehl des Unterprogramms sub ist ret. ret holt sich die Rücksprungadresse vom Stack und macht nach dem Call-Befehl weiter. (Dort steht wieder ein ret -Befehl.) 43 as a main000.s (Assemblierung) Maschinenprogramm mit 3 Befehlen 44 22
23 as a main000.s Maschinenprogramm mit 3 Befehlen x: x+4: X+8: x x+1 x+2 x+3 E C3 C3 Im Hauptspeicher 45 main00.s: Für das Debuggen fügen wir noch ein Label after_call call ein. Wir verändern damit das Maschinenprogramm nicht! 46 23
24 as a main00.s: Hier der Beweis Das Maschinenprogramm hat sich nicht verändert. 47 gcc g o main00 main00.s Assemblierung von main00.s (mit inkludierter Debug-Information für GDB) Assemblieren, GDB starten, Breakpoint setzen, Run. Wir befinden uns beim Label main, also ganz am Anfang
25 GDB-Session 49 GDB-Session info registers eip: Welcher Wert steht im Program Counter (Instruction Pointer) 50 25
26 info registers eip: Welcher Wert steht im Program Counter (Instruction Pointer) GDB-Session An dieser Adresse beginnt der Code: Das Label main steht also symbolisch für die Adresse 0x GDB-Session Was steht denn dort im Speicher 52 26
27 GDB-Session Was steht denn dort im Speicher Tatsächlich: Hier finden wir das Programm: 0x : E x : 00 C3 C3 90 0x C: Beachte die Reihenfolge! (Little Endian) 53 Welcher Wert steht im Stack Pointer GDB-Session 54 27
28 Welcher Wert steht im Stack Pointer GDB-Session Der Stack Pointer zeigt auf die Speicheradresse 0xbfc428ac 55 Welche Werte befinden sich denn derzeit ganz oben am Stack GDB-Session 56 28
29 Welche Werte befinden sich denn derzeit ganz oben am Stack GDB-Session Der Stack: Top of Stack 0xbfc428ac: b7 dd xbfc428b0: xbfc428b4: bf c GDB-Session step instruction Wir exekutieren eine Instruktion: Das ist call sub
30 GDB-Session step instruction Wir exekutieren eine Instruktion: Das ist call sub. Jetzt sind wir beim Label sub, also im Unterprogramm. tepoga Dort steht der Befehl ret. Im Assembler-Listing ist das die Zeile 10. Auch das wird angezeigt. 59 Welcher Wert steht denn jetzt im Instruction Pointer GDB-Session 60 30
31 Welcher Wert steht denn jetzt im Instruction Pointer GDB-Session Jetzt sind wir beim Label sub, also im Unterprogramm. Dort steht der Befehl ret. Im Assembler-Listing ist das die Zeile 10. Auch das wird angezeigt. 61 Welcher Wert steht denn jetzt im Instruction Pointer GDB-Session Wir sind also jetzt hier im Programm: Jetzt sind wir beim Label sub, also im Unterprogramm. Dort steht der Befehl ret. Im Assembler-Listing ist das die Zeile 10. Auch das wird angezeigt. 0x : E x : 00 C3 C3 90 0x C:
32 Welcher Wert steht denn jetzt im Stack Pointer GDB-Session 63 Welcher Wert steht denn jetzt im Stack Pointer GDB-Session Der Befehl call sub hat die Rücksprungadresse auf den Stack gepusht. Damit ist der Stack um 4 Bytes Gewachsen. Tatsächlich. Der Wert im Stack Pointer ist jetzt um 4 weniger als vorhin
33 Welche 12 Bytes finden wir denn jetzt ab Top of Stack GDB-Session 65 Welche 12 Bytes finden wir denn jetzt ab Top of Stack Top of Stack Der Stack: GDB-Session 0xbfc428a8: xbfc428ac: b7 dd xbfc428b0: xbfc428b4: bf c
34 Welche 12 Bytes finden wir denn jetzt ab Top of Stack Top of Stack Der Stack: GDB-Session 0xbfc428a8: xbfc428ac: b7 dd xbfc428b0: xbfc428b4: bf c Tatsächlich: Am Top of Stack finden wir jetzt die Rücksprungadresse. 0x : E x : 00 C3 C3 90 0x C: Wir exekutieren die einzige Instruktion des Unterprogramms: ret. GDB-Session 68 34
35 Wir exekutieren die einzige Instruktion des Unterprogramms: ret. GDB-Session Damit sind wir beim Label after_call angekommen. Also vom Unterprogramm sub zurück gekehrt. 69 Welcher Wert befindet sich denn nun im Instruction Pointer GDB-Session 70 35
36 Welcher Wert befindet sich denn nun im Instruction Pointer Wir sind wie nicht anders erwartet jetzt beim Label after_call. Also bei dieser Instruktion ret. Die Rücksprungadresse wurde also mit dem vorigen Befehl ret vom Stack zurück geholt. GDB-Session 0x : E x : 00 C3 C3 90 0x C: Sehen wir uns nochmals den Stack an. Auf welcher Adresse befindet sich denn der Top of Stack jetzt GDB-Session 72 36
37 Sehen wir uns nochmals den Stack an. Auf welcher Adresse befindet sich denn der Top of Stack jetzt GDB-Session ESP hat den Wert 0xbfc428ac. 73 examine 3 words Starting with address 0xbfc428a: ( w bedeutet im GDB 32-Bit) GDB-Session ESP hat den Wert 0xbfc428ac
38 examine 3 words starting with address 0xbfc428a: ( w bedeutet im GDB 32-Bit) Top of Stack Der Stack: GDB-Session 0xbfc428a8: xbfc428ac: b7 dd xbfc428b0: xbfc428b4: bf c ESP hat den Wert 0xbfc428ac. 75 examine 3 words starting with address 0xbfc428a: ( w bedeutet im GDB 32-Bit) Der vorige Rücksprungwert befindet sich noch immer im Speicher; er gehört Top of jedoch Stack nicht mehr zum Stack dazu. Der Stack: GDB-Session 0xbfc428a8: xbfc428ac: b7 dd xbfc428b0: xbfc428b4: bf c ESP hat den Wert 0xbfc428ac
39 Parameterübergabe: parameters000.s Vor dem Aufruf einer Funktion werden deren aktuelle Parameter auf den Stack gepusht. Nach der Rückkehr muss man am Stack aufräumen. 77 Parameterübergabe: parameters000.s In der Funktion selbst holen wir uns die aktuellen Parameter vom Stack
40 Jetzt mit printf : parameter00.s add2 printf Das Resultat wird in EAX übergeben. 79 gcc parameters00.s Versuch: Weglassen der Aufräumarbeiten! Was passiert 80 40
41 Was ist, wenn Funktionen Register brauchen Wer sichert und restauriert Das ist eine Frage der Konvention: Entweder das aufrufende Programm oder das aufgerufene. Doch eines ist klar: Die Werte werden am Stack gesichert und von dort wieder restauriert. 81 Und wo leben die lokalen Variablen einer Funktion Du ahnst es schon: Ebenfalls am Stack
42 main3.c Parameterübergabe 83 main3.c add3.c 84 42
43 gcc S main3.c main3.s Und hier geht es noch weiter 85 gcc S main3.c Und hier geht es noch weiter main3.s Den Wert der symbolischen Adressen b b und a a vom Speicher in EAX und EDX moven. Dann die Werte von EAX und EDX auf den Stack pushen und call von add. Schließlich den in EAX übergebenen Rückgabewert auf die symbolische Adresse c kopieren
44 gcc S add3.c add3.s Welche Rolle spielt EBP 87 Der Stack-Frame und der Base-Pointer Der Inhalt des Registers ESP definiert den Top of Stack. In EBP merken wir uns gleich nach jedem Funktionsaufruf die Adresse des Beginns des sogenannten Stack-Frame der soeben aufgerufenen Funktion. Dazu müssen wir vorher den alten Wert des EBP auf den Stack pushen. Wir haben also in jeder Funktion einen Referenzpunkt im Speicher. Mit diesem Wert in EBP können wir mit konstantem Offset auf übergebene Parameter oder auch auf lokale Variable dieser Funktion zugreifen. Vor dem Return-Befehl müssen wir dann den alten Wert in EBP restaurieren. Das ist ja der Beginn des Stack-Frame der aufrufenden Funktion. Die braucht diesen ja gleich wieder
45 gcc S add3.c add3.s 89 gcc S add3.c add3.s Sichere den alten Wert im Base-Pointer am Stack
46 gcc S add3.c add3.s Sichere den alten Wert im Base-Pointer am Stack. Definiere den neuen Base-Pointer-Wert für diese Funktion. 91 gcc S add3.c add3.s Sichere den alten Wert im Base-Pointer am Stack. Definiere den neuen Base-Pointer-Wert für diese Funktion. Jetzt können wir mit Konstantem Offset vom Wert in EBP auf die übergebenen Parameter zugreifen
47 gcc S add3.c add3.s Zum Schluss müssen wir vor der Rückkehr zur aufrufenden Funktion den alten Wert im Base Pointer resaurieren. 93 Und hier geht es noch weiter Der Stack in diesem Beispiel: Der Stack wächst nach oben hin zu kleineren Adressen. EBP EBP-Wert von main ESP 94 47
48 Und hier geht es noch weiter Der Stack in diesem Beispiel: Der Stack wächst nach oben hin zu kleineren Adressen. EBP Dar rüber reden wir später EBP-Wert von main ESP 95 Und hier geht es noch weiter Der Stack in diesem Beispiel: Der Stack wächst nach oben hin zu kleineren Adressen. EBP Dar rüber reden wir später EBP-Wert von main ESP 96 48
49 Und hier geht es noch weiter Der Stack in diesem Beispiel: Der Stack wächst nach oben hin zu kleineren Adressen. EBP Dar rüber reden wir später EBP-Wert von main Parameter b ESP 97 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. Dar rüber reden wir später EBP EBP-Wert von main Parameter a Parameter b ESP 98 49
50 Und hier geht es noch weiter Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. EBP Dar rüber reden wir später EBP-Wert von main Rücksprungadresse Parameter a Parameter b ESP 99 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. EBP-Wert von main Rücksprungadresse Parameter a Parameter b EBP EBP-Wert von main ESP
51 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. EBP-Wert von main Rücksprungadresse Parameter a Parameter b EBP EBP-Wert von add ESP 101 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. EBP-Wert von main Rücksprungadresse Parameter a Parameter b EBP EBP-Wert von add ESP
52 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. EBP-Wert von main Rücksprungadresse Parameter a Parameter b EBP EBP-Wert von add ESP 103 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. EBP-Wert von main Rücksprungadresse Parameter a Parameter b EBP EBP-Wert von main ESP
53 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. Wert-Wert von main Rücksprungadresse Parameter a Parameter b EBP ESP 105 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. Doch hier geht es noch weiter Dar rüber reden wir später Wert-Wert von main Rücksprungadresse Parameter a Parameter b ESP
54 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. Doch hier geht es noch weiter Wert-Wert von main Rücksprungadresse Parameter a Parameter b ESP 107 Zurück zu main0.c:
55 main0.c main0.s 109 main0.s: Fast nur Prolog und Epilog Prolog Epilog
56 main0.s: main ist auch nur eine Funktion. Unmittelbar bevor die erste Instruktion von main ausgeführt wird, liegt also ganz oben am Stack die Rücksprungadresse. 111 main0.s: main ist auch nur eine Funktion. Unmittelbar bevor die erste Instruktion von main ausgeführt wird, liegt also ganz oben am Stack die Rücksprungadresse. Load Effective Address: ECX kriegt den Wert ESP + 4. Wir sichern also ESP+4 in ECX
57 main0.s: main ist auch nur eine Funktion. Unmittelbar bevor die erste Instruktion von main ausgeführt wird, liegt also ganz oben am Stack die Rücksprungadresse. Load Effective Address: ECX kriegt den Wert ESP + 4. Wir sichern also ESP+4 in ECX. Jetzt setzen wir den Wert in ESP auf die nächst kleinere 16-Byte-Grenze. Damit beginnt der Stack-Frame von main nicht irgendwo, sondern auf einer runden Adresse. 113 main0.s: Der Stack-Pointer zeigt also jetzt auf eine Adresse, welche im niederwertigen Byte 0x00 hat
58 main0.s: Der Stack-Pointer zeigt also jetzt auf eine Adresse, welche im niederwertigen Byte 0x00 hat. Das Datum auf der Adresse (ECX 4) ist genau die Rücksprungadresse von vorhin. Diese pushen wir jetzt auf den Stack. 115 main0.s: Der Stack-Pointer zeigt also jetzt auf eine Adresse, welche im niederwertigen Byte 0x00 hat. Das Datum auf der Adresse (ECX 4) ist genau die Rücksprungadresse von vorhin. Diese pushen wir jetzt auf den Stack. Und jetzt geht es normal Weiter: Zuerst den Base-Pointer- Wert der aufrufenden Funktion am Stack sichern
59 main0.s: Der Stack-Pointer zeigt also jetzt auf eine Adresse, welche im niederwertigen Byte 0x00 hat. Das Datum auf der Adresse (ECX 4) ist genau die Rücksprungadresse von vorhin. Diese pushen wir jetzt auf den Stack. Und jetzt geht es normal Weiter: Zuerst den Base-Pointer- Wert der aufrufenden Funktion am Stack sichern. Dann einen neuen Stack-Frame beginnen: In EBP ist jetzt also der Base-Pointer-Wert von main. 117 main0.s: Und dann noch den Wert Von ECX am Stack sichern. Den brauchen wir am Ende Von main ja wieder, um den Stack zurück zu bauen
60 main0.s: Und dann noch den Wert Von ECX am Stack sichern. Den brauchen wir am Ende Von main ja wieder, um den Stack zurück zu bauen. Das war der Prolog der Funktion main. Jetzt kommt der Kern von main. Dieser besteht hier ja lediglich aus return 0. Es besteht die Konvention, einfache Return-Werte im Register EAX zu übergeben. So auch hier. 119 main0.s: Und dann noch den Wert Von ECX am Stack sichern. Den brauchen wir am Ende Von main ja wieder, um den Stack zurück zu bauen. Das war der Prolog der Funktion main. Jetzt kommt der Kern von main. Dieser besteht hier ja lediglich aus return 0. Es besteht die Konvention, einfache Return-Werte im Register EAX zu übergeben. So auch hier. Jetzt kommt der Epilog von main
61 main0.s: Es geht jetzt verkehrt herum: Wir restaurieren den Wert von ECX. 121 main0.s: Es geht jetzt verkehrt herum: Wir restaurieren den Wert von ECX. Diesen Wert haben wir ja vor der Exekution des Kerns von main auf den Stack gepusht
62 main0.s: Es geht jetzt verkehrt herum: Wir restaurieren den Wert von ECX. Diesen Wert haben wir ja vor der Exekution des Kerns von main auf den Stack gepusht. Dann restaurieren wir den Base-Pointer-Wert der aufrufenden Funktion. 123 main0.s: Es geht jetzt verkehrt herum: Wir restaurieren den Wert von ECX. Diesen Wert haben wir ja vor der Exekution des Kerns von main auf den Stack gepusht. Dann restaurieren wir den Base-Pointer-Wert der aufrufenden Funktion. Auch diesen haben wir zuvor auf den Stack gepusht
63 main0.s: Schließlich setzen wir den Wert von ESP auf den ursprünglichen Wert; 125 main0.s: Schließlich setzen wir den Wert von ESP auf den ursprünglichen Wert; Das ist also der Wert, den ESP vor dem AND-Befehl gehabt hat. Mit dem AND- Befehl haben wir ESP ja so manipuliert, dass ESP auf eine runde Adresse gezeigt hat
64 main0.s: Schließlich setzen wir den Wert von ESP auf den ursprünglichen Wert; Das ist also der Wert, den ESP vor dem AND-Befehl gehabt hat. Mit dem AND- Befehl haben wir ESP ja so manipuliert, dass ESP auf eine runde Adresse gezeigt hat. Davor haben wir ja den Original-ESP-Wert in ECX gesichert. 127 main0.s: Schließlich setzen wir den Wert von ESP auf den ursprünglichen Wert; Das ist also der Wert, den ESP vor dem AND-Befehl gehabt hat. Mit dem AND- Befehl haben wir ESP ja so manipuliert, dass ESP auf eine runde Adresse gezeigt hat. Davor haben wir ja den Original-ESP-Wert in ECX gesichert. Und Return
65 Call by reference: main4.c 129 main4.c add4.c
66 gcc o main4 main4.c add4.c 131 Vergleich: main3.c versus main4.c main3.c: Call by value main4.c: Call by reference
67 Vergleich: main3.s versus main4.s main3.c: Call by value main4.c: Call by reference main3.s: main4.s: 133 add3.c versus add4.c
68 add3.c versus add4.c add3.s add4.s 135 Lokale Variable: main5.c
69 main5.c und add5.c 137 main4.s main5.s Die globale Variable c ist im Datensegment und deren Startadresse heißt symbolisch c Die lokale Variable c lebt am Stack auf Adresse EBP
70 add5.c 139 gcc- S add5.c add5.s
71 gcc- S add5.c add5.s Platz am Stack machen 141 gcc- S add5.c add5.s Platz am Stack machen Übergebene Parameter vom Stack nach EDX und EAX holen
72 gcc- S add5.c add5.s Platz am Stack machen: Übergebene Parameter vom Stack nach EDX und EAX holen Addition: Summe in EAX 143 gcc- S add5.c add5.s Platz am Stack machen: Übergebene Parameter vom Stack nach EDX und EAX holen Addition: Summe in EAX Summe auf den Stack ( result )
73 gcc- S add5.c add5.s Platz am Stack machen: Übergebene Parameter vom Stack nach EDX und EAX holen Addition: Summe in EAX Summe auf den Stack ( result ) Return: result nach EAX 145 gcc- S add5.c add5.s Platz am Stack machen: Übergebene Parameter vom Stack nach EDX und EAX holen Addition: Summe in EAX Summe auf den Stack ( result ) Return: result nach EAX und leave
74 Wo leben Daten Lokale Variable: (brauchen in der ausführbaren Datei keinen Platz) am Stack Uninitialisierte Variable: (brauchen in der ausführbaren Datei keinen Platz).comm Initialisierte Variable: (brauchen in der ausführbaren Datei Platz) Initialisierte Konstante: (brauchen in der ausführbaren Datei Platz).data.section.rodata 147 Beispiel main6.c
75 main6.s 149 a = 2; main6.s c = a + b; printf( )
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
MehrERA-Zentralübung Maschinenprogrammierung
Marcel Meyer LRR TU München 04.11.2016 Inhalt Aufgabe 1.1 Aufgabe 1.2 Speicherzugriffe Unbedingte Sprünge Stapelspeicher Unterprogramme Aufgabe 1.1 Quellregister AX, BX, CX Konstante deklarieren Werte
Mehrhttp://www.stud.uni-potsdam.de/~hoeffi/gdb.html#wozu
gdb: debugging code In der Vorlesung hatte ich Teile von http://www.stud.uni-potsdam.de/~hoeffi/gdb.html#wozu und ein eigenes Beispiel diskutiert. Ein Debugger soll helfen Fehler im Programm, die sich
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
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
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
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
MehrTeil I Debuggen mit gdb
Teil I Debuggen mit gdb Wer kennt das nicht? $./a.out Segmentation fault Was tun dagegen? printf()s in den Code einfügen? Besser (und professioneller): Einen Debugger verwenden Wer kennt das nicht? $./a.out
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
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
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
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
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
MehrHandbuch der therapeutischen Seelsorge: Die Seelsorge-Praxis / Gesprächsführung in der Seelsorge (German Edition)
Handbuch der therapeutischen Seelsorge: Die Seelsorge-Praxis / Gesprächsführung in der Seelsorge (German Edition) Reinhold Ruthe Click here if your download doesn"t start automatically Handbuch der therapeutischen
MehrDie Bedeutung neurowissenschaftlicher Erkenntnisse für die Werbung (German Edition)
Die Bedeutung neurowissenschaftlicher Erkenntnisse für die Werbung (German Edition) Lisa Johann Click here if your download doesn"t start automatically Download and Read Free Online Die Bedeutung neurowissenschaftlicher
Mehr4 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
MehrIm Fluss der Zeit: Gedanken beim Älterwerden (HERDER spektrum) (German Edition)
Im Fluss der Zeit: Gedanken beim Älterwerden (HERDER spektrum) (German Edition) Ulrich Schaffer Click here if your download doesn"t start automatically Im Fluss der Zeit: Gedanken beim Älterwerden (HERDER
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
MehrDaniel Betz Wintersemester 2011/12
Daniel Betz Wintersemester 2011/12 Digitally signed by daniel.betz@daniel-betz.com Date: 2011.12.04 17:24:40 +01'00' Insgesamt 16 Register von je 16 Bit (=WORD) Breite Untere 8 Register auch als 2 Register
MehrMemory Models. 17. September 2012
Memory Models 17. September 2012 Here Be Dragons In addition, programming idioms used by some programmers and used within Sun s Java Development Kit is not guaranteed to be valid according the existing
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
MehrGrundbegriffe 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
MehrCycling and (or?) Trams
Cycling and (or?) Trams Can we support both? Experiences from Berne, Switzerland Roland Pfeiffer, Departement for cycling traffic, City of Bern Seite 1 A few words about Bern Seite 2 A few words about
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...
MehrDisclaimer: Das sind Lösungsvorschläge, keine Musterlösungen.
Autor: Sebastian Sossalla Disclaimer: Das sind Lösungsvorschläge, keine Musterlösungen. Aufgabe 1: Allgemeines (22 Punkte) 1. Welche der nachfolgenden Informationen werden i.a. im Condition- Code-Register
MehrÜ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
MehrWie man heute die Liebe fürs Leben findet
Wie man heute die Liebe fürs Leben findet Sherrie Schneider Ellen Fein Click here if your download doesn"t start automatically Wie man heute die Liebe fürs Leben findet Sherrie Schneider Ellen Fein Wie
Mehr10. 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
MehrTop-Antworten im Bewerbungsgespräch für Dummies (German Edition)
Top-Antworten im Bewerbungsgespräch für Dummies (German Edition) Rob Yeung Click here if your download doesn"t start automatically Top-Antworten im Bewerbungsgespräch für Dummies (German Edition) Rob Yeung
MehrMikrocontroller-Programmierung
Mikrocontroller-Programmierung Anhand des HC12 Fabian Wiesel Überblick Überblick Mikrocontroller Überblick HC12 CPU Peripherie des DG128 Assemblerprogrammierung Mikrocontroller Leistungsfähigkeit: zwischen
MehrFEBE Die Frontend-Backend-Lösung für Excel
FEBE Die Frontend--Lösung für FEBE Die Frontend--Lösung für FEBE.pptx 8.04.206 0:43 FEBE Die Frontend--Lösung für Nutzer A alle_aufträge neuer_auftrag Auftragsänderung Nutzer B alle_aufträge neuer_auftrag
MehrWas heißt Denken?: Vorlesung Wintersemester 1951/52. [Was bedeutet das alles?] (Reclams Universal-Bibliothek) (German Edition)
Was heißt Denken?: Vorlesung Wintersemester 1951/52. [Was bedeutet das alles?] (Reclams Universal-Bibliothek) (German Edition) Martin Heidegger Click here if your download doesn"t start automatically Was
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
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
MehrFAHRZEUGENTWICKLUNG IM AUTOMOBILBAU FROM HANSER FACHBUCHVERLAG DOWNLOAD EBOOK : FAHRZEUGENTWICKLUNG IM AUTOMOBILBAU FROM HANSER FACHBUCHVERLAG PDF
Read Online and Download Ebook FAHRZEUGENTWICKLUNG IM AUTOMOBILBAU FROM HANSER FACHBUCHVERLAG DOWNLOAD EBOOK : FAHRZEUGENTWICKLUNG IM AUTOMOBILBAU FROM Click link bellow and free register to download ebook:
MehrBetriebssystembau. 3. Übung. Michael Engel Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund
Betriebssystembau 3. Ü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: IRQ-Behandlung
MehrPONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: ENGLISCH LERNEN MIT JUSTUS, PETER UND BOB
Read Online and Download Ebook PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: ENGLISCH LERNEN MIT JUSTUS, PETER UND BOB DOWNLOAD EBOOK : PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: Click link bellow
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
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
MehrRechnernetze und -Organisation. Teil D Tomislav Nad Karl C. Posch
Rechnernetze und -Organisation Teil D3 2012 Tomislav Nad Karl C. Posch www.iaik.tugraz.at/content/teaching/bachelor_courses/rechnernetze_und_organisation/ 1 Contents of lecture TOY Networks x86 Hardware,
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,
MehrWer bin ich - und wenn ja wie viele?: Eine philosophische Reise. Click here if your download doesn"t start automatically
Wer bin ich - und wenn ja wie viele?: Eine philosophische Reise Click here if your download doesn"t start automatically Wer bin ich - und wenn ja wie viele?: Eine philosophische Reise Wer bin ich - und
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
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/
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.
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
MehrRISC-Prozessoren (1)
RISC-Prozessoren (1) 1) 8 Befehlsklassen und ihre mittlere Ausführungshäufigkeit (Fairclough): Zuweisung bzw. Datenbewegung 45,28% Programmablauf 28,73% Arithmetik 10,75% Vergleich 5,92% Logik 3,91% Shift
MehrWhere are we now? The administration building M 3. Voransicht
Let me show you around 9 von 26 Where are we now? The administration building M 3 12 von 26 Let me show you around Presenting your company 2 I M 5 Prepositions of place and movement There are many prepositions
MehrMartin Luther. Click here if your download doesn"t start automatically
Die schönsten Kirchenlieder von Luther (Vollständige Ausgabe): Gesammelte Gedichte: Ach Gott, vom Himmel sieh darein + Nun bitten wir den Heiligen Geist... der Unweisen Mund... (German Edition) Martin
MehrNOREA Sprachführer Norwegisch: Ein lustbetonter Sprachkurs zum Selbstlernen (German Edition)
NOREA Sprachführer Norwegisch: Ein lustbetonter Sprachkurs zum Selbstlernen (German Edition) Click here if your download doesn"t start automatically NOREA Sprachführer Norwegisch: Ein lustbetonter Sprachkurs
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
MehrName: 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
MehrAus FanLiebe zu Tokio Hotel: von Fans fã¼r Fans und ihre Band
Aus FanLiebe zu Tokio Hotel: von Fans fã¼r Fans und ihre Band Click here if your download doesn"t start automatically Aus FanLiebe zu Tokio Hotel: von Fans fã¼r Fans und ihre Band Aus FanLiebe zu Tokio
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
MehrDer 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
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
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,
MehrCycling. and / or Trams
Cycling and / or Trams Experiences from Bern, Switzerland Roland Pfeiffer, Departement for cycling traffic, City of Bern Seite 1 A few words about Bern Seite 2 A few words about Bern Capital of Switzerland
Mehr05. Assembler-Programmierung. Datenstrukturen des ATMega32. Literatur
0. Assembler-Programmierung Datenstrukturen des ATMega32 Literatur mikrocontroller.net avr-asm-tutorial.net asm Alles über AVR AVR-Assembler-Einführung Assembler AVR-Aufbau, Register, Befehle 2008: ouravr.com/attachment/microschematic/index.swf
MehrInformatik II. Giuseppe Accaputo, Felix Friedrich, Patrick Gruntz, Tobias Klenze, Max Rossmannek, David Sidler, Thilo Weghorn FS 2017
1 Informatik II Übung 6 Giuseppe Accaputo, Felix Friedrich, Patrick Gruntz, Tobias Klenze, Max Rossmannek, David Sidler, Thilo Weghorn FS 2017 Heutiges Programm 2 1 Klassen - Technisch 2 Prediscussion
MehrRechnernetze und -Organisation. Teil D3 2010, Ver 0.9 Michael Hutter Karl C. Posch
Rechnernetz R Teil D3 2010, Ver 0.9 Michael Hutter Karl C. Posch www.iaik.tugraz.at/content/teaching/bachelor_courses/rechnernetze_und_organisation/ 1 Contents of lecture TOY x86 Networks Hardware, Stack,
MehrReadMe zur Installation der BRICKware for Windows, Version 6.1.2. ReadMe on Installing BRICKware for Windows, Version 6.1.2
ReadMe zur Installation der BRICKware for Windows, Version 6.1.2 Seiten 2-4 ReadMe on Installing BRICKware for Windows, Version 6.1.2 Pages 5/6 BRICKware for Windows ReadMe 1 1 BRICKware for Windows, Version
MehrStruktur der CPU (1) Die Adress- und Datenpfad der CPU: Befehl holen. Vorlesung Rechnerarchitektur und Rechnertechnik SS Memory Adress Register
Struktur der CPU (1) Die Adress- und Datenpfad der CPU: Prog. Counter Memory Adress Register Befehl holen Incrementer Main store Instruction register Op-code Address Memory Buffer Register CU Clock Control
MehrCompiler: 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
MehrMOP: Befehlsliste für den Mikrocontroller 8051
Beuth Hochschule Berlin FB VI, Labor für Digitaltechnik MOP: Befehlsliste für den Mikrocontroller 8051 Erläuterung der Operanden Operand A addr11 addr16 bit /bit C #data #data16 direct DPTR PC Ri Rn rel
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
MehrTECHNISCHE 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
MehrTechnische Informatik 2 Adressierungsarten
Technische Informatik 2 Adressierungsarten Prof. Dr. Miroslaw Malek Sommersemester 2009 www.informatik.hu-berlin.de/rok/ca Thema heute X-Adressmaschine 0-Adressmaschine 1-Adressmaschine 2-Adressmaschine
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
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
MehrEVANGELISCHES GESANGBUCH: AUSGABE FUR DIE EVANGELISCH-LUTHERISCHE LANDESKIRCHE SACHSEN. BLAU (GERMAN EDITION) FROM EVANGELISCHE VERLAGSAN
EVANGELISCHES GESANGBUCH: AUSGABE FUR DIE EVANGELISCH-LUTHERISCHE LANDESKIRCHE SACHSEN. BLAU (GERMAN EDITION) FROM EVANGELISCHE VERLAGSAN DOWNLOAD EBOOK : EVANGELISCHES GESANGBUCH: AUSGABE FUR DIE EVANGELISCH-LUTHERISCHE
Mehr