Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - NAKED

Referenz-Navigation

 

Syntax:

Sub SubName Naked [Konvention] ([Parameterliste])
    Assemblerbefehle
End Sub

Function FunctionName Naked [Konvention] ([Parameterliste]) As Typ
    Assemblerbefehle
End Function

Typ: Schlüsselwort
Kategorie: Deklaration

NAKED erstellt Funktionen ohne Handlingcode.

NAKED ermöglicht dem Programmierer, ein Unterprogramm ohne Handlingcode zu erstellen. Das ist vor allem dann nützlich, wenn schnelle Funktionen in ASM benötigt werden.
NAKED ist mit Befehlsreferenzeintrag-gen gcc nicht kompatibel, da GCC solche Funktionen nicht kennt, und deswegen nicht verwenden kann.
Den Aufrufkonventionen des C-ABI entsprechend, dürfen die Register EAX, ECX und EDX beliebig verändert werden - alle anderen Register dürfen entweder nicht verändert werden oder müssen gesichert und am Ende des NAKED Unterprogramms auf ihren ursprünglichen Wert zurückgesetzt werden.

Beispiel:

' Naked Cdecl Function
Function addieren Naked Cdecl (ByVal a As Integer, ByVal b As Integer) As Integer
    Asm
        mov eax,[esp+4] ' a
        add eax,[esp+8] ' + b
        ret                       ' gibt das Ergebnis in eax zurück
    End Asm
End Function

' Naked StdCall Function
Function addieren2 Naked (ByVal a As Integer, ByVal b As Integer) As Integer
    Asm
        mov eax,[esp+4]  ' a
        add eax,[esp+8]  ' + b
        ret 8                        ' 8 Byte auf dem Stack freigeben, Ergebnis in eax
    End Asm
End Function

Print addieren(3, 5)
Print addieren2(7, 9)
sleep


Plattformbedingte Unterschiede:
Die Standardaufrufkonvention kann von der verwendeten Plattform abhängen. Zusätzlich hierzu verhält sich BefehlsreferenzeintragSTDCALL nicht auf allen Plattformen gleich - unter Linux verhält es sich wie BefehlsreferenzeintragCDECL. Dadurch könnte eine Prüfung der vordefinierten Symbole (wie Befehlsreferenzeintrag__FB_WIN32__) nötig sein, um den Code speziell auf die verwendete Plattform auszurichten.

Unterschiede zu QB: neu in FreeBASIC

Unterschiede zu früheren Versionen von FreeBASIC:

Siehe auch:
BefehlsreferenzeintragASM, BefehlsreferenzeintragFUNCTION, BefehlsreferenzeintragSUB, BefehlsreferenzeintragCDECL, BefehlsreferenzeintragPASCAL, BefehlsreferenzeintragSTDCALL, BefehlsreferenzeintragProzeduren


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 16.01.2010 von RedakteurMOD angelegt.
  • Die aktuellste Version wurde am 27.12.2012 von Redakteurnemored gespeichert.
  Versionen Versionen