Skip to content

An approach to algorithm optimization through circuit minimization techniques.

Notifications You must be signed in to change notification settings

raescartin/Recompiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 

Repository files navigation

Recompiler

An approach to algorithm optimization through circuit minimization techniques.

This project is a novel approach to code optimization, centered around the middle end of a compiler: optimization of an intermediate language.
The intermediate language uses only the logic NAND function and recursion.
Two main data structures are used: a database of recursive functions and a forest of two input NAND functions.
The forest of NAND functions is very similar to the And Inverter Graphs used in state of the art circuit minimization methods, like Berkley's ABC.
A representation for functions has been developped that extends a netlist by adding recursivity.
Alt text
A full adder is represented:

sum[A,B,Cin; S,Cout] =
    xor[A,B; t1], and[A,B; t2], xor[A,B; t4]
    and[t1, Cin; t3], xor[t4,C; S]
    or[t2,t3; Cout]

The algorithm for the addition of natural numbers (using full adders) is:

add[A,B; C(D{0}&E&F)] =
    and [A{0},B{0}; t1] xor [A{0},B{0}; F]
    sumR [A{n-1..1},1{n-1..1},t1; E,D]
sumR[A,B,C; D(E&F),G(H&I)] =
    sum [A{0},B{0},C; F,H]
    sumR [A{n-1..1},B{n-1..1},H; E,I]

About

An approach to algorithm optimization through circuit minimization techniques.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages