Author Topic: Architecture  (Read 4292 times)

0 Members and 1 Guest are viewing this topic.

Charles Pegge

  • Guest
Architecture
« on: October 01, 2010, 04:41:56 AM »
Compiler Source Code:

The code is now split into the following parts:

oxygen

Oxygen main with dll exportable functions.

o2cmpl

compilation compatibility macros for freebasic compiling and self compiling.

o2assm

Assembler which translates assembly code into oxygen script.

o2keyw

Oxygen primary keywords, intrinstic macros and functions.

o2enco

Encoder: translate phrases to Assembler and o2

o2fini

Adds prolog and epilog code for Basic and headers for PE files.

o2link

The original oxygen machine code renderer / linker.

o2glob

Structures, constants,macros, global variables.

o2lexi

Lexing and parsing functions.

o2meta

Metacommands: evaluating constants and selecting code blocks

o2pars

Parsing:  lower translation functions.

o2reso

PE file resources encoding (not operational yet).

o2runt

Runtime procedures used by compiled programs.

o2decl

Declarations dims enumerations.

o2expr

Expressions including operator precedence.

o2sema

Preprocessor / compiler translating high level code.




HIERARCHY:

Oxygen is the library level containing all the functions for compiling, linking and executing.
O2Sema performs the top level translation of Basic and macros into Assembly code.
O2Decl records types and classes, and maps dimmed variables.
O2Expr handles expressions including operator prececedence
O2Enco turns operators,operands and procedures into Assembly code.
O2Par parses, identifies and classifies words, also expanding macros.
O2Lex reads words, symbols and identifies lines and nested block structures.

Oxygen-->o2Sema-->o2Decl+o2Expr-->o2Enco-->o2Par-->o2Lex


COMPILING STAGES:


Basic and Macros are converted to Assembly code.
Prologs, epilogs, PE headers and  sections are added.
Assembly code is converted to Oxygen script.
Oxygen script is converted to binary and linked.
The executable binary image is then (optionally  compacted into a PE file.


o2Sema-->o2fini-->o2Assm-->o2Link-->(makeEXE/DLL)



« Last Edit: October 01, 2010, 07:29:24 AM by Charles Pegge »