ARG,
论据
在过程调用中传递给参数的表达式。
投
类型转换更改表达式的编译时数据类型,并导致转变(例如,float < - >int)或表达式值的位表示的重新解释(例如,整数< - >uinteger)。
补偿,
复合
- 语言中的复合块:允许嵌套代码(如IF块,SCOPE块,NAMESPACE块等)的任何代码块。被称为化合物。
- 复合符号:UDT,有时也是命名空间,因为两者可能包含嵌套(命名空间)符号,并且它们共享一些通用代码。
CONV,
转变
A转换是在相同值的两个不同表示之间进行转换的操作(例如,float < - >int或32bit < - >64位)。
投和
CONV经常在编译器源中互换使用。例如,AST的CONV节点表示类型转换,无论它们是否执行转换。
一些(但不是全部)
投需要运行时
转变,例如:
< - >整数
单个< - >整数
单个< - >双
类别和大小相等的类型之间的简单
投不需要运行时
转变,因为位表示不会改变。例如:
< - >ushort
整数< - >uinteger
这些??也称为
noconv演员.
构造函数,
构造函数
CTX,
上下文
fbc源中的UDT /“类”用于保存在多个过程或模块之间共享的全局信息。
降序,
描述
灌木,
析构函数
FBCen
- FreeBASIC编译器项目作为一个整体,Git仓库,项目在Sourceforge上注册
- 编译程序的二进制/可执行文件(fbc或fbc.exe),由编译源构建
- 编译器的主要模块/前端/驱动程序
fbctinf
FB编译时信息,另请参阅objinfo.
fbgfx
FB图形,通常指使用FB的内置图形关键字,在gfxlib2
前台1
将.bas输入文件汇编成下一个中间格式:.asm(-gen gas),.c(-gen gcc)或.ll(-gen llvm)
前台2
将.c(-gen gcc)或.ll(-gen llvm)中间文件汇编成.asm文件。(不适用于-gen气体,因为FB编译器直接生成.asm本身)
功能
A 程序具有结果值;有时也用于代替程序,如C.
gfxlib2
FB图形运行库实现从fbc项目。
hashtb
散列表,通常与符号表一起使用,以便快速查找该符号表中的符号。
libfbuz,
libfbmt,
libfbgfx,
libfbgfxmt
从rtlib/ gfxlib2来源建造的图书馆名称。名为lib*mt的库是他们的lib*同行的线程安全版本。它们使用ENABLE_MT#define构建。
本地
- 有时候:在堆栈上赋值一个变量
- 嵌套作用域中的任何符号,而不是全局/ toplevel命名空间。作用域静态变量也具有FB_SYMBATTRIB_LOCAL属性,即使它们未在堆栈上赋值。
方法
- 具有THIS参数的成员过程。静态成员程序(没有THIS参数的那些)没有FB_SYMBATTRIB_METHOD.
- 有时候:任何成员程序,带或不带THIS参数
noconv演员
A 投,不需要转变.
正常建设
objinfo
见DevObjinfo
PARAM,
参数
过程DECLARE语句或实体中声明的过程参数。
paramvar
对于每个参数,编译器将在过程的范围内创建一个相应的局部变量,允许用户代码访问参数。
PROC,
程序
任何子或功能,包括构造函数/析构函数,操作符重载,属性设置器/ getter。
独立构建
静态的
- 静态变量赋值:堆上而不是堆栈,但仍然是范围 - 也可以参见本地.
- 静态成员变量:实际上是外部.
- 静态成员程序:没有THIS参数的成员程序也参见方法.
- “静态数组”常用于代替“固定大小的数组”(QB语言)
结构,结构
TYPE或UNION,也称为struct/ union.
子
A 程序没有结果(具有VOID结果)。
symtb
符号表:在特定范围内拥有FBSYMBOL的链接列表。这就是FBSYMBOL的生活。
rtlib
来自fbc项目的FB运行时库实现
UDT,
用户定义的类型
TYPE / UNION / ENUM,有时只是TYPE / UNION。
VREG
发出AST时使用虚拟寄存器。AST为组成输入程序的所有操作的操作数和结果创建一个vreg。每个后端都会发出不同的结果:
- ASM后端实际上将vreg映射到实际的寄存器,并在它们再次释放时重新使用它们。然后,vregs也让x86代码发射器知道使用哪些精确寄存器。
- C后端有时将vregs作为临时变量,有时候简单地插入一个表达式,其结果由vreg表示,代替了vreg的首次使用。
- LLVM后端简单地将每个vreg发送为编号的中间值。
由于C / LLVM后端不重新使用vreg,所以vreg几乎是静态单指派形式;虽然不完全是因为还有自营业务等由AST生成,不考虑SSA形式。