Averest


Averest.MiniC Namespace

Modules Description

Abacus

This module implements functions for simulating Abacus assembler programs. The core is thereby the definition of the computer system's state, and the instruction set semantics in terms of operationally changing the system's state when executing an instruction.

CodeGenAbacus

This module implements functions for translating cmd programs to Abacus assembler programs. To this end, functions for dataflow analysis, in particular, the liveness of variables are provided that are used to build interference graphs of the variables used, which in turn are used to compute static register allocators with a graph coloring approach. Based on such a register allocator, the final generation of Abacus assembler instructions from a cmd program is not difficult (and also provided).

CodeGenSCAD

This module implements functions for generating code for BED architectures like SCAD from dataflow graphs (DPNs).

CodeTransformations

This module implements the core of a simple compiler for translating MiniC programs to CmdType programs and control dataflow graphs.

Compiler

This module implements the core of a simple compiler for translating MiniC programs to CmdType programs and control dataflow graphs.

DataflowProcessNetworks

This module implements the core of a translation of MiniC programs to equivalent dataflow graphs which are also known as dataflow process networks. The possible nodes of these dataflow graphs are defined in DataflowProcess and a dataflow graph is of type DataflowProcessNetwork. The most important function is MiniC2DPN for translating MiniC programs to DPNs. DPNs can be levelized by LevelizeDPN, and MinimumNumberOfVertexDisjointPathsDPN computes a minimal number of vertex-disjoint paths for an optimal parallel execution time where each vertex-disjoint path becomes a thread.

IO

This module implements functions for parsing MiniC, Cmd, and Abacus programs and also for printing these programs to streams.

Lexer

Parser

ScadSim

This module implements functions for simulating a universal SCAD machine.

Types

This module implements basic data structures for the MiniC language, the intermediate language CmdType, and the Abacus assembler language. Moreover, there are some basic functions to work with these basic data types like those for type checking MiniC programs, and determining the variables that are read and written by instructions.