flat assembler
Message board for the users of flat assembler.

Index > High Level Languages > Free Basic

Thread Post new topic This topic is locked: you cannot edit posts or make replies.

Joined: 19 Sep 2003
Posts: 1029
Location: Everywhere
I found this forum http://www.freebasic.net/forum/index.php at RADasm site.

And here you can get IDE+compiler+tools: http://www.fbide.freebasic.net/index.php?menuID=54&newsID=18

The official site of the compiler is: http://www.freebasic.net/index.php

Looks pretty good, optimizing compiler, nice basic implementation with inline ASM and other goodies.
Seems great for games, windows apps, linux apps, etc...
I'll begin to explore it now as I love to learn new languages and play with them.

Just sharing... enjoy! Smile
Post 05 Apr 2006, 01:30
View user's profile Send private message Reply with quote

Joined: 26 Oct 2003
Posts: 108
Does this use FASM in any way?
Post 05 Apr 2006, 06:02
View user's profile Send private message Reply with quote

Joined: 25 Sep 2003
Posts: 2139
Location: Estonia
Maybe it used FASM to assemble its first versions and now its like FASM only self-compiling from FreeBASIC Wink Maybe FASM was used as a trampoline.
Or - maybe it uses inline-asm syntax of FASM Smile
Post 05 Apr 2006, 06:45
View user's profile Send private message Visit poster's website Yahoo Messenger MSN Messenger Reply with quote

Joined: 19 Sep 2003
Posts: 1029
Location: Everywhere
I think it was not built using FASM, but the inline ASM syntax is very similar to FASM's.
And one could code procedures and functions in FASM and use it in FreeBasic.

Main Features

BASIC Compatibility
FreeBASIC is not a "new" BASIC language. It is not required of you to learn anything new if you are familiar with any Microsoft-BASIC variant.

FreeBASIC is case-insensitive; scalar variables don't need to be dimensioned and suffix can be used; line numbers are supported; MAIN function is not required; most of the graphic and console statements and functions found in MS-QuickBASIC were implemented, et cetera.

Clean Syntax
Only a small number of keywords have been added. All functions are implemented as libraries, so for the most part, there are no new intrinsic routines, and therefore there is a low chance of having name duplication with old code.

Most of the known C libraries and API's can be used without wrappers or helpers

GTK+ 2.0: cross-platform GUI Toolkit (over 1MB of headers, including support for Glade, libart and glGtk)

libxml and libxslt: defacto standard XML and XSL libraries

GSL - GNU Scientific library: complex numbers, vectors and matrices, FFT, linear algebra, statistics, sorting, differential equations, and a dozen other sub-libraries with mathematical routines

GMP - GNU Multiple Precision Arithmetic Library: known as the fastest bignum library

SDL - Simple DirectMedia Layer: multimedia library for audio, user input, 3D and 2D gfx (including the sub-libraries such as SDL_Net, SDL_TTF, etc)

OpenGL: portable library for developing interactive 2D and 3D graphics games and applications (including support for frameworks such as GLUT and GLFW, plus the GL Extensions)

Allegro: game programming library (graphics, sounds, player input, etc)

GD, DevIL, FreeImage, GRX and other graphic-related libraries

OpenAL, Fmod, BASS: 2D and 3D sound systems, with support for mod, mp3, ogg, etc

ODE and Newton - dynamics engines: rigid body dynamics simulation

cgi-util and FastCGI: web development

DirectX and the Windows API - the most complete headers set between the BASIC compilers available, including support for the Unicode functions

DispHelper - COM IDispatch interfaces made easy

more to come...

FreeBASIC currently runs on 32-bit Windows, Linux, and MS-DOS and also creates applications for the Xbox console. More platforms to come.

