Глоссарий - общие термины, используемые в разработке fbc
 

arg, argument
Выражение, передаваемое в качестве параметра в вызове процедуры.

cast
Приведение типа изменяет тип данных во время компиляции выражения и,  либо вызывает преобразование (например float <-> int) , либо переосмысление значения выражения представлением бит (например integer <-> uinteger).

comp, compound
  • Составные блоки в языке: Любые блоки кода, которые позволяют вложенный код, такие как  блоки IF, блоки SCOPE, блоки NAMESPACE , и т.д.
  • Составные символы: Определяемые пользователем типы, иногда также пространства имен, потому что оба могут содержать вложенные (в пространстве имен) символы и они разделяют общий код.

conv, conversion
Преобразование — это операция, которая переводит два разных представления того же значения (Например float <-> int, или 32bit <-> 64bit).

cast и conv часто используются как синонимы в источниках компилятора. AST и CONV узлы представляют собой приведения типов, независимо от того, выполняется преобразование или нет.

Некоторые (но не все) требуют выполнения преобразования, например:
short <-> integer
single <-> integer
single <-> double

Простое приведение типов равного класса и размера не требуется выполнения преобразования, потому что битовое представление не будет меняться в любом случае. Например:
short <-> ushort
integer <-> uinteger
Они также называются noconv casts.

ctor, constructor
  • UDT конструктор
  • модульный конструктор

ctx, context
UDT/"классы" в исходнике fbc для проведения глобальной информации, общей для нескольких процедур или модулей.

desc, descriptor
  • Дескриптор динамической строки
  • Дескриптор динамического массива

dtor, destructor
  • UDT деструктор
  • модульный деструктор

fbc
  • FreeBASIC компилятор проекта в целом, Git-репозиторий, проекта на Sourceforge
  • Компилятор , двоичный/исполняемый файл программы (fbc или fbc.exe), как построенный из источников компилятор
  • Компилятор главный модуль/интерфейс/драйвер

fbctinf
FB информация во время компиляции, также смотрите objinfo.

fbgfx
Графика FB, обычно ссылается на использование ключевых слов FB встроенной графики в gfxlib2

frontend stage 1
Компиляция входных файлов .bas в следующий промежуточный формат: .asm (-gen gas), .c (-gen gcc) или .ll (-gen llvm)

frontend stage 2
Компиляция .c (-gen gcc) или .ll (-gen llvm) промежуточных файлов в .asm файлы. (не применяется к -gen gas , потому что в этом случае FB компилятор генерирует .asm сам непосредственно)

function
Процедура с возвращаемым значением; иногда также используется вместо процедуры, как в C.

gfxlib2
Реализация FB графической runtime библиотеки из проекта fbc.

hashtb
Хеш-таблица, часто используется вместе с таблицей символов, чтобы позволить выполнить быстрый поиск из символов в этой таблице символов.

libfb, libfbmt, libfbgfx, libfbgfxmt
Имена библиотек, построенных из исходников rtlib/gfxlib2. Имена библиотек lib*mt являются потокобезопасными версиями своих lib* . Они построены с ENABLE_MT #define.

local
  • Временная: переменная выделяется в стеке
  • Любой символ во вложенной области видимости, не глобального/верхнего уровня пространства имен. Статические переменные в области видимости также имеют аттрибут FB_SYMBATTRIB_LOCAL, даже несмотря на то, что они не распределяются в стеке.

method
  • Процедура-элемент с параметром THIS. Статические процедуры-элементы (те, которые без параметра THIS) не имеют FB_SYMBATTRIB_METHOD.
  • Иногда: Любая процедура-элемент, с\без параметром\а THIS

noconv cast
Приведение, которое не требует преобразования.

normal build
Описано здесь: Обычная vs. автономная

objinfo
Смотрите DevObjinfo

param, parameter
Параметры процедуры, объявленные в декларировании процедуры или определении тела процедуры.

paramvar
Для каждого параметра компилятор создаст соответствующую локальную переменную в области действия процедуры, позволяя параметрам иметь доступ к пользовательскому коду.

proc, procedure
Любая процедура или функция, включая конструкторы и деструкторы, перегрузку операторов, методы задания свойств setters/getters.

standalone build
Описано здесь: Обычная vs. автономная

static
  • распределение памяти статической переменной: в куче вместо стека, но по-прежнему в области видимости--также видимы локально.
  • статические переменные-элементы: на самом деле внешние.
  • статические процедуры-элементы: процедуры-элементы без параметра THIS, также видны методам.
  • "статический массив" часто используется вместо "массив фиксированного размера" (язык QB)

struct, structure
TYPE или UNION, также известный как struct/union в C.

sub
Процедура без возвращаемого значения (с результатом VOID).

symtb
Таблица символов: имеет связанный список FBSYMBOL в определенной области видимости. Это где находятся FBSYMBOL(ы).

rtlib
Реализация runtime библиотеки FB из проекта fbc

UDT, user-defined type
TYPEs/UNIONs/ENUMs, иногда просто TYPEs/UNIONs.

vreg
Виртуальный регистры используются при выпуске AST. AST создает vreg операнды и результаты всех операций, которые составляют программу ввода. Каждый бэкэнд излучает их по-разному:
    • ASM бэкэнд действительно сопоставляет vregs настоящим регистрам и также повторно использует их , когда они снова становятся свободными. vregs также позволяют эмитеру x86 кода знать, какие точно используются регистры.
    • C бэкэнд иногда испускает vregs как временные переменные, иногда просто вставляет выражение, результатом которого представлена ​​vreg вместо первого использования этого vreg.
    • LLVM бэкэнд просто излучает каждый vreg как нумерованное промежуточное значение.
Поскольку C/LLVM движки не используют повторно vregs, vregs находятся почти в форме статических single значений; хотя не совсем, потому что до сих пор есть самостоятельные операции и т.д.. производимые AST, которые не учитывают форму SSA.