Atari Logo
Atari Computer

Hauptseite -
Welches System? -
Hardware -
Software -
Emulatoren -
Internet
MausNet
Programmieren
Verweise
Über

C

Home Inhaltsverzeichnis Priorität der Operatoren Compilerschalter/-optionen

D Stack

Jedes Programm benutzt einen Speicher als Stack. Ein Stack ist ein Stapel (last in first out), d.h. das, was zuletzt auf den Stack getan wird, wird auch zuerst wieder vom Stack genommen. Dieser Stack wird vom Programm dazu benutzt, die Parameter für einen Funktionsaufruf und auch lokale Variablen aufzunehmen. Der Stack wächst von großen Adressen zu kleinen Adressen.

Ein C Programm legt bei einem Funktionsaufruf üblicherweise die Parameter beginnend von rechts der Reihe nach auf den Stack. Hat sich die Funktion beendet, entfernt der Aufrufer die Parameter vom Stack. TC und PC benutzen in der Grundeinstellung allerdings Register für die Parameterübergabe. Die Übergabe über den Stack kann auch mit dem Schlüsselwort cdecl erzwungen werden.

Ein Pascal Programm legt die Parameter von links nach rechts auf den Stack und die aufgerufenen Funktion entfernt die Parameter vom Stack. Diese Art der Parameterübergabe kann mit dem Schlüsselwort pdecl erzwungen werden.

Die cdecl und pdecl werden zwischen dem Returnwert und dem Funktionsnamen angegeben.

int cdecl Test(int i)
{
   return i;
}

Mit diesem Wissen kann nun auch die erforderliche Stackgröße abgeschätzt werden. Für jede Funktion, die in der Aufrufhierarchie eine Ebene tiefer geht, muß der Platz, den die Parameter und die lokalen auto Variablen dieser Funktion belegen, addiert werden. Bei einer Rekursion wäre dies also jeder Aufruf von sich selbst. Für Funktionen, die nacheinander aus der gleichen Funktion aufgerufen werden, darf der Speicherverbrauch natürlich nicht aufsummiert werden sondern beide Aufrufe müssen getrennt betrachtet werden und das Maximum ist für eine Abschätzung relevant.


Home Inhaltsverzeichnis Priorität der Operatoren Compilerschalter/-optionen


Best viewed with any browser English version not yet available.

Änderungen und Irrtümer vorbehalten. Letzte Änderung:
14 September 2001.
Home - Mail an den Webmaster - Impressum