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 - Inline-Assembler

Referenz-Navigation

 

Unter Inline Assembly versteht man die direkte Einbindung von Maschinenspracheprogrammen in den Quellcode.

Während das unter QBASIC nur umständlich über Opcodes möglich war, ist es in FreeBASIC dank des Befehls ASM kein Problem, Assembler-Codes direkt einzubinden:

ASM mov  eax, ebx
Asm imul eax, ecx

oder

ASM
 mov  eax, ebx
 imul eax, ecx
End Asm

Auch der Zugriff auf Variablen ist "ohne Tricks" möglich; ihre Bezeichner sind auch innerhalb eines ASM-Blocks verfügbar.
Wird ein ASM-Block innerhalb einer FUNCTION verwendet, kann das Symbol FUNCTION als Pointer auf die Adresse verwendet werden, an der das Ergebnis der Funktion gespeichert werden soll.

Function Mal(ByVal x As Integer, ByVal y As Integer) As Integer
  Asm
    mov  eax, [x] 'hole x nach eax
    imul eax, [y] 'Multipliziere mit y
    mov [Function], eax 'Ergebnis als Rückgabewert
  End Asm
End Function

Dim As Integer a = 45, b = 54
Print Mal(a, b)

Syntax
FreeBASIC verwendet den GCC Assembler AS, der im bin-Verzeichnis als AS.EXE enthalten ist.
Der Assembler verwendet die einfache Intel-Syntax wie die bekannteren x86 - Assembler MASM, TASM, NASM, YASM und FASM.
Wie in BASIC-Quelltexten wird das Hochkomma als Zeichen für nachfolgenden Kommentar gesetzt, nicht das ";" Zeichen wie sonst in Assemblerquelltexten üblich.
Der Assembler ist in Bezug auf Labelnamen 'case sensitive', d.h. Sie müssen die Groß- und Kleinschreibung beachten.

Registerbezeichnungen

Kritische Assembleranweisungen
Je nach Betriebssystem oder Prozessortyp sind einige Assembleranweisungen nicht anwendbar. Im günstigsten Fall werden sie ignoriert oder mit einem Systemerror angezeigt, aber auch ein Systemcrash ist möglich.
Diese kritischen Assembleranweisungen für jedes Betriebssystem oder unterschiedliche Prozessortypen im Einzelfall aufzulisten ist zu kompliziert.
Wer in Assembler arbeiten möchte, sollte die Einschränkungen der Hardware und des Betriebssystems, für das er Assembleranweisungen schreiben möchte, kennen.


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 05.08.2007 von RedakteurVolta angelegt.
  • Die aktuellste Version wurde am 25.02.2012 von RedakteurVolta gespeichert.
  Versionen Versionen