Hauptspeicherbelegung der Daten in den Bereichen P

program counter, stack pointer, static base, frame pointer an einem C++ Beispiel



Hauptspeicherbelegung
Im Folgenden wird erläutert wie Programmdaten in den Hauptspeicherbereichen >>program counter<<, >>stack pointer<<, >>static base<< und >>frame pointer<< abgelegt werden.




int aFunction (int param); //Funktionsprototyp
int global = 1;
 
 
int main ()
{
  int local = 1;
  local = aFunction(local); //local wird 2
  global = aFunction(local); //global wird 3
  local = aFunction(global); //local wird 4
  global = aFunction(global);//global wird 6
 
  return 0;
}
 
 
// Funktionsdefinition
int aFunction (int param)
{
  int local = param + 1;
  global = param + 2;
 
  return local;
}
Der Prozessor merkt sich
* Die Adresse des aktuellen Befehls im >>Program Counter<< PC
* Das aktuelle Ende des Stack-Segments im >>Stack Pointer<< SP
* Globale Daten relativ zur >>Static Base<< SB
* Lokale Daten relativ zum >>Frame Pointer<< FP


Ein Funktions-Aufruf benutzt den Stack zum
* Reservieren von Platz für den Rückgabewert (_tmp)
* Speichern von Argumenten (param)
* Speichern von altem PC und FP
* Reservieren von Platz Tür die lokalen Variablen (local)