Sha256: cfbcfb4a979c76421421a278fb7205d94d301658fc25303a9425199ef0455a31

Contents?: true

Size: 1.73 KB

Versions: 1

Compression:

Stored size: 1.73 KB

Contents

# Evoasm

## Description

*Evoasm* is an AIMGP (*Automatic Induction of Machine code by Genetic Programming*) engine.

You give it a set of examples, that is, several input/output pairs, that describe a program's behavior.
It will then try to come up with a short program (in the form of machine code) that follows your specification,
by means of genetic programming.
*Evoasm* contains a JIT that executes the generated machine code on the fly.

Currently, the only supported architecture is **x86-64**.

## Features

* Fast JIT
* Non-linear control flow
* [x86-64](https://github.com/evoasm/evoasm-gen/blob/master/data/tables/x64.csv) up to AVX2 (no FPU)
* Lightweight backend [C library](https://github.com/evoasm/libevoasm) with no third-party dependencies
* Ruby bindings

## Installation

    $ gem install evoasm
    
### Requirements

* Ruby (MRI >= 2.3, JRuby >= 9.1.2)
* [Capstone](http://www.capstone-engine.org/) for disassembling (*optional*).
* [Graphviz](http://www.graphviz.org/) (libgraphviz) for visualizing programs (*optional*).
* [Gnuplot](http://gnuplot.sourceforge.net) for visualizing loss functions (*optional*)
* POSIX-compliant OS (Linux and Mac OS X should both work).

## Documentation

Please see the [API documentation](https://evoasm.github.io/evoasm/doc/) or
have a look at the [examples](https://evoasm.github.io/evoasm/doc/file.SymbolicRegression.html).

## Contributing

1. Fork it ( https://github.com/furunkel/evoasm/fork )
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request

## License

[AGPL-3.0][license]

[license]: https://github.com/furunkel/evoasm/blob/master/LICENSE.md

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
evoasm-0.1.0.pre2 README.md