Eine Verständnis Frage

01/03/2014 00:48 Slice*>#1
Hallo,
da ich gerade Assembler (Turbo Assembler) lerne, habe ich eine Verständnis Frage. Wo befindet sich der Stack genau ? Im RAM oder in einem Bereich der CPU und wo befinden sich meine Variablen die ich im Codesegment initialisiere ?

Freundliche Grüße,

Slice*>
01/03/2014 01:24 snow#2
Der Stack dürfte ein Bereich im RAM sein, der dem jeweiligen Kontext vom Betriebssystem zugewiesen wird.

Die Variablen befinden sich auf dem Stack, ich weiß nicht, ob Turbo Assembler das jetzt anders regelt aber im Normalfall wird zu Beginn der Prozedur der benötigte Speicher für die Variablen auf dem Stack reserviert (das ist die sub esp, xx Anweisung, der Stack Pointer wird dann "nach oben geschoben" [schwer zu erklären, jedenfalls wächst der ja ins negative]) und am Ende wird der Stack wiederhergestellt (add esp, xx) bzw. je nach Calling Convention auch nach dem Call.
Das ist auch der Grund, weshalb du keinen Zeiger auf eine lokale Variable zurückgeben solltest, der Inhalt kann danach wieder gelöscht sein. Und der Grund weshalb man besser keine Arrays, deren Größe erst zur Laufzeit bekannt ist, auf dem Stack haben sollte.
01/03/2014 01:56 Dr. Coxxy#3
Quote:
Originally Posted by snow911 View Post
Und der Grund weshalb man besser keine Arrays, deren Größe erst zur Laufzeit bekannt ist, auf dem Stack haben sollte.
was hat denn das miteinander zu tun?