FreeBASIC

来自osdev
跳到导航 跳到搜索

FreeBASIC是现代BASIC语言变体的名称,以及相应的编译器名称。 传统Basic无法进行本机操作系统开发,而Freebasic具有许多对操作系统开发有用的功能。

概述

除了与QuickBasic基本兼容外,它还提供了以下有用的功能:

  • 无符号数据类型
  • 内联汇编
  • 指针
  • 回调
  • 一个可移植的运行时。

最大的缺点是,大多数特定于Basic的指令需要运行时,而在独立的环境中不能轻松使用。 结果是,在包含运行时支持之前,无法使用几个典型的基本构造,这使得开发非常棘手。

用法

FreeBASIC的命令行语法类似于GCC

fbc -c -o kernel.o kernel.bas

要链接输出可以用:

ld -T script.ld -o kernel.bin kernel.o

为了开始运行,有一个FreeBasic Bare Bones教程,该教程以一个工作正常的“Hello world”内核结束。

运行时库

在独立环境中,运行时不可用。程序员应注意不要使用以下任何一项:

  • 字符串
  • 动态数组 (仅允许本地固定大小的数组)
  • 任何形式的全局值。所有信息都必须在参数中传递。
  • 所有非原语内置函数,即任何比+-*/和逻辑运算符更复杂的函数。
  • IO功能,包括端口输出和输入,peek和poke。

你需要提供一个运行时init来允许使用全局变量,还需要一个malloc()来让字符串和数组工作 (其余依赖项是跨平台的ctype+stdlib函数,这不会造成太大问题)。

如果你已经到了坐下来考虑一下,用C写一个内核的程度,用FreeBASIC写同样的东西就差不多了。 当然,这里有巨大的语言差异,FreeBASIC的语法比C更像英语...但要做任何有用的事情,这两种策略都需要一个C运行时和库。 对于FB内核,在成功移植C库之后,可以考虑在上面移植FB运行时。 更重要的是,FB(Free Basic)可以链接到现有的C库,因此移植C库并不痛苦。

另见

文章

外部链接

de:FreeBASIC