The run-time library was written with portability in mind. All third-party tools used exist on most operating systems already as they are from the GNU binutils. The compiler is written in 100% FreeBASIC code (that's it, FreeBASIC compiles itself.), what makes it simple to be bootstrapped as it doesn't depend on non-portable tools.

Unicode support
Besides ASCII files with Unicode escape sequences (\u), FreeBASIC can parse UTF-8, UTF-16LE, UTF-16BE, UTF-32LE and UTF-32BE source (.bas) or header (.bi) files, they can freely mixed with other sources/headers in the same project (also with other ASCII files).

Literal strings can be typed in the original non-latin alphabet, just use an text-editor that supports some of the Unicode formats listed above.

The WSTRING type holds wide-characters, all string functions (like LEFT, TRIM, etc) will work with wide-strings too.

OPEN was extended to support the ENCODING "format" option, files in UTF-8, UTF-16LE and UTF-32LE can be read (using INPUT # or LINE INPUT #) and written (using PRINT # or WRITE #) when opened in INPUT, OUTPUT and APPEND modes, all the conversion between Unicode to ASCII is be done automatically if necessary.

PRINT'ing to console is also supported (see Requirements), INPUT or LINE INPUT from console still not allowing wide-characters to be entered yet.

A large number of variable types available

Floating-point: SINGLE and DOUBLE

String: fixed, variable-length or null-terminated (ZSTRING's), up to 2GB long

Unicode strings (WSTRING's), like ZSTRING's, but with support for wide characters. Use the Windows unicode API functions directly, etc.

User-defined Types (UDT's)
Unlimited nesting.

BASIC's TYPE statement is supported, along with the new UNION statement (including nameless nested UNION's).

Array fields utilizing up to four dimensions can be used.

Function field types.

Bit fields.

Enumerations (ENUM's)

List of constants easily modifiable.

Dynamic and static arrays are supported, up to 2 GB in size.

Unlimited number of array dimensions.

Any lower and upper boundaries.

REDIM PRESERVE statement is supported to resize any dynamic array and keep its contents intact.

Pointers to any of the data types listed above, including UDT's and arrays.

Uses the same syntax as C.

Unlimited indirection levels (e.g., pointer to pointer to ...).

Function pointers.

Indexing []'s (including string indexing).

Function dereferencing.

Type Casting (CPTR).

Variable initializers
For static, module-level or local variables, arrays and UDT's.

Optional function arguments
For numeric and strings types.

Function overloading
Including functions with optional arguments.

Inline Assembly
Intel syntax.
Reference variables directly by name; no "trick code" needed.

Same syntax as in C.

#DEFINE's with arguments also supported (aka macros).

Supporting forward referencing as in C.

Escape characters inside literal strings
Same as in C (except numbers are interpreted as decimal, not octal).

Debugging support
Full debugging support with GDB (the GNU debugger) or Insight (the GDB GUI frontend).

Array bounds checking (only enabled by the -exx command-line option).

Null pointers checking (same as above).

Create OBJ's, LIB's, DLL's, and console or GUI EXE's
You are in no way locked to an IDE or editor of any kind.

You can create static and dynamic libraries adding just one command-line option (-lib or -dll).

As a 32-bit application
FreeBASIC can compile source code files up to 2 GB long.

The number of symbols (variables, constants, et cetera) is only limited by the total memory available during compile time. (You can, for example, include OpenGL, Gtk/SDL, BASS, simultaneously in your source code.)

Optimized code generation
While FreeBASIC is not an optimizing compiler, it does many kinds of general optimizations to generate the fastest possible code on x86 CPU's, not losing to other BASIC alternatives, including the commercial ones.

Completely free
All third-party tools are also free. No piece of abandoned or copyrighted software is used (but GoRC on Win32). The assembler, linker, archiver, and other command-line applications come from the GNU binutil programming tools.
Post 05 Apr 2006, 14:17
View user's profile Send private message Reply with quote

Joined: 03 Apr 2006
Posts: 29
It uses GAS (the gnu assembler) to emit asm code. Yeah, it's a tight compiler. In fact better than the commercial ones. And when the GCC backend gets finished, it would be as fast as GCC. :*)

Right now you could compare it's structure to C but after the GCC backend, support for real OOP will be there. I mean real, not hacks.

I made a few stuff with FB myself. :*)

A 2d space shooter:

A 3d tunnel using opengl + SDL

A quaternion based camera(OpenGL + SDL):
Post 07 Apr 2006, 01:09
View user's profile Send private message Reply with quote

Joined: 14 Mar 2004
Posts: 116
Location: Greece
FB is a quite good tool/compiler.
And its not that much time on the net!I think its like a year or so.
Post 07 Apr 2006, 07:49
View user's profile Send private message MSN Messenger ICQ Number Reply with quote

Joined: 26 Oct 2003
Posts: 108
That is some impressive quality work done with FB, but I don't see it utilizing FASM in any way and this is a FASM support forum.
Post 08 Apr 2006, 05:14
View user's profile Send private message Reply with quote
Display posts from previous:
Post new topic This topic is locked: you cannot edit posts or make replies.

Jump to:  

< Last Thread | Next Thread >
Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum

Copyright © 1999-2020, Tomasz Grysztar. Also on GitHub, YouTube, Twitter.

Website powered by rwasa.