Rechnerne etze und -O Organisatio on
|
|
- Kilian Biermann
- vor 6 Jahren
- Abrufe
Transkript
1 Rechnernetze und -Organisation Rechnerne etze und -O Organisatio on Teil B (30. März 2011) 2011 Michael Hutter Karl C. Posch 1
2 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) Rechnerne etze und -Organisatio on Freitag 15. April 2011: Abgabe Assignment 2 2
3 Two different assemblers GNU Assembler as : Uses AT&T syntax mov %ax, %bx we use this one Rechnerne etze und -O Organisatio on NASM Assembler: Uses Intel syntax mov bx, ax Both translate to machine code 0x6689C3 Meaning: Copy contents from AX to BX 3
4 Architectural elements of a CPU CPUs have an instruction ti set CPUs have a register set (Intel) CPUs can operate in various modes: We use: protected flat 32-bit mode Rechnerne etze und -O Organisatio on AMD64 / Intel 64 Check out:
5 Flat 32-bit memory model Rechnerne etze und -O Organisatio on Byte-addressable linear address space for Code Data Stacks Adresses from 0 to x: x+4: x+8: x+12: x+16: x+20: x x+1 x+2 x+3 89 E5 A B D D0 A D C3?? 5
6 8 general-purpose registers + 2 special registers EAX accumulator, results data EBX ECX EDX pointer to data in the data segment counter register data register, expands EAX in some cases, I/O pointer Rechnerne etze und -O Organisatio on ESI source index register EDI destination index register EBP base pointer register ESP stack pointer register EIP instruction pointer, ( program counter, PC) EFLAGS flags (is being used implicitly) 6
7 32, 16, and 8 bits 32 bits Rechnerne etze und -O Organisatio on EAX AX AH AL long long oder double word byte Im GDB: w bedeutet auch long : x/3w examine 3 locations with 32 bits each 7
8 Registers and memory Registers live inside id the CPU: Quick access There are always only a few registers Rechnerne etze und -O Organisatio on 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
9 Addressing modes movl $9, %ebx Register mode: Copy the value 9 to register EBX Rechnerne etze und -O Organisatio on movl $9, (%ebx) movl $9, x Indirect addressing mode: Copy the value 9 to memory location, whose address is stored in EBX Direct addressing mode: Copy the value 9 to memory location x Source operand is always specified in immediate mode here. 9
10 More addressing modes Rechnerne etze und -O Organisatio on decl x(%ebx) # indexed d mode: # decrement content of memory # location with address (x + EBX) decl 8(%ebx) # based mode (same as indexed): # decrement content of memory decl (%eax,%ebx,4) decl x(%eax,%ebx,4) # location with address (8 + EBX) # scale factor: # operand address is # EAX + EBX*4 # based scale factor: # operand address is # x + EAX + EBX*4 10
11 move kopiert von source nach dest movl source, dest dest source Rechnernetze und -Organisatio on 11
12 long, word, byte movl source, dest dest source long, word, byte %eax, %ax, %ah, %al (double) Rechnernetze und -Organisatio on 12
13 exchange movl source, dest dest source long, word, byte %eax, %ax, %ah, %al Rechnerne etze und -Organisatio on xchgl op1, op2 exchange 13
14 exchange movl source, dest dest source long, word, byte %eax, %ax, %ah, %al Rechnerne etze und -Organisatio on xchgl op1, op2 exchange Beispiele 14
15 Arithmetik: Addition und Subtraktion movl source, dest dest source Rechnerne etze und -Organisatio on addl source, dest dest source + dest subl source, dest dest source dest 15
16 ++, --, *, / movl source, dest dest source Rechnerne etze und -O Organisatio on addl source, dest dest source + dest subl source, dest dest source dest (inc, dec, mul, div, ) Beispiele 16
17 Logik: AND movl source, dest dest source Rechnerne etze und -O Organisatio on addl source, dest dest source + dest subl source, dest dest source dest andl source, dest dest source & dest 17
18 OR, XOR, NOT, NEG, SHL, SHR movl source, dest dest source Rechnerne etze und -O Organisatio on 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
19 Rechnerne etze und -O Organisatio on Programmflusskontrolle jmp label l 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
20 Call und Return Rechnerne etze und -O Organisatio on call label ESP ESP 4; mem[esp] EIP; EIP label; ret EIP mem[esp] ESP ESP
21 Push und Pop Rechnerne etze und -O Organisatio on pushl source ESP ESP 4; mem[esp] source (push und pushl sind identisch) (pushb gibt es nicht) popl dest dest mem[esp] ESP ESP
22 Load Effective Address leall source, dest dest Adresse von source Beispiele: Rechnerne etze und -O Organisatio on leal label, %eax EAX label leal 4(%esp), %ecx ECX ESP+4 leal (%eax, %ebx), %ecx ECX EAX + EBX 22
23 Beispiele mit LEA Rechnernetze und -Organisatio on 23
24 MOVZ: Move Zero Extended Rechnerne etze und -O Organisatio on movzbw source, dest bt byte to word: Nur das niederwertige Byte von dest wird verändert movzbl source, dest byte to long: movzwl source, dest Nur das niederwertige Byte von dest wird verändert word to long: Nur das niederwertige Word von dest wird verändert 24
25 ENTER und LEAVE Currently not used, since this instruction is too slow pushl %ebp movl %esp, %ebp subl $8, %esp enter 8, 0 Prologue Rechnernetze und -Organisatio on movl %ebp, %esp popl %ebp leave Epilogue 25
26 main1.c add.c Rechnernetze und -Organisatio on Unterprogrammaufruf 26
27 gcc S main1.c main1_0.s Rechnernetze und -Organisatio on Unterprogramm- aufruf 27
28 main1_0.s add_1.s Rechnernetze und -Organisatio on Return 28
29 main1_0.s add_1.s Rechnernetze und -Organisatio on Return 29
30 main1_0.s add_1.s Rechnernetze und -Organisatio on Return 30
31 main1_0.s add_1.s Rechnernetze und -Organisatio on Return 31
32 main1_0.s add_1.s Rechnernetze und -Organisatio on Return 32
33 What happens? call label: l 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). Rechnerne etze und -O Organisatio on ret: pop return address Load program counter with value from memory location pointed to by ESP Increase contents of ESP by 4 33
34 What if Rechnerne etze und -Organisatio on Return without t 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. 34
35 The stack Rechnerne etze und -O Organisatio on 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 h 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
36 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. Rechnernetze und -Organisatio on 36
37 main000.s: So wäre es am einfachsten Rechnernetze und -Organisatio on 37
38 main000.s: So wäre es am einfachsten Wir beginnen (wie immer) beim Label main. Rechnernetze und -Organisatio on 38
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. Rechnernetze und -Organisatio on 39
40 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. Rechnerne etze und -Organisatio on Der Befehl call call merkt sich die Rücksprungadresse am Stack. 40
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. Rechnerne etze und -O Organisatio on Der Befehl call call merkt sich die Rücksprungadresse am Stack. Der einzige i Befehl des Unterprogramms sub ist ret. 41
42 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. Rechnerne etze und -O Organisatio on Der Befehl call call merkt sich die Rücksprungadresse am Stack. Der einzige i Befehl des Unterprogramms sub ist ret. ret holt sich die Rücksprungadresse vom Stack und macht nach dem Call-Befehl weiter. 42
43 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. Rechnerne etze und -O Organisatio on Der Befehl call call merkt sich die Rücksprungadresse am Stack. Der einzige i 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
44 as a main000.s (Assemblierung) Rechnernetze und -Organisatio on Maschinenprogramm mit 3 Befehlen 44
45 as a main000.s Rechnerne etze und -O Organisatio on Maschinenprogramm mit 3 Befehlen x: x+4: X+8: x x+1 x+2 x+3 E C3 C3?? X+8:???????? Im Hauptspeicher 45
46 main00.s: Rechnerne etze und -O Organisatio on Für das Debuggen fügen wir noch ein Label after_call ein. Wir verändern damit das Maschinenprogramm nicht! 46
47 as a main00.s: Hier der Beweis Rechnernetze und -Organisatio on Das Maschinenprogramm hat sich nicht verändert. 47
48 gcc g o main00 main00.s Assemblierung von main00.s (mit inkludierter Debug-Information für GDB) Rechnerne etze und -O Organisatio on Assemblieren, GDB starten, Breakpoint setzen, Run. Wir befinden uns beim Label main, also ganz am Anfang. 48
49 GDB-Session Rechnernetze und -Organisatio on 49
50 GDB-Session Rechnerne etze und -Organisatio on info registers eip: Welcher Wert steht im Program Counter (Instruction Pointer)? 50
51 GDB-Session An dieser Adresse beginnt der Code: Rechnerne etze und -Organisatio on info registers eip: Welcher Wert steht im Program Counter (Instruction Pointer)? Das Label main steht also symbolisch für die Adresse 0x
52 GDB-Session Rechnerne etze und -Organisatio on Was steht denn dort im Speicher? 52
53 GDB-Session Rechnerne etze und -O Organisatio on Tatsächlich: Hier finden wir das Programm: Was steht denn dort im Speicher? 0x : E x : 00 C3 C3 90 0x C: Beachte die Reihenfolge! (Little Endian) 53
54 Welcher Wert steht im Stack Pointer? GDB-Session Rechnernetze und -Organisatio on 54
55 Welcher Wert steht im Stack Pointer? GDB-Session Rechnerne etze und -Organisatio on Der Stack Pointer zeigt auf die Speicheradresse 0xbfc428ac 55
56 Welche Werte befinden sich denn derzeit ganz oben am Stack? GDB-Session Rechnernetze und -Organisatio on 56
57 Welche Werte befinden sich denn derzeit ganz oben am Stack? GDB-Session Rechnerne etze und -O Organisatio on Top of Stack Der Stack: 0xbfc428ac: b7 dd xbfc428b0: xbfc428b4: bf c
58 step instruction GDB-Session Wir exekutieren eine Instruktion: Rechnernetze und -Organisatio on Das ist call sub. 58
59 step instruction GDB-Session Wir exekutieren eine Instruktion: Rechnerne etze und -O Organisatio on Das ist call sub. Jetzt sind wir beim Label sub, also im Unterprogramm. Dort steht der Befehl ret ret. Im Assembler-Listing ist das die Zeile 10. Auch das wird angezeigt. 59
60 Welcher Wert steht denn jetzt im Instruction Pointer? GDB-Session Rechnernetze und -Organisatio on 60
61 Welcher Wert steht denn jetzt im Instruction Pointer? GDB-Session Rechnerne etze und -O Organisatio on 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
62 Welcher Wert steht denn jetzt im Instruction Pointer? GDB-Session Rechnerne etze und -O Organisatio on 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. Wir sind also jetzt hier im Programm: 0x : E x : 00 C3 C3 90 0x C:
63 Welcher Wert steht denn jetzt im Stack Pointer? GDB-Session Rechnernetze und -Organisatio on 63
64 Welcher Wert steht denn jetzt im Stack Pointer? GDB-Session Rechnerne etze und -O Organisatio on Der Befehl call sub hat die Rücksprungadresse auf den Stack gepusht gepusht. Damit ist der Stack um 4 Bytes Gewachsen. Tatsächlich. Der Wert im Stack Pointer ist jetzt um 4 weniger als vorhin. 64
65 Welche 12 Bytes finden wir denn jetzt ab Top of Stack? GDB-Session Rechnernetze und -Organisatio on 65
66 Rechnerne etze und -Organisatio on Welche 12 Bytes finden wir denn jetzt ab Top of Stack? Top of Stack GDB-Session Der Stack: 0xbfc428a8: xbfc428ac: b7 dd xbfc428b0: xbfc428b4: bf c
67 Welche 12 Bytes finden wir denn jetzt ab Top of Stack? Der Stack: GDB-Session Rechnerne etze und -Organisatio Top of Stack 0xbfc428a8: xbfc428ac: b7 dd xbfc428b0: xbfc428b4: bf c Tatsächlich: 0x : E Am Top of Stack finden wir 0x : 00 C3 C3 90 onjetzt die Rücksprungadresse. 0x C: C
68 Wir exekutieren die einzige Instruktion des Unterprogramms: ret. GDB-Session Rechnernetze und -Organisatio on 68
69 Wir exekutieren die einzige Instruktion des Unterprogramms: ret. GDB-Session Rechnerne etze und -O Organisatio on Damit sind wir beim Label after_call angekommen. Also vom Unterprogramm sub zurück gekehrt. 69
70 Welcher Wert befindet sich denn nun im Instruction Pointer? GDB-Session Rechnernetze und -Organisatio on 70
71 Welcher Wert befindet sich denn nun im Instruction Pointer? GDB-Session Rechnerne etze und -Organisatio on Wir sind wie nicht anders erwartet jetzt beim Label after_call call. Also bei dieser Instruktion ret. Die Rücksprungadresse wurde also mit dem vorigen Befehl ret vom Stack zurück geholt. 0x : E x : 00 C3 C3 90 0x C: C
72 Sehen wir uns nochmals den Stack an. Auf welcher Adresse befindet sich denn der Top of Stack jetzt? GDB-Session Rechnernetze und -Organisatio on 72
73 Sehen wir uns nochmals den Stack an. Auf welcher Adresse befindet sich denn der Top of Stack jetzt? GDB-Session Rechnernetze und -Organisatio on ESP hat den Wert 0xbfc428ac. 73
74 examine 3 words Starting with address 0xbfc428a: GDB-Session (w ( w bedeutet im GDB 32-Bit) Rechnernetze und -Organisatio on ESP hat den Wert 0xbfc428ac. 74
75 Rechnerne etze und -Organisatio on examine 3 words starting with address 0xbfc428a: (w ( 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
76 Rechnerne etze und -Organisatio on examine 3 words starting with address 0xbfc428a: (w ( 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. 76
77 Parameterübergabe: parameters000.s Vor dem Aufruf einer Funktion werden deren aktuelle Parameter auf den Stack gepusht. Rechnerne etze und -Organisatio on Nach der Rückkehr muss man am Stack aufräumen. 77
78 Parameterübergabe: parameters000.s Rechnerne etze und -Organisatio on In der Funktion selbst holen wir uns die aktuellen Parameter vom Stack. 78
79 Jetzt mit printf printf : parameter00.s add2 Rechnernetze und -O Organisatio on printf Das Resultat wird in EAX übergeben. 79
80 gcc parameters00.s Rechnerne etze und -Organisatio on Versuch: Weglassen der Aufräumarbeiten! Was passiert? 80
81 Was ist, wenn Funktionen Register brauchen? Wer sichert und restauriert? Rechnerne etze und -O Organisatio on 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
82 Und wo leben die lokalen Variablen einer Funktion? Du ahnst es schon: Ebenfalls am Stack. Rechnernetze und -Organisatio on 82
83 main3.c Parameterübergabe Rechnernetze und -Organisatio on 83
84 main3.c add3.c Rechnernetze und -Organisatio on 84
85 gcc S main3.c main3.s Rechnernetze und -Organisatio on Und hier geht es noch weiter 85
86 gcc S main3.c main3.s Rechnerne etze und -O Organisatio on Und hier geht es noch weiter Den Wert der symbolischen Adressen b und 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. 86
87 gcc S add3.c add3.s Rechnerne etze und -O Organisatio on Welche Rolle spielt EBP? 87
88 Der Stack-Frame und der Base-Pointer Rechnerne etze und -O Organisatio on Der Inhalt des Registers ESP definiert i 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 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. 88
89 gcc S add3.c add3.s Rechnernetze und -Organisatio on 89
90 gcc S add3.c add3.s Sichere den alten Wert im Base-Pointer am Stack. Rechnernetze und -Organisatio on 90
91 gcc S add3.c add3.s Rechnerne etze und -Organisatio on Sichere den alten Wert im Base-Pointer am Stack. Definiere den neuen Base-Pointer-Wert für diese Funktion. 91
92 gcc S add3.c add3.s Rechnerne etze und -O Organisatio on 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. 92
93 gcc S add3.c add3.s Rechnerne etze und -O Organisatio on Zum Schluss müssen wir vor der Rückkehr zur aufrufenden Funktion den alten Wert im Base Pointer resaurieren. 93
94 Der Stack in diesem Beispiel: Der Stack wächst nach oben hin zu kleineren Adressen.??? Rechnerne etze und -O Organisatio on Und hier geht es noch weiter EBP EBP-Wert von main????? ESP 94
95 Der Stack in diesem Beispiel: Der Stack wächst nach oben hin zu kleineren Adressen. Rechnerne etze und -O Organisatio on Und hier geht es noch weiter EBP Darübe er reden wir sp päter EBP-Wert von main???????? ESP 95
96 Der Stack in diesem Beispiel: Der Stack wächst nach oben hin zu kleineren Adressen. Rechnerne etze und -O Organisatio on Und hier geht es noch weiter EBP Darübe er reden wir sp päter EBP-Wert von main???????? ESP 96
97 Der Stack in diesem Beispiel: Der Stack wächst nach oben hin zu kleineren Adressen. Rechnerne etze und -O Organisatio on Und hier geht es noch weiter EBP Darübe er reden wir sp päter EBP-Wert von main????? Parameter b?? ESP 97
98 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. Rechnerne etze und -O Organisatio on EBP Darübe er reden wir sp päter EBP-Wert von main???? Parameter a Parameter b?? ESP 98
99 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. Rechnerne etze und -O Organisatio on Und hier geht es noch weiter EBP Darübe er reden wir sp päter EBP-Wert von main??? Rücksprungadresse Parameter a Parameter b?? ESP 99
100 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen.?? EBP-Wert von main Rechnerne etze und -O Organisatio on EBP EBP-Wert von main Rücksprungadresse Parameter a Parameter b?? ESP 100
101 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. Rechnerne etze und -O Organisatio on EBP?? EBP-Wert von main Rücksprungadresse Parameter a Parameter b?? EBP-Wert von add ESP 101
102 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. Rechnerne etze und -O Organisatio on EBP?? EBP-Wert von main Rücksprungadresse Parameter a Parameter b?? EBP-Wert von add ESP 102
103 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. Rechnerne etze und -O Organisatio on EBP?? EBP-Wert von main Rücksprungadresse Parameter a Parameter b?? EBP-Wert von add ESP 103
104 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. Rechnerne etze und -O Organisatio on EBP?? EBP-Wert von main Rücksprungadresse Parameter a Parameter b?? EBP-Wert von main ESP 104
105 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. Rechnerne etze und -O Organisatio on EBP?? Wert-Wert von main Rücksprungadresse Parameter a Parameter b?? ESP 105
106 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. Rechnerne etze und -O Organisatio on Doch hier geht es noch weiter Darübe er reden wir sp päter?? Wert-Wert von main Rücksprungadresse Parameter a Parameter b?? ESP 106
107 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. Rechnerne etze und -O Organisatio on Doch hier geht es noch weiter?? Wert-Wert von main Rücksprungadresse Parameter a Parameter b?? ESP 107
108 Zurück zu main0.c: Rechnernetze und -Organisatio on 108
109 main0.c main0.s Rechnernetze und -Organisatio on 109
110 main0.s: Fast nur Prolog und Epilog Prolog Rechnernetze und -O Organisatio on Epilog 110
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. Rechnernetze und -Organisatio on 111
112 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. Rechnerne etze und -Organisatio on Load Effective Address: ECX kriegt den Wert ESP + 4. Wir sichern also ESP+4 in ECX. 112
113 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. Rechnerne etze und -O Organisatio on 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
114 main0.s: Der Stack-Pointer t zeigt also jetzt auf eine Adresse, welche im niederwertigen Byte 0x00 hat. Rechnernetze und -Organisatio on 114
115 main0.s: Der Stack-Pointer t 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. Rechnerne etze und -Organisatio on Diese pushen wir jetzt auf den Stack. 115
116 main0.s: Der Stack-Pointer t 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. Und jetzt geht es normal Weiter: Zuerst den Base-Pointer- Wert der aufrufenden Funktion am Stack sichern. Rechnerne etze und -O Organisatio on Diese pushen wir jetzt auf den Stack. 116
117 main0.s: Der Stack-Pointer t 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. Und jetzt geht es normal Weiter: Zuerst den Base-Pointer- Wert der aufrufenden Funktion am Stack sichern. Rechnerne etze und -O Organisatio on Diese pushen wir jetzt auf den Stack. Dann einen neuen Stack-Frame beginnen: In EBP ist jetzt also der Base-Pointer-Wert von main. 117
118 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. Rechnernetze und -Organisatio on 118
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. Rechnerne etze und -O Organisatio on 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
120 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. Rechnerne etze und -O Organisatio on 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. 120
121 main0.s: Es geht jetzt t verkehrt herum: Wir restaurieren den Wert von ECX. Rechnernetze und -Organisatio on 121
122 main0.s: Es geht jetzt t verkehrt herum: Wir restaurieren den Wert von ECX. Diesen Wert haben wir ja vor der Exekution des Kerns von main auf den Stack gepusht. Rechnernetze und -Organisatio on 122
123 main0.s: Es geht htjetzt tverkehrt htherum: Wir restaurieren den Wert von ECX. Diesen Wert haben wir ja vor der Exekution des Kerns von main auf den Stack gepusht. Rechnerne etze und -Organisatio on Dann restaurieren wir den Base-Pointer-Wert der aufrufenden Funktion. 123
124 main0.s: Es geht htjetzt tverkehrt htherum: Wir restaurieren den Wert von ECX. Diesen Wert haben wir ja vor der Exekution des Kerns von main auf den Stack gepusht. Rechnerne etze und -O Organisatio on Dann restaurieren wir den Base-Pointer-Wert der aufrufenden Funktion. Auch diesen haben wir zuvor auf den Stack gepusht. 124
125 main0.s: Schließlich setzen wir den Wert von ESP auf den ursprünglichen Wert; Rechnernetze und -Organisatio on 125
126 main0.s: Schließlich setzen wir den Wert von ESP auf den ursprünglichen Wert; Rechnerne etze und -Organisatio on 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. 126
127 main0.s: Schließlich setzen wir den Wert von ESP auf den ursprünglichen Wert; Rechnerne etze und -O Organisatio on 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
128 main0.s: Schließlich setzen wir den Wert von ESP auf den ursprünglichen Wert; Rechnerne etze und -O Organisatio on 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. 128
129 Call by reference: main4.c Rechnernetze und -Organisatio on 129
130 main4.c add4.c Rechnernetze und -Organisatio on 130
131 gcc o main4 main4.c add4.c Rechnernetze und -Organisatio on 131
132 Vergleich: main3.c versus main4.c main3.c: Call by value main4.c: Call by reference Rechnernetze und -Organisatio on 132
133 Vergleich: main3.s versus main4.s main3.c: Call by value main4.c: Call by reference Rechnerne etze und -Organisatio on main3.s: main4.s: 133
134 add3.c versus add4.c Rechnernetze und -Organisatio on 134
135 add3.c versus add4.c add3.s add4.s Rechnernetze und -Organisatio on 135
136 Lokale Variable: main5.c Rechnernetze und -Organisatio on 136
137 main5.c und add5.c Rechnernetze und -Organisatio on 137
138 main4.s main5.s Rechnernetze und -Organisatio on Die globale Variable c ist im Datensegment und deren Startadresse heißt symbolisch c Die lokale Variable c lebt am Stack auf Adresse EBP 8 138
139 add5.c Rechnernetze und -Organisatio on 139
140 gcc- S add5.c add5.s Rechnernetze und -Organisatio on 140
141 gcc- S add5.c add5.s Rechnerne etze und -Organisatio on Platz am Stack machen 141
142 gcc- S add5.c add5.s Rechnerne etze und -O Organisatio on Platz am Stack machen Übergebene Parameter vom Stack nach EDX und EAX holen 142
143 gcc- S add5.c add5.s Rechnerne etze und -O Organisatio on Platz am Stack machen: Übergebene Parameter vom Stack nach EDX und EAX holen Addition: Summe in EAX 143
144 gcc- S add5.c add5.s Rechnerne etze und -O Organisatio on Platz am Stack machen: Übergebene Parameter vom Stack nach EDX und EAX holen Addition: Summe in EAX Summe auf den Stack ( result ) 144
145 gcc- S add5.c add5.s Rechnerne etze und -O Organisatio on 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
146 gcc- S add5.c add5.s Rechnerne etze und -O Organisatio on 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 146
147 Wo leben Daten? Lokale Variable: am Stack (brauchen in der ausführbaren Datei keinen Platz) Uninitialisierte Variable: (brauchen in der ausführbaren Datei keinen Platz).comm Rechnerne etze und -O Organisatio on Initialisierte Variable: (brauchen in der ausführbaren Datei Platz) Initialisierte Konstante: (brauchen in der ausführbaren Datei Platz).data.section.rodata 147
148 Beispiel main6.c Rechnernetze und -Organisatio on 148
149 main6.s Rechnernetze und -Organisatio on 149
150 a = 2; main6.s c=a+ b; Rechnernetze und -O Organisatio on printf( ) 150
Rechnernetze und -Organisation. Teil B (30. März 2011) 2011 Michael Hutter Karl C. Posch
Rechnernetz R Teil B (30. März 2011) 2011 Michael Hutter Karl C. Posch www.iaik.tugraz.at/content/teaching/bachelor_courses/rechnernetze_und_organisation/ 1 Zeitplan für Teil B Mittwoch 23. März 2011 Mittwoch
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 - 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
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.
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
MehrMikrocontroller-Programmierung
Mikrocontroller-Programmierung Anhand des HC12 Fabian Wiesel Überblick Überblick Mikrocontroller Überblick HC12 CPU Peripherie des DG128 Assemblerprogrammierung Mikrocontroller Leistungsfähigkeit: zwischen
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
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.
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
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...
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
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
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
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
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
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
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,
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
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,
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
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
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
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,
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
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
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
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/
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
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
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
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
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
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
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
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
MehrLehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Debugging
Grundkurs C++ Debugging Berühmte Software-Bugs 1947: Fehlfunktion des Mark II Relay Calculator aufgrund einer Motte. Grundkurs C++ 6 Berühmte Software-Fehler 1996: Ariane 5 muss 40 Sekunden nach dem Start
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
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
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
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
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
MehrWelche Register werden zur Parameterübergabe verwendet? In welcher Reihenfolge werden die Parameter auf dem Stack bzw. in den Registern abgelegt?
6.5 MMIX Befehle 291 Aufrufkonventionen Eine Aufrufkonvention (engl. calling convention) legt fest, wie einer Funktion Parameter übergeben werden und wie der Rückgabewert zurückgegeben wird. Damit spezifiziert
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
MehrTube Analyzer LogViewer 2.3
Tube Analyzer LogViewer 2.3 User Manual Stand: 25.9.2015 Seite 1 von 11 Name Company Date Designed by WKS 28.02.2013 1 st Checker 2 nd Checker Version history Version Author Changes Date 1.0 Created 19.06.2015
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
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
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
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
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
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