Rechnerne etze und -O Organisatio on

Größe: px
Ab Seite anzeigen:

Download "Rechnerne etze und -O Organisatio on"

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

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

Mehr

U23 Assembler Workshop

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

Mehr

Assembler - Adressierungsarten

Assembler - Adressierungsarten Assembler - Adressierungsarten Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Adressierungsarten 1/31 2008-04-01

Mehr

Assembler (NASM) Crashkurs von Sönke Schmidt

Assembler (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

Mehr

U23 Assembler Workshop

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

Mehr

Assembler Unterprogramme

Assembler 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

Mehr

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 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

Mehr

2. Aufgabenblatt Musterlösung

2. Aufgabenblatt Musterlösung 2. Aufgabenblatt Musterlösung Technische Informatik II Sommersemester 2011 Problem 2: Assembler Syntax Register eines 32-bit Intel-Prozessors: 16 bits 8 bits 8 bits general purpose registers EAX Accumulator

Mehr

Algorithmen 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. 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.

Mehr

Zusammenfassung der Assemblerbefehle des 8051

Zusammenfassung der Assemblerbefehle des 8051 Zusammenfassung der Assemblerbefehle des 8051 Seite 1 von 5 Befehl Bezeichnung Syntax Wirkung / Beispiel Befehle zum Datentransfer MOV Move MOV [Ziel],[Quelle] MOV P1,P3 Kopiert den Inhalt von P3 nach

Mehr

TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems

TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems Mitglied der Zürcher Fachhochschule TIn 1: Lecture 4 Data transfer Feedback Laboratories Question: What is the IP? Why do we NEED an IP? Lecture 3: Lernziele Moving data, the why s and wherefores Moving

Mehr

Einfü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 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

Mehr

Abstrakte C-Maschine und Stack

Abstrakte 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

Mehr

Einfü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 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

Mehr

Assembler - Einleitung

Assembler - Einleitung Assembler - Einleitung Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Einleitung 1/19 2008-04-01 Teil 1: Hochsprache

Mehr

Einführung. Übungen zur Vorlesung Virtuelle Maschinen. Stefan Potyra. SoSe 2009

Einfü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

Karlsruher Institut für Technologie

Karlsruher Institut für Technologie Karlsruher Institut für Technologie Lehrstuhl für Programmierparadigmen Sprachtechnologie und Compiler WS 2010/2011 Dozent: Prof. Dr.-Ing. G. Snelting Übungsleiter: Matthias Braun Lösung zu Übungsblatt

Mehr

Use of the LPM (Load Program Memory)

Use 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. Operanden, Statusflags und Registersatz Übersicht der wichtigsten Assemblerbefehle in ATT-Syntax Autoren: Wolfgang Heenes, Patrik Schmittat Version: 0.4 Datum: 26. März 2011 Operanden, Statusflags und Registersatz Die vier Operanden sind: Direkter

Mehr

Hinweise 80x86-Architektur

Hinweise 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

Mehr

6. Intel IA-32 Prozessoren Aufbau und Adressierungsarten

6. 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

Mehr

Inhaltsverzeichnis. 1 Einleitung 2

Inhaltsverzeichnis. 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

Mehr

Grundlagen der Informatik III Wintersemester 2010/2011

Grundlagen 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

Mehr

Assembler - Variablen

Assembler - Variablen Assembler - Variablen Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Variablen 1/30 2008-04-21 Variablen Variablen

Mehr

FAKULTÄT FÜR INFORMATIK

FAKULTÄT FÜR INFORMATIK FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN Lehrstuhl für Rechnertechnik und Rechnerorganisation Prof. Dr. Arndt Bode Einführung in die Rechnerarchitektur Wintersemester 2016/2017 Zentralübung

Mehr

Unterprogramme. Unterprogramme

Unterprogramme. Unterprogramme Unterprogramme Unterprogramme wichtiges Hilfsmittel für mehrfach benötigte Programmabschnitte spielen in höheren Programmiersprachen eine wesentliche Rolle in Assembler sind bestimmte Konventionen nötig

Mehr

"Organisation und Technologie von Rechensystemen 4"

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

Mehr

U23 - Shellcode. Twix Chaos Computer Club Cologne. Motivation Einstieg Der erste Shellcode Nullbytes, NOP Slides

U23 - 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

Mehr

Technische 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 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

Mehr

1 Maschinenunabhängige Optimierungen. Maschinenunabhängige Optimierungen Wintersemester 2008/09 1 / 17

1 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.

Mehr

http://www.stud.uni-potsdam.de/~hoeffi/gdb.html#wozu

http://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

Mehr

ERA-Zentralübung Maschinenprogrammierung

ERA-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

Mehr

Instruktionssatz-Architektur

Instruktionssatz-Architektur Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2005/2006 Übersicht 1 Einleitung 2 Bestandteile der ISA 3 CISC / RISC Übersicht 1 Einleitung 2 Bestandteile

Mehr

B1 Stapelspeicher (stack)

B1 Stapelspeicher (stack) B1 Stapelspeicher (stack) Arbeitsweise des LIFO-Stapelspeichers Im Kapitel "Unterprogramme" wurde schon erwähnt, dass Unterprogramme einen so genannten Stapelspeicher (Kellerspeicher, Stapel, stack) benötigen

Mehr

FAKULTÄT FÜR INFORMATIK

FAKULTÄT FÜR INFORMATIK FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN Lehrstuhl für Rechnertechnik und Rechnerorganisation Prof. Dr. Arndt Bode Einführung in die Rechnerarchitektur Wintersemester 2016/2017 Zentralübung

Mehr

Grundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes

Grundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes Grundlagen der Informatik III Wintersemester 2010/2011 4. Vorlesung Dr.-Ing. Wolfgang Heenes int main() { printf("hello, world!"); return 0; } msg: main:.data.asciiz "Hello, world!".text.globl main la

Mehr

GCC 3.x Stack Layout. Auswirkungen auf Stack-basierte Exploit-Techniken. Tobias Klein, 2003 tk@trapkit.de Version 1.0

GCC 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

Mehr

Teil I Debuggen mit gdb

Teil 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

Mehr

Assembler-Programmierung

Assembler-Programmierung Assembler-Programmierung Dr.-Ing. Volkmar Sieh Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 Assembler-Programmierung 1/48 2012-02-29 Assembler-Programmierung

Mehr

i386 Interrupt-Deskriptortabelle (IDT)

i386 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

Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester Lorenz Schauer Mobile & Verteilte Systeme

Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester Lorenz Schauer Mobile & Verteilte Systeme Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester 2016 Lorenz Schauer Mobile & Verteilte Systeme 12. Juli 2016 Agenda heute Grundlagen: Unterprogramme I Call-by-Value (CBV) vs. Call-by-Reference

Mehr

Rechnern netze und Organisatio on

Rechnern 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

Ü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) Ü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

