Forum: Compiler & IDEs Lokalen Variablen beim Interrupt


von Foxi (Gast)


Lesenswert?

Hallo,
ich habe eine Verständnisfrage.

Wie werden lokale Variablen beim Interruptaufruf behandelt?

In einer Funktion außerhalb der Interruptbearbeitung wird der 
Speicherplatz der lokalen Variablen ja nach Abarbeitung der Funktion 
wieder freigegeben und ggf. für die nächste Funktion genutzt. Wenn ich 
jetzt die gleichen Funktionen bei der Interruptbearbeitung aufrufe, dann 
muss ja der Speicherbereich der lokalen Variablen ständig reserviert 
bleiben, da ich vorweg oft nicht weiß, wann er benötigt wird. Ist diese 
Überlegung so richtig? Muss ich bei Compilern diesem Problem besondere 
Beachtung schenken oder kann ich davon ausgehen, dass sie es i.A. 
richtig machen?

von Peter II (Gast)


Lesenswert?

Foxi schrieb:
> Ist diese
> Überlegung so richtig?

nein. Denn diese Variablen werden auf dem STack angelegt und dort ist 
immer Platz. Am ende der funtion wird der Stack wieder aufgeräumt und 
alles ist gut.

von (prx) A. K. (prx)


Lesenswert?

Foxi schrieb:
> In einer Funktion außerhalb der Interruptbearbeitung wird der
> Speicherplatz der lokalen Variablen ja nach Abarbeitung der Funktion
> wieder freigegeben und ggf. für die nächste Funktion genutzt.

Nicht zwangsläufig. Bei 8051ern und Microchips 8-Bittern muss das 
beispielsweise nicht so sein.

> Muss ich bei Compilern diesem Problem besondere Beachtung schenken

Bei solchen Controllern/Compilern infolgedessen ja (=> reentrant).

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.