NAKED

FreeBASIC-Referenz » Alphabetische Befehlsreferenz » N » NAKED

Syntax:

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

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

Typ: Schlüsselwort
Kategorie: Programmorganisation

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 bis einschließlich FreeBASIC 0.23 nicht kompatibel mit der Compiler-Option -exx. Die Funktionsaufrufe der exx-Option benötigen den fehlenden Handlingcode.
Des Weiteren ist NAKED mit -gen gcc nicht kompatibel, da GCC solche Funktionen nicht kennt, und deswegen nicht verwenden kann.

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 StdCall nicht auf allen Plattformen gleich - unter Linux funktioniert es nicht, dort besser CDECL benutzen. Dadurch könnte eine Prüfung der vordefinierten Symbole (wie __FB_WIN32__) nötig sein und der Code speziell darauf ausgerichtet werden müssen.

Unterschiede zu QB: neu in FreeBASIC

Unterschiede zu früheren Versionen von FreeBASIC: existiert seit FreeBASIC v0.21

Siehe auch:
ASM, FUNCTION, SUB, CDECL, PASCAL, STDCALL