Mehr

Handbuch 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) 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

Mehr

Die Bedeutung neurowissenschaftlicher Erkenntnisse für die Werbung (German Edition)

Die 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

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Kapitel 22: Mima-X Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik

Mehr

4 Assembler für die 8051-Controller-Familie

4 Assembler für die 8051-Controller-Familie 4 Assembler für die 8051-Controller-Familie Tabelle 4.1 Wichtige Schreibweisen und Bedeutungen für die Befehle Abkürzung #data data addr Rr @Rr code addr Bedeutung Daten sind in der Instruktion codiert

Mehr

Im Fluss der Zeit: Gedanken beim Älterwerden (HERDER spektrum) (German Edition)

Im 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

Mehr

Daniel Betz Wintersemester 2011/12

Daniel 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

Mehr

10. Die Adressierungsarten des MSP 430

10. Die Adressierungsarten des MSP 430 10. Die Adressierungsarten 10.1 Übersicht über die Adressierungsarten 10.2 -Operanden 10.3 Indexregister mit Distanz 10.4 Symbolische (relativ zum ) 10.5 Absolute 10.6 Indirekte 10.7 Indirekte Adressierung

Mehr

Übungsblatt 10 (Block C 2) (16 Punkte)

Ü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

Mehr

Memory Models. 17. September 2012

Memory 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

Mehr

Mikrocontroller-Programmierung

Mikrocontroller-Programmierung Mikrocontroller-Programmierung Anhand des HC12 Fabian Wiesel Überblick Überblick Mikrocontroller Überblick HC12 CPU Peripherie des DG128 Assemblerprogrammierung Mikrocontroller Leistungsfähigkeit: zwischen

Mehr

Cycling and (or?) Trams

Cycling 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

Mehr

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04.

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04. Kontrollstrukturen Informatik II SS 2004 Teil 4: Assembler Programmierung Sprünge (bedingte und unbedingte) If-then-else, Case Loop (n Durchläufe) While (Abbruchbedingung) Institut für Informatik Prof.

Mehr

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Programmiertechnik. 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

Mehr

Moritz Höppner. m-hoeppner@gmx.net

Moritz 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...

Mehr

Wie man heute die Liebe fürs Leben findet

Wie 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

