Announcement

Collapse
No announcement yet.

Frage zu >__stdcall<, >__fastcall< und Befehlen dieser Art.

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Frage zu >__stdcall<, >__fastcall< und Befehlen dieser Art.

    Hallo,

    ich habe vor kurzem, nachdem ich diese ganzen C++ Grundlagen unter Dos gelernt habe, damit angefangen mit C++ unter Windows zu programmieren. Jetzt habe ich einige Fragen zu >__stdcall<, >__fastcall< und Befehlen dieser Art.

    Hier die Fragen:

    1. Weshalb genau sind diese Befehle unter Windows notwendig, unter Dos brauchte man sie schließlich ja auch nicht?

    2. Sind diese Befehle im Ansi-Standard enthalten oder wurden sie nur von Microsoft, Borland oder jemand/etwas anderem erfunden, um ein einigermaßen leichtes programmieren unter Windows zuzulassen.

    Ich hoffe, dass ihr mir helfen könnt.
    N.B.

  • #2
    Also Nicolas, mittels "__fastcall" wird der Compiler angewiesen, die Parameter (falls möglich) über die Register des Prozessors bei Auffruf einer Funktion zu übergeben. Dies ist z.B. bei Integer oder Char Werten möglich, aber auch Zeiger (sind ja 32 Bit breit) können über die Register übergeben werden. BCB ruft wenn möglich alle Funktionen über "__fastcall" auf -> das beschleunigt das ganze! Bei "__stdcall" geht es um den Stack, außer bei "__fastcall" werden die Parameter bei einem Funktionsaufruf über den Stack eines Programmes übergeben. Die Parameter werden der Reihe nach auf den Stack gebracht und von der aufgerufenen Funktion von dort wieder runtergeholt. Die Definition "__stdcall" legt nun fest in welcher Richtung die Parameter auf den Stack gebracht werden (letztes Argument zuerst oder erstes Argument zuerst), wer den Stack nach dem Funktionsaufruf aufräumt (aufrufende bzw. aufgerufene Funktion), die Namensgebung (ohne oder mit Unterstrich "_" -> siehe Assembler). Aber am besten ist, Du siehst Dir die Beschreibung von "__stdcall" und "__fastcall" in der MSDN Library von Microsoft an, da steht das ganze recht genau und ausführlich beschrieben.

    So, ich hoffe ich hab Dir ein wenig helfen können. MFG Dani

    Comment

    Working...
    X