FreeBASIC

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken
Logo
Screenshot

FreeBASIC is een gratis en open source BASIC compiler. De syntaxis van FreeBASIC lijkt zo veel mogelijk op andere vormen van BASIC maar is vooral gebaseerd op de syntaxis van QBasic. Op het moment kan FreeBASIC programma's compileren voor DOS, Xbox, Windows en Linux. Men is momenteel bezig om FreeBASIC naar nog meer platformen over te zetten. Voorlopig bestaat de compiler uit bijna 90.000 regels code, helemaal geschreven in FreeBASIC zelf.

Compiler eigenschappen[bewerken]

Het back-end van de FreeBASIC compiler maar gebruik van de GNU Binutils om bron-code om te zetten in console en GUI applicaties. Het is mogelijk om zowel statisch en/of dynamisch gelinkte C (programmeertaal) bibliotheken te creëren en te linken. FreeBASIC geeft in beperkte mate ook ondersteuning tot het linken van C++ bibliotheken. De compiler is beschikbaar in zowel een 32 bit en 64 bit uitvoering.

De code die gegenereerd wordt door FreeBASIC kan daardoor in veel andere programmeeromgevingen ingezet worden. Verder ondersteund FreeBASIC een pre-processor in C (programmeertaal) stijl met ondersteuning voor inline macro’s, conditioneel compileren en het includeren van bestanden.

Door enkele compiler vlaggen te gebruiken is het mogelijk om verschillende back-end compilers in te zetten. Er is een mogelijkheid om een Assembleertaal, GNU Compiler Collection C compiler en LLVM back-end te kiezen. De gehele FreeBASIC standaard bibliotheek is op alle back-end opties beschikbaar, echter de uiteindelijke code prestaties en het formaat van het gegenereerde uitvoerbare bestand kan hierdoor verschillen.

Assembleertaal ondersteuning is in FreeBASIC beschikbaar wanneer men een statement-blok opent met een ASM statement.

Function add_five(Byval number As Integer) As Integer

Asm

mov EAX, [number]

add EAX, 5

mov [FUNCTION], EAX

End Asm

End Function

Ongeacht de gekozen back-end compiler dient de Assembleertaal in de Intel-syntaxis geschreven te worden. FreeBASIC zal deze omzetten naar de Assembleertaal voor het gekozen back-end.

Syntaxis[bewerken]

In eerste instantie was FreeBASIC opgezet als direct syntaxisequivalent aan QuickBasic, echter in de loop der tijd is de compiler uitgebreid met verscheidene moderne functies. Enkele van deze functies zijn:

  • objects (veel object georiënteerde elementen zijn geïmplementeerd)
  • methods
  • constructors
  • dynamic memory allocation
  • properties
  • operator overloading
  • function overloading
  • namespaces
  • pointers

Verder mogen er net als in QuickBasic meerdere statements op een lijn geschreven worden mits ze gescheiden worden met een dubbelepunt. Do : a += 1 : If a > 10 Then : a = -10 : Loop

FreeBASIC Dialecten[bewerken]

Om toch een zekere compatibiliteit te behouden met de originele QuickBasic en vroege FreeBASIC dialecten is er een optie ingebouwd om te schakelen tussen 3 dialecten. De moderne compiler uitbreidingen die toen nog niet beschikbaar waren zijn in veel gevallen wel gewoon te gebruiken, maar dan intermixed met een oudere syntaxis.

  • Standaard dialect: (moderne dialect met alle moderne functies beschikbaar, verouderde syntaxiselementen zijn hier niet toegestaan)
  • FB-lite dialect: (bijna alle moderne objectgeoriënteerde opties zijn beschikbaar, echter zijn in dit dialect verouderde BASIC statements zoals GOSUB / RETURN ondersteund en genummerde lijn labels)
  • QB dialect: (probeert zo goed mogelijk de volledige QuickBasic functionaliteit na te bootsen in een moderne omgeving. oude MS-DOS QuickBasic bron-code zal vaak zonder aanpassingen compileren)

Graphics Bibliotheek[bewerken]

FreeBASIC heeft een ingebouwde grafische bibliotheek genaamd FBgfx. FBgfx heeft alle functies die ook aanwezig waren in QuickBasic, echter zijn al deze functies uitgebreid met kleurdiepte ondersteuning tot 32 bit (24, 16, 8 Bit zijn ook beschikbaar).

De bibliotheek heeft ook een aantal moderne functies om beter met de hogere kleurdiepte, page-flipping, window management en andere randapparatuur (keyboard, joystick en muis) om te gaan. Het back-end van de bibliotheek kan communiceren met zowel GDI, OpenGL (Linux) en Microsoft DirectX. De bibliotheek is niet hardware versneld.

Externe links[bewerken]