der Schdägg

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

der Schdägg
Howdy!

Ich waer sehr dankbar wenn mir jemand das mit dem Stack etwas besser erklaeren koennte als die Folien es tun: In welcher Reihenfolge kommt da bitte was auf den Stack, falls es den sowas wie eine Reihenfolge gibt, was ich stark annehme (?) ??? Wie siehts speziell fuer die Aufgabe 4 von der Klausur 12/02/2001 aus?
bitte um rat, sonst geh ich uebermorgen echt unter


ein stack ist ein stack ist ein stack :wink: scnr

UPDATE du meinst aufgabe 3?!


nein. bei aufgabe 4 wird auch was aufm stack gemacht und ich moecht das etz kapieren. aber es leuchtet mir nich ein und deshalb krieg ich den b) teil nich fertig.


das kapier ich nicht. in der klausur 12/02/2001 ist aufgabe4 über steuerwerke, und da wird ein stack nicht erwähnt bzw. die aufgabe ist für uns eh nicht relevant.


tschuldigung, ich sehe die haben sich vertippt: es ist eigentlich (aber das steht erst auf der seite danach): 12.2.2002


vor einem call müssen die parameter auf den stack, und zwar von hinten nach vorne. also ist

4(%esp) id
8(%esp) left
12(%esp) right

aber vorsicht, denn der code verwendet nicht den framepointer, und es werden zwei lokale 4byte variablen gebraucht. also anpassung auf

12(%esp) id
16(%esp) left
20(%esp) right

und dann pushen die noch %ebx drauf. also

16(%esp) id
20(%esp) left
24(%esp) right

stackus framus
[font=Courier]
24(%esp) right
20(%esp) left
16(%esp) id
12(%esp) return address
8(%esp) %ebx
4(%esp) middle
%esp res
[/font]


öhm, ok. ist das nun grundsaetzlich so oder nur hier? ich wuerd das gern verstehen, nur fuer den fall

anmerkung: bis zu dem punkt wo du meintest, dass sie den %ebx noch draufhaun, hab ichs eigentlich verstanden… aber irgendwie dachte ich beim stack gaebe es sowas wie ne einfuegereihenfolge …


dass die parameter in C rückwärts uebergeben werden, ist in C halt so konvention.
du musst das eigentlich nicht berücksichtigen, doch wenn du z.b. von C aus fortran object code aufrufst, dann hast du erstmal ein problem, denn bei fortran ist die aufrufkonvention genau andersrum.

lesenswert (thx@Erik)
http://www.a-m-i.de/tips/stack/stack.php

ad anmerkung:
der push befehl verändert den stackpointer, und zwar macht ein pushl ein addl $4, %esp bzw. implizit mit der +() notation, also z.b.
pushl %ebx = movl %ebx, +(%esp)
da sich der stackpointer ändert, ändern sich alle zum stackpointer relative addressen!
genau das ist ja der punkt des framepointers. der wird am anfang einmal mit dem %esp initialisiert,
und dann kann auf dem stack passieren was will, das wird den base pointer nicht beeinflussen.

der stack ist ein stack ist ein stack. wenn du irgendwie an den punkt kommst, an dem der stack sich nicht wie ein stack verhält, dann hast du noch nen denkfehler :smiley:


ah, der link war echt lecker! danke!!! :heart: dann mach ich mich da morgen da nochmal rann.


offtopic:
http://www.a-m-i.de/index.php
die startseite schon mal angeschaut?


verzeihung, hat sich da wer verschireben?? sollte das vielleicht Alexandra Mueller heissen?! :smiley: :smiley: :smiley: prrruuuuustttt


dazu sag ich nur http://www6.informatik.uni-erlangen.de/DE/people/udo/udo-foto-big.jpg :smiley:


heiliger … wasn das??? eine von diesen FitnessStudio Tussis? Irgendwie kann man sich den auch in nem muskuloesen Frauenbody vorstellen so wie in dem Aerzte Video sing: manchmal aber nur manchmal


pushl “hä”
call question
addl $4, %esp


zum glück hast du deinen sp2 schein schon :smiley:http://www6.informatik.uni-erlangen.de/DE/people/udo/


Objektorientierte Programminerung … wasn das ggg

Man achte auf die Schareibweydse loool

auf dem foto schaut sie ja noch bessa aus ggg ok, schuldigung, ich versuch schon aufzuhoeren looooooool


Wirklich sehr, sehr lustig. Ein Tippfehler.


Ihr seid ja so gemein :moody:


…und ich dachte immer, bei x86-Prozessoren ist

pushl %ebx = movl %ebx, -(%esp)

denn mit

addl $4, %esp

gibt man den Speicher ja wieder frei.

Na so kann man sich irren :wink: