WikiDer > FreeBASIC

FreeBASIC ist eine kostenlose und Open Source BASICCompiler. Das Syntax von FreeBASIC ist anderen Formen von . so ähnlich wie möglich BASIC basiert aber hauptsächlich auf der Syntax von QBasic. Derzeit kann FreeBASIC Programme für kompilieren DOS, Xbox, Fenster und Linux. Derzeit wird daran gearbeitet, FreeBASIC auf noch mehr Plattformen zu portieren. Vorerst ist die Compiler aus fast 90.000 Codezeilen, die vollständig in FreeBASIC selbst geschrieben wurden.
Compiler-Funktionen
Das Back-End des FreeBASIC-Compilers verwendet die GNU Binutils, um Quellcode in Konsole zu konvertieren und GUI Anwendungen. Es ist möglich, sowohl statisch und/oder dynamisch verknüpfte C (Programmiersprache) Bibliotheken erstellen und verknüpfen. FreeBASIC bietet auch eingeschränkte Unterstützung für das Verknüpfen C Bibliotheken. Der Compiler ist sowohl in a 32-Bit wie ein 64-Bit Performance.
Der von FreeBASIC generierte Code kann daher in vielen anderen Programmierumgebungen verwendet werden. Darüber hinaus unterstützt FreeBASIC einen Präprozessor in C (Programmiersprache) Stil mit Unterstützung für Inline-Makros, bedingte Kompilierung und Dateieinbindung.
Durch die Verwendung weniger Compiler-Flags ist es möglich, verschiedene Back-End-Compiler zu verwenden. Es besteht die Möglichkeit, Assemblersprache, GNU-Compiler-Sammlung C-Compiler und LLVM-Backend. Die gesamte FreeBASIC-Standardbibliothek ist für alle Back-End-Optionen verfügbar, jedoch können die endgültige Codeleistung und das Format der generierten ausführbaren Datei variieren.
Assemblersprache Unterstützung ist in FreeBASIC verfügbar, wenn ein Anweisungsblock mit einer ASM-Anweisung geöffnet wird.
Funktion add_five(Byval Nummer Achse Integer) Achse Integer
asm
mov EAX, [Nummer]
EAX hinzufügen, 5
bewegen [FUNKTION], EAX
Ende Asm
Endfunktion
Unabhängig vom gewählten Backend-Compiler ist die Assemblersprache in dem Intel-Syntax geschrieben werden. FreeBASIC konvertiert es in die richtige Assemblersprache für das fragliche Backend.
Syntax
Ursprünglich wurde FreeBASIC als direktes Syntax-Äquivalent zu QuickBasic (QBasic [ein Interpreter] in DOS5) konzipiert, im Laufe der Zeit wurde der Compiler jedoch um mehrere moderne Features erweitert. Einige dieser Funktionen sind:
- Objekte (viele objektorientierte Elemente sind implementiert)
- Methoden
- Konstrukteure
- dynamische Speicherzuweisung
- Eigenschaften
- Bedienerüberlastung
- Funktionsüberlastung
- Namensräume
- Zeiger
Außerdem können, genau wie in QuickBasic, mehrere Anweisungen in eine Zeile geschrieben werden, sofern sie durch einen Doppelpunkt getrennt werden. Tun : a = 1 : wenn a > 10 dann : a = -10 : gehen
FreeBASIC Dialekte
Um einige Kompatibilität mit den ursprünglichen QuickBasic- und frühen FreeBASIC-Dialekten beizubehalten, ist eine Option integriert worden, um zwischen 3 Dialekten zu wechseln. Die damals noch nicht verfügbaren modernen Compiler-Erweiterungen können in vielen Fällen noch verwendet werden, jedoch mit einer älteren Syntax vermischt.
- Standarddialekt: (moderner Dialekt mit allen modernen Funktionen verfügbar, veraltete Syntaxelemente sind hier nicht erlaubt)
- FB-lite Dialekt: (fast alle modernen objektorientierten Optionen sind verfügbar, jedoch in diesem Dialekt veraltet BASIC Aussagen wie
GOSUB/RÜCKKEHRunterstützte und nummerierte Zeilenbeschriftungen) - QB-Dialekt: (versucht, die volle Q(uick)Basic-Funktionalität in einer modernen Umgebung so gut wie möglich nachzuahmen. alt MS-DOS QuickBasic-Quellcode wird oft ohne Änderung kompiliert)
Grafikbibliothek
FreeBASIC hat eine eingebaute Grafikbibliothek namens FBgfx. FBgfx hat alle Funktionen, die auch in QuickBasic vorhanden waren, um Farbtiefenunterstützung auf bis zu erweitert 32-Bit (24-, 16-, 8-Bit sind ebenfalls verfügbar).
Die Bibliothek verfügt auch über einige moderne Funktionen, um die höhere Farbtiefe, das Umblättern von Seiten, die Fensterverwaltung und andere Peripheriegeräte (Tastatur, Joystick und Maus) besser zu handhaben. Das Backend der Bibliothek kann sowohl mit GDI als auch mit OpenGL (Linux) und Microsoft DirectX. Die Bibliothek ist nicht hardwarebeschleunigt.