Forum: Mikrocontroller und Digitale Elektronik Schlüßelwort using


von Eugen R. (Gast)


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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das ist eine compilerspezifische Erweiterung, die im Handbuch des
betreffenden Compilers (hier wohl irgendeiner für MCS-51) beschrieben
sein sollte.
Normales C ist es jedenfalls nicht.

Schlüssel wird wie Schüssel übrigens schon immer mit Doppel-s
geschrieben, das ü wird ja auch nicht gedehnt gesprochen.

von Jörg B. (joerg_b)


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?

von Peter D. (peda)


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

von Jörg B. (joerg_b)


Lesenswert?

@Peter: dir sei gedankt ,,, wieder was dazugelernt ;-)

von Unbekannter (Gast)


Lesenswert?

Welcher §$!# hat 'using' als Compilererweiterung beschlossen?

"using" ist nämlich ein C++ Schlüsselwort...

von Tobi H. (tobi-) Benutzerseite


Lesenswert?

Das ist bekannt, aber in C++ steht es an einer absolut anderen Stelle,
also trotzdem gut zu unterscheiden

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.