Rechnernetze und -Organisation. Teil B (30. März 2011) 2011 Michael Hutter Karl C. Posch

Größe: px
Ab Seite anzeigen:

Download "Rechnernetze und -Organisation. Teil B (30. März 2011) 2011 Michael Hutter Karl C. Posch"

Transkript

1 Rechnernetz R Teil B (30. März 2011) 2011 Michael Hutter Karl C. Posch 1 Zeitplan für Teil B Mittwoch 23. März 2011 Mittwoch 30. März 2011 Mittwoch 6. April 2011 (Mittwoch 13. April 2011: Beginn Teil C) Freitag 15. April 2011: Abgabe Assignment 2 2 1

2 Two different assemblers GNU Assembler as : Uses AT&T syntax mov %ax, %bx thi we use this one NASM Assembler: Uses Intel syntax mov bx, ax Both translate t to machine code 0x6689C3 Meaning: Copy contents from AX to BX 3 Architectural elements of a CPU CPUs have an instruction set CPUs have a register set (Intel) CPUs can operate in various modes: We use: protected flat 32-bit mode AMD64 / Intel 64 Check out:

3 Flat 32-bit memory model Byte-addressable linear address space for Code Data x x+1 x+2 x+3 Stacks Adresses from 0 to x: E5 A x+4: x+8: x+12: x+16: x+20: 8B D D0 A D C3 5 8 general-purpose registers + 2 special registers EAX EBX ECX EDX accumulator, results data pointer to data in the data segment counter register data register, expands EAX in some cases, I/O pointer ESI EDI EBP ESP EIP EFLAGS source index register destination index register base pointer register stack pointer register instruction pointer, ( program counter, PC) flags (is being used implicitly) 6 3

4 32, 16, and 8 bits 32 bits EAX long oder double AX word AH Im GDB: w bedeutet auch long : AL byte x/3w examine 3 locations with 32 bits each 7 Registers and memory Registers live inside the CPU: Quick access There are always only a few registers Memory is outside the CPU: Slower access But a lot more If speed is important: Prioritise the use of registers over the use of memory 8 4

5 Addressing modes movl $9, %ebx Register mode: Copy the value 9 to register EBX movl $9, (%ebx) Indirect addressing mode: Copy the value 9 to memory location, whose address is stored in EBX movl $9, x Direct addressing mode: Copy the value 9 to memory location x Source operand is always specified in immediate mode here. 9 More addressing modes decl x(%ebx) # indexed mode: # decrement content of memory # location with address (x + EBX) decl 8(%ebx) # based mode (same as indexed): # decrement content of memory # location with address (8 + EBX) decl (%eax,%ebx,4) # scale factor: # operand address is # EAX + EBX*4 decl x(%eax,%ebx,4) # based scale factor: # operand address is # x + EAX + EBX*4 10 5

6 move kopiert von source nach dest movl source, dest dest source 11 long, word, byte movl source, dest dest source long, word, byte %eax, %ax, %ah, %al (double) 12 6

7 movl source, dest exchange dest source long, word, byte %eax, %ax, %ah, %al xchgl op1, op2 exchange 13 movl source, dest exchange dest source long, word, byte %eax, %ax, %ah, %al xchgl op1, op2 exchange Beispiele 14 7

8 Arithmetik: Addition und Subtraktion movl source, dest dest source addl source, dest dest source + dest subl source, dest dest source dest 15 movl source, dest ++, --, *, / dest source addl source, dest dest source + dest subl source, dest dest source dest (inc, dec, mul, div, ) Beispiele 16 8

9 movl source, dest Logik: AND dest source addl source, dest dest source + dest subl source, dest dest source dest andl source, dest dest source & dest 17 OR, XOR, NOT, NEG, SHL, SHR movl source, dest dest source addl source, dest dest source + dest subl source, dest dest source dest andl source, dest dest source & dest (or, xor, not, neg, shl, shr) 18 9

