{{fbdoc item="title" value="Quick overview of all modules"}}----
(Only somewhat sorted)

''fbc''
	Frontend: main module, entry point, command-line handling, assembling/linking/etc.

''objinfo''
	[[DevObjinfo|Object/library information]] section reader/writer, used by ''fbc''. Includes tiny ELF/COFF object file format readers.

''fb''
	FB parser interface, starts the ''parser'' for every input/include file.

''parser''
	Recursive parser, asks ''lex'' for tokens, builds up the ''ast''.

''lex'', ''pp''
	Lexer/tokenizer and preprocessor directive parsing.

''error''
	Error reporting functions, used by many parts of fbc, mostly the ''parser'' though.

''rtl''
	Helper functions to build up the ''ast'' nodes for rtlib/gfxlib function calls. Declarations must match the actual functions in the rtlib/gfxlib2 source code.

''symb''
	Symbols lookup and storage (information on variables/functions), scope/namespace handling, name mangling; used by ''parser''/''ast''/emitters.

''ast''
	Abstract syntax tree: per-function code-flow + expressions.
	astNew*(): Node creation/tree building, used by the ''parser''.
	astLoad*(): First step in emitting, calls ''ir'', called after each function is parsed.

''ir'', ''ir-hlc'', ''ir-llvm'', ''ir-tac''
	Intermediate representation interface (using virtual registers) used to emit the ''ast''.
	hlc: High level C emitter (high level in comparison to the ASM backend anyways)
	llvm: LLVM IR emitter
	tac: Three-address-codes module (asm backend), calls ''emit''. Reponsible for register allocation, reusing, spilling.

''reg''
	Register allocator for ''ir-tac''.

''emit'', ''emit_SSE'', ''emit_x86''
	Assembler emitter abstraction and SSE/x86 emitters.

''edbg_stab''
	Stabs debug format emitting for ''emit_x86''.

''dstr''
	Dynamic z/wstrings, used mostly by ''lex''.

''hash''
	Generic hash table, used by ''symb''/''fbc''.

''hlp'', ''hlp-str''
	Helper functions for all parts of the compiler, plus another implementation of dynamic z/wstrings.

''list''
	Generic linked list with built-in memory pool, used a lot. This is often used as pure pooled allocator, for example for AST nodes or symbols.

''flist''
	''list''-based  without deletions.

''pool''
	''list''-based allocator using multiple lists with node sizes ranging from small to large, allowing it to store away strings into the next best fitting chunk to waste as less memory as possible. Used to store away symbol identifiers.

''stack''
	Generic ''list''-based stack.

{{fbdoc item="back" value="DevToc|FreeBASIC Developer Information"}}
{{fbdoc item="back" value="DocToc|Table of Contents"}}