mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Schlüßelwort using


Autor: Eugen R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg Bar* (joerg_b)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Bar* (joerg_b)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter: dir sei gedankt ,,, wieder was dazugelernt ;-)

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welcher §$!# hat 'using' als Compilererweiterung beschlossen?

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

Autor: Tobi H. (tobi-) Benutzerseite
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.