Storage Class overlay

OP #397140
Lesenswert?
• ▲
▼
Hallo!


Ich hatte in diesem Thread [1] schon einmal meine Problematik
angesprochen, dass ich beim Compilieren meiner EFSL-Portierung für den
PIC18F6680 immer eine Fehlermeldung bekomme, die mich darauf hinweist,
dass der Stack Frame zu groß wäre.
Ich hatte dann erst versucht mit der Compileroption -sco des MCC18 alle
lokalen Variablen als overlay zu deklarieren, aber finde dieses Vorgehen
etwas brachial. Ich meine dadurch wird jede Schleifen- und Hilfsvariable
als static deklariert. Nun habe ich versucht per Hand an den Stellen, wo
große Datenobjekte lokal angelegt werden die Variablen als overlay zu
deklarieren. Mein Frage ist nun: Findet der Linker selber heraus, für
welche Variablen er den gleichen Speicherbereich verwenden kann, oder
muss man das alles selber überpüfen? Wenn ich also in einer Funktion
eine Variable vom Typ FileLocation anlege und aus dieser Funktion eine
weitere Funktion aufrufe, die ebenfalls eine solche lokale Variable
anlegt, merkt der Linker dann, wenn beide Variablen als overlay
deklariert sind, dass er für diese nicht den gleichen Speicherbereich
verwenden kann? Oder verwendet der Linker pauschal für alle Variablen
des gleichen Typs den gleichen Speicherbereich, vorrausgesetzt die
Variablen befinden sich in unterschiedlichen Funktionen?



Minimalbeispiel zu der oben erläuterten Situation:

int func1(void)
{
    overlay FileLocation loc;
    func2();
}

int func2(void)
{
    overlay FileLocation loc;
}

Vielen Dank im Vorraus für eure antworten,

Martin


[1] http://www.mikrocontroller.net/forum/read-1-405867.html

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren