Referenz - 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.
- 'SubName' bzw. 'FunctionName' ist der Bezeichner, unter dem die
SUB/
FUNCTION aufgerufen wird. - 'Konvention' enthält die Aufrufkonventionen wie
CDECL,
PASCAL und
STDCALL. - 'Parameterliste' gibt die Parameter an, die an das Unterprogramm übergeben werden sollen.
- 'Typ' ist der Datentyp des übergebenen Parameters; siehe
Datentypen. Auch
UDTs können verwendet werden.
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.
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
| Zusätzliche Informationen und Funktionen | ||||
|---|---|---|---|---|
|
||||




FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!
Versionen