10 Programmflusskontrolle jmp label jump zuerst: testl op1, op1 EFLAGS wird beeinflusst cmpl op1, op2 Vergleiche (EFLAGS danach: je label jump if equal jne label jump if not equal jz label jump if zero jnz label jump if not zero jge label jump if greater or equal 19 Call und Return call label ESP ESP 4; mem[esp] EIP; EIP label; ret EIP mem[esp] ESP ESP

11 Push und Pop pushl source ESP ESP 4; mem[esp] source (push und pushl sind identisch) (pushb gibt es nicht) popl dest dest mem[esp] ESP ESP Load Effective Address leal source, dest dest Adresse von source Beispiele: leal label, %eax EAX label leal 4(%esp), %ecx ECX ESP+4 leal (%eax, %ebx), %ecx ECX EAX + EBX 22 11

12 Beispiele mit LEA 23 MOVZ: Move Zero Extended movzbw source, dest movzbl source, dest byte to word: Nur das niederwertige Byte von dest wird verändert byte to long: Nur das niederwertige Byte von dest wird verändert movzwl source, dest word to long: Nur das niederwertige Word von dest wird verändert 24 12

13 pushl %ebp movl %esp, %ebp subl $8, %esp ENTER und LEAVE Currently not used, since this instruction is too slow enter 8, 0 Prologue movl %ebp, %esp popl %ebp leave Epilogue 25 main1.c add.c Unterprogrammaufruf 26 13

14 gcc S main1.c main1_0.s Unterprogrammaufruf 27 main1_0.s add_1.s Return 28 14

15 main1_0.s add_1.s Return 29 main1_0.s add_1.s Return 30 15

16 main1_0.s add_1.s Return 31 main1_0.s add_1.s Return 32 16

17 What happens call label: push return address Decrease contents of stack pointer ESP by 4 Store current contents of program counter on stack, i.e. on memory location pointed to by register ESP Load program counter with the symbolic address (= label). ret: pop return address Load program counter with value from memory location pointed to by ESP Increase contents of ESP by 4 33 What if Return without Call The CPU does not know about this. There is always something on the stack. CPU will interpret this memory word as return address. If you are lucky, this jump leads to an address to which the operating system will not let your program go. and the operating system will flag a segmentation fault

18 The stack Stack is a memory section Stack is organised last in first out Typical operations for stack: Push & Pop CPU has a special register for operations on stack: Stack Pointer (ESP) ESP points to Top of Stack Usually stack grows from higher addresses to lower addresses Stack has NO fence; wherever ESP points, there is the Top of Stack ; even if no stack is used at all! 35 Watch out! When you pop a value from stack, the value is NOT removed from the stack; only the contents of ESP will be changed; nothing is taken from stack, but just copied

19 main000.s: So wäre es am einfachsten 37 main000.s: So wäre es am einfachsten Wir beginnen (wie immer) beim Label main

20 main000.s: So wäre es am einfachsten Wir beginnen (wie immer) beim Label main. Im ersten Befehl von main springen wir zum Label sub. 39 main000.s: So wäre es am einfachsten Wir beginnen (wie immer) beim Label main. Im ersten Befehl von main springen wir zum Label sub. Der Befehl call merkt sich die Rücksprungadresse am Stack

21 main000.s: So wäre es am einfachsten Wir beginnen (wie immer) beim Label main. Im ersten Befehl von main springen wir zum Label sub. Der Befehl call merkt sich die Rücksprungadresse am Stack. Der einzige Befehl des Unterprogramms sub ist ret. 41 main000.s: So wäre es am einfachsten Wir beginnen (wie immer) beim Label main. Im ersten Befehl von main springen wir zum Label sub. Der Befehl call merkt sich die Rücksprungadresse am Stack. Der einzige Befehl des Unterprogramms sub ist ret. ret holt sich die Rücksprungadresse vom Stack und macht nach dem Call-Befehl weiter

22 main000.s: So wäre es am einfachsten Wir beginnen (wie immer) beim Label main. Im ersten Befehl von main springen wir zum Label sub. Der Befehl call merkt sich die Rücksprungadresse am Stack. Der einzige Befehl des Unterprogramms sub ist ret. ret holt sich die Rücksprungadresse vom Stack und macht nach dem Call-Befehl weiter. (Dort steht wieder ein ret -Befehl.) 43 as a main000.s (Assemblierung) Maschinenprogramm mit 3 Befehlen 44 22

23 as a main000.s Maschinenprogramm mit 3 Befehlen x: x+4: X+8: x x+1 x+2 x+3 E C3 C3 Im Hauptspeicher 45 main00.s: Für das Debuggen fügen wir noch ein Label after_call call ein. Wir verändern damit das Maschinenprogramm nicht! 46 23

24 as a main00.s: Hier der Beweis Das Maschinenprogramm hat sich nicht verändert. 47 gcc g o main00 main00.s Assemblierung von main00.s (mit inkludierter Debug-Information für GDB) Assemblieren, GDB starten, Breakpoint setzen, Run. Wir befinden uns beim Label main, also ganz am Anfang

25 GDB-Session 49 GDB-Session info registers eip: Welcher Wert steht im Program Counter (Instruction Pointer) 50 25

26 info registers eip: Welcher Wert steht im Program Counter (Instruction Pointer) GDB-Session An dieser Adresse beginnt der Code: Das Label main steht also symbolisch für die Adresse 0x GDB-Session Was steht denn dort im Speicher 52 26

27 GDB-Session Was steht denn dort im Speicher Tatsächlich: Hier finden wir das Programm: 0x : E x : 00 C3 C3 90 0x C: Beachte die Reihenfolge! (Little Endian) 53 Welcher Wert steht im Stack Pointer GDB-Session 54 27

28 Welcher Wert steht im Stack Pointer GDB-Session Der Stack Pointer zeigt auf die Speicheradresse 0xbfc428ac 55 Welche Werte befinden sich denn derzeit ganz oben am Stack GDB-Session 56 28

29 Welche Werte befinden sich denn derzeit ganz oben am Stack GDB-Session Der Stack: Top of Stack 0xbfc428ac: b7 dd xbfc428b0: xbfc428b4: bf c GDB-Session step instruction Wir exekutieren eine Instruktion: Das ist call sub

30 GDB-Session step instruction Wir exekutieren eine Instruktion: Das ist call sub. Jetzt sind wir beim Label sub, also im Unterprogramm. tepoga Dort steht der Befehl ret. Im Assembler-Listing ist das die Zeile 10. Auch das wird angezeigt. 59 Welcher Wert steht denn jetzt im Instruction Pointer GDB-Session 60 30

31 Welcher Wert steht denn jetzt im Instruction Pointer GDB-Session Jetzt sind wir beim Label sub, also im Unterprogramm. Dort steht der Befehl ret. Im Assembler-Listing ist das die Zeile 10. Auch das wird angezeigt. 61 Welcher Wert steht denn jetzt im Instruction Pointer GDB-Session Wir sind also jetzt hier im Programm: Jetzt sind wir beim Label sub, also im Unterprogramm. Dort steht der Befehl ret. Im Assembler-Listing ist das die Zeile 10. Auch das wird angezeigt. 0x : E x : 00 C3 C3 90 0x C:

32 Welcher Wert steht denn jetzt im Stack Pointer GDB-Session 63 Welcher Wert steht denn jetzt im Stack Pointer GDB-Session Der Befehl call sub hat die Rücksprungadresse auf den Stack gepusht. Damit ist der Stack um 4 Bytes Gewachsen. Tatsächlich. Der Wert im Stack Pointer ist jetzt um 4 weniger als vorhin

33 Welche 12 Bytes finden wir denn jetzt ab Top of Stack GDB-Session 65 Welche 12 Bytes finden wir denn jetzt ab Top of Stack Top of Stack Der Stack: GDB-Session 0xbfc428a8: xbfc428ac: b7 dd xbfc428b0: xbfc428b4: bf c

34 Welche 12 Bytes finden wir denn jetzt ab Top of Stack Top of Stack Der Stack: GDB-Session 0xbfc428a8: xbfc428ac: b7 dd xbfc428b0: xbfc428b4: bf c Tatsächlich: Am Top of Stack finden wir jetzt die Rücksprungadresse. 0x : E x : 00 C3 C3 90 0x C: Wir exekutieren die einzige Instruktion des Unterprogramms: ret. GDB-Session 68 34

35 Wir exekutieren die einzige Instruktion des Unterprogramms: ret. GDB-Session Damit sind wir beim Label after_call angekommen. Also vom Unterprogramm sub zurück gekehrt. 69 Welcher Wert befindet sich denn nun im Instruction Pointer GDB-Session 70 35

36 Welcher Wert befindet sich denn nun im Instruction Pointer Wir sind wie nicht anders erwartet jetzt beim Label after_call. Also bei dieser Instruktion ret. Die Rücksprungadresse wurde also mit dem vorigen Befehl ret vom Stack zurück geholt. GDB-Session 0x : E x : 00 C3 C3 90 0x C: Sehen wir uns nochmals den Stack an. Auf welcher Adresse befindet sich denn der Top of Stack jetzt GDB-Session 72 36

37 Sehen wir uns nochmals den Stack an. Auf welcher Adresse befindet sich denn der Top of Stack jetzt GDB-Session ESP hat den Wert 0xbfc428ac. 73 examine 3 words Starting with address 0xbfc428a: ( w bedeutet im GDB 32-Bit) GDB-Session ESP hat den Wert 0xbfc428ac

38 examine 3 words starting with address 0xbfc428a: ( w bedeutet im GDB 32-Bit) Top of Stack Der Stack: GDB-Session 0xbfc428a8: xbfc428ac: b7 dd xbfc428b0: xbfc428b4: bf c ESP hat den Wert 0xbfc428ac. 75 examine 3 words starting with address 0xbfc428a: ( w bedeutet im GDB 32-Bit) Der vorige Rücksprungwert befindet sich noch immer im Speicher; er gehört Top of jedoch Stack nicht mehr zum Stack dazu. Der Stack: GDB-Session 0xbfc428a8: xbfc428ac: b7 dd xbfc428b0: xbfc428b4: bf c ESP hat den Wert 0xbfc428ac

39 Parameterübergabe: parameters000.s Vor dem Aufruf einer Funktion werden deren aktuelle Parameter auf den Stack gepusht. Nach der Rückkehr muss man am Stack aufräumen. 77 Parameterübergabe: parameters000.s In der Funktion selbst holen wir uns die aktuellen Parameter vom Stack

40 Jetzt mit printf : parameter00.s add2 printf Das Resultat wird in EAX übergeben. 79 gcc parameters00.s Versuch: Weglassen der Aufräumarbeiten! Was passiert 80 40

41 Was ist, wenn Funktionen Register brauchen Wer sichert und restauriert Das ist eine Frage der Konvention: Entweder das aufrufende Programm oder das aufgerufene. Doch eines ist klar: Die Werte werden am Stack gesichert und von dort wieder restauriert. 81 Und wo leben die lokalen Variablen einer Funktion Du ahnst es schon: Ebenfalls am Stack

42 main3.c Parameterübergabe 83 main3.c add3.c 84 42

43 gcc S main3.c main3.s Und hier geht es noch weiter 85 gcc S main3.c Und hier geht es noch weiter main3.s Den Wert der symbolischen Adressen b b und a a vom Speicher in EAX und EDX moven. Dann die Werte von EAX und EDX auf den Stack pushen und call von add. Schließlich den in EAX übergebenen Rückgabewert auf die symbolische Adresse c kopieren

44 gcc S add3.c add3.s Welche Rolle spielt EBP 87 Der Stack-Frame und der Base-Pointer Der Inhalt des Registers ESP definiert den Top of Stack. In EBP merken wir uns gleich nach jedem Funktionsaufruf die Adresse des Beginns des sogenannten Stack-Frame der soeben aufgerufenen Funktion. Dazu müssen wir vorher den alten Wert des EBP auf den Stack pushen. Wir haben also in jeder Funktion einen Referenzpunkt im Speicher. Mit diesem Wert in EBP können wir mit konstantem Offset auf übergebene Parameter oder auch auf lokale Variable dieser Funktion zugreifen. Vor dem Return-Befehl müssen wir dann den alten Wert in EBP restaurieren. Das ist ja der Beginn des Stack-Frame der aufrufenden Funktion. Die braucht diesen ja gleich wieder

45 gcc S add3.c add3.s 89 gcc S add3.c add3.s Sichere den alten Wert im Base-Pointer am Stack

46 gcc S add3.c add3.s Sichere den alten Wert im Base-Pointer am Stack. Definiere den neuen Base-Pointer-Wert für diese Funktion. 91 gcc S add3.c add3.s Sichere den alten Wert im Base-Pointer am Stack. Definiere den neuen Base-Pointer-Wert für diese Funktion. Jetzt können wir mit Konstantem Offset vom Wert in EBP auf die übergebenen Parameter zugreifen

47 gcc S add3.c add3.s Zum Schluss müssen wir vor der Rückkehr zur aufrufenden Funktion den alten Wert im Base Pointer resaurieren. 93 Und hier geht es noch weiter Der Stack in diesem Beispiel: Der Stack wächst nach oben hin zu kleineren Adressen. EBP EBP-Wert von main ESP 94 47

48 Und hier geht es noch weiter Der Stack in diesem Beispiel: Der Stack wächst nach oben hin zu kleineren Adressen. EBP Dar rüber reden wir später EBP-Wert von main ESP 95 Und hier geht es noch weiter Der Stack in diesem Beispiel: Der Stack wächst nach oben hin zu kleineren Adressen. EBP Dar rüber reden wir später EBP-Wert von main ESP 96 48

49 Und hier geht es noch weiter Der Stack in diesem Beispiel: Der Stack wächst nach oben hin zu kleineren Adressen. EBP Dar rüber reden wir später EBP-Wert von main Parameter b ESP 97 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. Dar rüber reden wir später EBP EBP-Wert von main Parameter a Parameter b ESP 98 49

50 Und hier geht es noch weiter Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. EBP Dar rüber reden wir später EBP-Wert von main Rücksprungadresse Parameter a Parameter b ESP 99 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. EBP-Wert von main Rücksprungadresse Parameter a Parameter b EBP EBP-Wert von main ESP

51 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. EBP-Wert von main Rücksprungadresse Parameter a Parameter b EBP EBP-Wert von add ESP 101 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. EBP-Wert von main Rücksprungadresse Parameter a Parameter b EBP EBP-Wert von add ESP

52 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. EBP-Wert von main Rücksprungadresse Parameter a Parameter b EBP EBP-Wert von add ESP 103 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. EBP-Wert von main Rücksprungadresse Parameter a Parameter b EBP EBP-Wert von main ESP

53 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. Wert-Wert von main Rücksprungadresse Parameter a Parameter b EBP ESP 105 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. Doch hier geht es noch weiter Dar rüber reden wir später Wert-Wert von main Rücksprungadresse Parameter a Parameter b ESP

54 Der Stack in diesem Beispiel Der Stack wächst nach oben hin zu kleineren Adressen. Doch hier geht es noch weiter Wert-Wert von main Rücksprungadresse Parameter a Parameter b ESP 107 Zurück zu main0.c:

55 main0.c main0.s 109 main0.s: Fast nur Prolog und Epilog Prolog Epilog

56 main0.s: main ist auch nur eine Funktion. Unmittelbar bevor die erste Instruktion von main ausgeführt wird, liegt also ganz oben am Stack die Rücksprungadresse. 111 main0.s: main ist auch nur eine Funktion. Unmittelbar bevor die erste Instruktion von main ausgeführt wird, liegt also ganz oben am Stack die Rücksprungadresse. Load Effective Address: ECX kriegt den Wert ESP + 4. Wir sichern also ESP+4 in ECX

57 main0.s: main ist auch nur eine Funktion. Unmittelbar bevor die erste Instruktion von main ausgeführt wird, liegt also ganz oben am Stack die Rücksprungadresse. Load Effective Address: ECX kriegt den Wert ESP + 4. Wir sichern also ESP+4 in ECX. Jetzt setzen wir den Wert in ESP auf die nächst kleinere 16-Byte-Grenze. Damit beginnt der Stack-Frame von main nicht irgendwo, sondern auf einer runden Adresse. 113 main0.s: Der Stack-Pointer zeigt also jetzt auf eine Adresse, welche im niederwertigen Byte 0x00 hat

58 main0.s: Der Stack-Pointer zeigt also jetzt auf eine Adresse, welche im niederwertigen Byte 0x00 hat. Das Datum auf der Adresse (ECX 4) ist genau die Rücksprungadresse von vorhin. Diese pushen wir jetzt auf den Stack. 115 main0.s: Der Stack-Pointer zeigt also jetzt auf eine Adresse, welche im niederwertigen Byte 0x00 hat. Das Datum auf der Adresse (ECX 4) ist genau die Rücksprungadresse von vorhin. Diese pushen wir jetzt auf den Stack. Und jetzt geht es normal Weiter: Zuerst den Base-Pointer- Wert der aufrufenden Funktion am Stack sichern

59 main0.s: Der Stack-Pointer zeigt also jetzt auf eine Adresse, welche im niederwertigen Byte 0x00 hat. Das Datum auf der Adresse (ECX 4) ist genau die Rücksprungadresse von vorhin. Diese pushen wir jetzt auf den Stack. Und jetzt geht es normal Weiter: Zuerst den Base-Pointer- Wert der aufrufenden Funktion am Stack sichern. Dann einen neuen Stack-Frame beginnen: In EBP ist jetzt also der Base-Pointer-Wert von main. 117 main0.s: Und dann noch den Wert Von ECX am Stack sichern. Den brauchen wir am Ende Von main ja wieder, um den Stack zurück zu bauen

60 main0.s: Und dann noch den Wert Von ECX am Stack sichern. Den brauchen wir am Ende Von main ja wieder, um den Stack zurück zu bauen. Das war der Prolog der Funktion main. Jetzt kommt der Kern von main. Dieser besteht hier ja lediglich aus return 0. Es besteht die Konvention, einfache Return-Werte im Register EAX zu übergeben. So auch hier. 119 main0.s: Und dann noch den Wert Von ECX am Stack sichern. Den brauchen wir am Ende Von main ja wieder, um den Stack zurück zu bauen. Das war der Prolog der Funktion main. Jetzt kommt der Kern von main. Dieser besteht hier ja lediglich aus return 0. Es besteht die Konvention, einfache Return-Werte im Register EAX zu übergeben. So auch hier. Jetzt kommt der Epilog von main

61 main0.s: Es geht jetzt verkehrt herum: Wir restaurieren den Wert von ECX. 121 main0.s: Es geht jetzt verkehrt herum: Wir restaurieren den Wert von ECX. Diesen Wert haben wir ja vor der Exekution des Kerns von main auf den Stack gepusht

62 main0.s: Es geht jetzt verkehrt herum: Wir restaurieren den Wert von ECX. Diesen Wert haben wir ja vor der Exekution des Kerns von main auf den Stack gepusht. Dann restaurieren wir den Base-Pointer-Wert der aufrufenden Funktion. 123 main0.s: Es geht jetzt verkehrt herum: Wir restaurieren den Wert von ECX. Diesen Wert haben wir ja vor der Exekution des Kerns von main auf den Stack gepusht. Dann restaurieren wir den Base-Pointer-Wert der aufrufenden Funktion. Auch diesen haben wir zuvor auf den Stack gepusht

63 main0.s: Schließlich setzen wir den Wert von ESP auf den ursprünglichen Wert; 125 main0.s: Schließlich setzen wir den Wert von ESP auf den ursprünglichen Wert; Das ist also der Wert, den ESP vor dem AND-Befehl gehabt hat. Mit dem AND- Befehl haben wir ESP ja so manipuliert, dass ESP auf eine runde Adresse gezeigt hat

64 main0.s: Schließlich setzen wir den Wert von ESP auf den ursprünglichen Wert; Das ist also der Wert, den ESP vor dem AND-Befehl gehabt hat. Mit dem AND- Befehl haben wir ESP ja so manipuliert, dass ESP auf eine runde Adresse gezeigt hat. Davor haben wir ja den Original-ESP-Wert in ECX gesichert. 127 main0.s: Schließlich setzen wir den Wert von ESP auf den ursprünglichen Wert; Das ist also der Wert, den ESP vor dem AND-Befehl gehabt hat. Mit dem AND- Befehl haben wir ESP ja so manipuliert, dass ESP auf eine runde Adresse gezeigt hat. Davor haben wir ja den Original-ESP-Wert in ECX gesichert. Und Return

65 Call by reference: main4.c 129 main4.c add4.c

66 gcc o main4 main4.c add4.c 131 Vergleich: main3.c versus main4.c main3.c: Call by value main4.c: Call by reference

67 Vergleich: main3.s versus main4.s main3.c: Call by value main4.c: Call by reference main3.s: main4.s: 133 add3.c versus add4.c

68 add3.c versus add4.c add3.s add4.s 135 Lokale Variable: main5.c

69 main5.c und add5.c 137 main4.s main5.s Die globale Variable c ist im Datensegment und deren Startadresse heißt symbolisch c Die lokale Variable c lebt am Stack auf Adresse EBP

70 add5.c 139 gcc- S add5.c add5.s

71 gcc- S add5.c add5.s Platz am Stack machen 141 gcc- S add5.c add5.s Platz am Stack machen Übergebene Parameter vom Stack nach EDX und EAX holen

72 gcc- S add5.c add5.s Platz am Stack machen: Übergebene Parameter vom Stack nach EDX und EAX holen Addition: Summe in EAX 143 gcc- S add5.c add5.s Platz am Stack machen: Übergebene Parameter vom Stack nach EDX und EAX holen Addition: Summe in EAX Summe auf den Stack ( result )

73 gcc- S add5.c add5.s Platz am Stack machen: Übergebene Parameter vom Stack nach EDX und EAX holen Addition: Summe in EAX Summe auf den Stack ( result ) Return: result nach EAX 145 gcc- S add5.c add5.s Platz am Stack machen: Übergebene Parameter vom Stack nach EDX und EAX holen Addition: Summe in EAX Summe auf den Stack ( result ) Return: result nach EAX und leave

74 Wo leben Daten Lokale Variable: (brauchen in der ausführbaren Datei keinen Platz) am Stack Uninitialisierte Variable: (brauchen in der ausführbaren Datei keinen Platz).comm Initialisierte Variable: (brauchen in der ausführbaren Datei Platz) Initialisierte Konstante: (brauchen in der ausführbaren Datei Platz).data.section.rodata 147 Beispiel main6.c

75 main6.s 149 a = 2; main6.s c = a + b; printf( )

U23 Assembler Workshop

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

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

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

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

Ü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

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

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

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

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

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

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

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

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

"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

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

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

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

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

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

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

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

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

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

Ü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

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

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

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

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

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

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

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

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

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

Ü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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ü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

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

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

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

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

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

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

Rechnernetze und -Organisation. Teil D3 2010, Ver 0.9 Michael Hutter Karl C. Posch

Rechnernetze und -Organisation. Teil D3 2010, Ver 0.9 Michael Hutter Karl C. Posch Rechnernetz R Teil D3 2010, Ver 0.9 Michael Hutter Karl C. Posch www.iaik.tugraz.at/content/teaching/bachelor_courses/rechnernetze_und_organisation/ 1 Contents of lecture TOY x86 Networks Hardware, Stack,

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

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

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

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

Übungen zur Vorlesung Systemsicherheit

Übungen zur Vorlesung Systemsicherheit Übungen zur Vorlesung Systemsicherheit Address Space Layout Randomization Tilo Müller, Reinhard Tartler, Michael Gernoth Lehrstuhl Informatik 1 + 4 19. Januar 2011 c (Lehrstuhl Informatik 1 + 4) Übungen

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

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

7 Ein einfacher CISC-Prozessor

7 Ein einfacher CISC-Prozessor 7 Ein einfacher CISC-Prozessor In diesem Kapitel wird ein einfacher Prozessor vorgestellt. Die Architektur, die wir implementieren, wurde von R. Bryant und D. O Hallaron entworfen und verwendet eine Untermenge

Mehr

Mikrocomputertechnik

Mikrocomputertechnik Assembler Aufgaben: Übersetzt mnemotechnische Abkürzungen (z.b. move, add...) in die Maschinenbefehle des Prozessors Ermöglicht die Vergabe von Namen für Speicheradressen (Label) Berechnet relative Adressedistanz

Mehr

EVANGELISCHES GESANGBUCH: AUSGABE FUR DIE EVANGELISCH-LUTHERISCHE LANDESKIRCHE SACHSEN. BLAU (GERMAN EDITION) FROM EVANGELISCHE VERLAGSAN

EVANGELISCHES GESANGBUCH: AUSGABE FUR DIE EVANGELISCH-LUTHERISCHE LANDESKIRCHE SACHSEN. BLAU (GERMAN EDITION) FROM EVANGELISCHE VERLAGSAN EVANGELISCHES GESANGBUCH: AUSGABE FUR DIE EVANGELISCH-LUTHERISCHE LANDESKIRCHE SACHSEN. BLAU (GERMAN EDITION) FROM EVANGELISCHE VERLAGSAN DOWNLOAD EBOOK : EVANGELISCHES GESANGBUCH: AUSGABE FUR DIE EVANGELISCH-LUTHERISCHE

Mehr