Mehr

Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures

Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures Vorbesprechung U8 Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures Basistypen Alignment der Basistypen auf deren Grösse Grössen (abhängig

Mehr

Disclaimer: Das sind Lösungsvorschläge, keine Musterlösungen.

Disclaimer: 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

Top-Antworten im Bewerbungsgespräch für Dummies (German Edition)

Top-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

Mehr

FEBE Die Frontend-Backend-Lösung für Excel

FEBE 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

Mehr

Betriebssysteme Teil 3: Laufzeitsystem für Programme

Betriebssysteme 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

Mehr

Das 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. 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,

Mehr

Was 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) 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

Mehr

TI-Übung Assembler. Andreas I. Schmied AspectIX-Team Abteilung Verteilte Systeme Universität Ulm WS2005

TI-Ü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,

Mehr

Hardware-Programmierung mit Linux/NASM

Hardware-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

Mehr

Technische Informatik 2 Adressierungsarten

Technische 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

Mehr

FAHRZEUGENTWICKLUNG IM AUTOMOBILBAU FROM HANSER FACHBUCHVERLAG DOWNLOAD EBOOK : FAHRZEUGENTWICKLUNG IM AUTOMOBILBAU FROM HANSER FACHBUCHVERLAG PDF

FAHRZEUGENTWICKLUNG 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:

Mehr

Betriebssystembau. 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 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

Mehr

Rechnernetze und -Organisation. Teil D Tomislav Nad Karl C. Posch

Rechnernetze 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,

Mehr

PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: ENGLISCH LERNEN MIT JUSTUS, PETER UND BOB

PONS 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

Mehr

Buffer Overflow 1c) Angriffsstring: TTTTTTTTTTTTTTTT (16x) Beachte: Padding GCC-Compiler Zusatz: gcc O2 verhindert hier den Angriff (Code Optimierung)

Buffer 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

Mehr

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. Click here if your download doesnt 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

Mehr

Java Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation

Java 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/

Mehr

RISC-Prozessoren (1)

RISC-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

Mehr

Aufgabe 1 Entwicklung einer Virtuellen Maschine

Aufgabe 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

Mehr

Where are we now? The administration building M 3. Voransicht

Where 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

Mehr

Compiler: Vom Code zum Maschinen-Code. C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg

Compiler: Vom Code zum Maschinen-Code. C Programmierung - Vorlesung 2 Hochschule Regensburg 19.03.2012 Universitätsstraße 31, 93053 Regensburg 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

Mehr

NOREA Sprachführer Norwegisch: Ein lustbetonter Sprachkurs zum Selbstlernen (German Edition)

NOREA 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

Mehr

Martin Luther. Click here if your download doesn"t start automatically

Martin Luther. Click here if your download doesnt 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

Mehr

Rechnerorganisation. Überblick über den Teil 13

Rechnerorganisation. Ü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

Mehr

TECHNISCHE HOCHSCHULE NÜRNBERG GEORG SIMON OHM Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl

Mehr

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Debugging

Lehrstuhl 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

Mehr

Name: ES2 Klausur Thema: ARM 25.6.07. Name: Punkte: Note:

Name: ES2 Klausur Thema: ARM 25.6.07. Name: Punkte: Note: Name: Punkte: Note: Hinweise für das Lösen der Aufgaben: Zeit: 95 min. Name nicht vergessen! Geben Sie alle Blätter ab. Die Reihenfolge der Aufgaben ist unabhängig vom Schwierigkeitsgrad. Erlaubte Hilfsmittel

Mehr

Assembler Integer-Arithmetik

Assembler 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

Mehr

Aus 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 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

Hinweise C-Programmierung

Hinweise 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) Ü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

Mehr

Welche Register werden zur Parameterübergabe verwendet? In welcher Reihenfolge werden die Parameter auf dem Stack bzw. in den Registern abgelegt?

Welche 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

Mehr

Der Toy Rechner Ein einfacher Mikrorechner

Der Toy Rechner Ein einfacher Mikrorechner Der Toy Rechner Ein einfacher Mikrorechner Dr. Gerald Heim Haid-und-Neu-Str. 10-14 76131 Karlsruhe 16. Mai 1995 Allgemeine Informationen 2 Quelle: Phil Kopmann, Microcoded versus Hard-Wired Logic, Byte

Mehr

Tube Analyzer LogViewer 2.3

Tube 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

Mehr

Cycling. and / or Trams

Cycling. 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

Mehr

Informatik II. Giuseppe Accaputo, Felix Friedrich, Patrick Gruntz, Tobias Klenze, Max Rossmannek, David Sidler, Thilo Weghorn FS 2017

Informatik 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

Mehr

05. Assembler-Programmierung. Datenstrukturen des ATMega32. Literatur

05. 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

Mehr

Struktur 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: 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

Mehr

ReadMe 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. 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

Mehr

MOP: Befehlsliste für den Mikrocontroller 8051

MOP: 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