Schlüßelwort using

Gast #312704
Lesenswert?

Hallo, habe einen AT89C51CC03 und ein Beispielprogramm. Hier gibt es das
Schlüßelwort "using". Das Schlüßelwort steht hinter manchen
Funktionen. Das sieht dann etwa so aus:

void _Init(int number) using 3
{...}

Was ich auch schon gesehen habe ist etwa sowas:
void _Init1(int count) reentrant
{...}
Was macht using, was reentrant?

Für Eure Mühe vielen Dank im voraus

Grüße pontonfrog
#312706
Lesenswert?

"using" kenne ich von SDCC und besagt, welche Prioritätsebene ein
Interrupt bekommen soll (siehe dazu in nem C51 Datenblatt)

"...) using 3" besagt also, daß der INT in die Ebene 3 gesetzt werden
soll.

Zu reentrant weiß ich auch nix, ausser daß ich das auch schonmal
irgendwo gesehen habe ... mal den goockel dazu befragt?
#312707
Lesenswert?

"using" ist nur was für Profis und kann manchmal Interrupts etwas
beschleunigen.

"using 3" bedeutet, daß die gesamte Registerbank 3 für Interrutps
reserviert wird und nicht mehr als SRAM zur Verfügung steht. Blöd also,
wenn der Interrupt nur 3 Register von den 8 benutzt.

"using 3" bedeutet aber auch, daß sich der Compiler nicht länger um
die Registersicherung kümmert.

Schreibt man also "using 3" in 2 Interrupthandler mit verschiedener
Priorität und die treten dann gleichzeitig auf, krachts gewaltig. Der
eine zieht dem anderen die Register unterm Hintern weg.

Also "using" unbedingt weglassen, wenn man nicht genau weiß, was man
damit anrichtet.


"reentrant" bedeutet, daß mehrere Instanzen einer Funktion laufen
können, z.B. als rekursive Funktion.
Natürlich ist dadurch eine reentrante Funktion langsamer und benötigt
mehr Stack.


Peter

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