All Projects → evoasm → Evoasm.rb

evoasm / Evoasm.rb

Licence: agpl-3.0
An AIMGP (Automatic Induction of Machine code by Genetic Programming) engine

Programming Languages

ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to Evoasm.rb

dynarmic
An ARM dynamic recompiler.
Stars: ✭ 675 (+641.76%)
Mutual labels:  x86-64, jit
X86 Bare Metal Examples
Dozens of minimal operating systems to learn x86 system programming. Tested on Ubuntu 17.10 host in QEMU 2.10 and real hardware. Userland cheat at: https://github.com/cirosantilli/linux-kernel-module-cheat#userland-assembly ARM baremetal setup at: https://github.com/cirosantilli/linux-kernel-module-cheat#baremetal-setup 学习x86系统编程的数十个最小操作系统。 已在QE…
Stars: ✭ 3,985 (+4279.12%)
Mutual labels:  x86-64, x64
AheuiJIT
Aheui JIT compiler for PC and web
Stars: ✭ 27 (-70.33%)
Mutual labels:  x86-64, jit
FoxOS
The FoxOS main repository
Stars: ✭ 48 (-47.25%)
Mutual labels:  x64, x86-64
Dynarmic
An ARM dynamic recompiler.
Stars: ✭ 475 (+421.98%)
Mutual labels:  jit, x86-64
Reloaded.Assembler
Minimal .NET wrapper around the simple, easy to use Flat Assembler written by Tomasz Grysztar. Supports both x64 and x86 development.
Stars: ✭ 17 (-81.32%)
Mutual labels:  x64, x86-64
cult
CPU Ultimate Latency Test.
Stars: ✭ 67 (-26.37%)
Mutual labels:  x86-64, jit
profiler-api
The portable version of JetBrains profiler API for .NET Framework / .NET Core / .NET / .NET Standard / Mono
Stars: ✭ 21 (-76.92%)
Mutual labels:  x64, x86-64
Labeless
Labeless is a multipurpose IDA Pro plugin system for labels/comments synchronization with a debugger backend, with complex memory dumping and interactive Python scripting capabilities.
Stars: ✭ 378 (+315.38%)
Mutual labels:  x86-64, x64
Dora
Dora VM
Stars: ✭ 371 (+307.69%)
Mutual labels:  jit, x86-64
biefircate
Running x86-16 or x86-32 code from x86-64 UEFI; _very experimental_ • mirror of https://gitlab.com/tkchia/biefircate • developer notes at https://gitlab.com/tkchia/biefircate/-/blob/main/doc/NOTES.asciidoc
Stars: ✭ 47 (-48.35%)
Mutual labels:  x64, x86-64
Distorm
Powerful Disassembler Library For x86/AMD64
Stars: ✭ 829 (+810.99%)
Mutual labels:  x86-64, x64
catsight
Cross-platform process memory inspector
Stars: ✭ 150 (+64.84%)
Mutual labels:  x64, x86-64
Jit Compiler
JIT compiler in Go
Stars: ✭ 70 (-23.08%)
Mutual labels:  jit, x86-64
Capstone.NET
.NET Core and .NET Framework binding for the Capstone Disassembly Framework
Stars: ✭ 108 (+18.68%)
Mutual labels:  x64, x86-64
kcs
Scripting in C with JIT(x64)/VM.
Stars: ✭ 25 (-72.53%)
Mutual labels:  x86-64, jit
kasm
Assembler library for Kotlin
Stars: ✭ 40 (-56.04%)
Mutual labels:  x64, x86-64
vox
Vox language compiler. AOT / JIT / Linker. Zero dependencies
Stars: ✭ 288 (+216.48%)
Mutual labels:  x86-64, jit
Opensmalltalk Vm
Cross-platform virtual machine for Squeak, Pharo, Cuis, and Newspeak.
Stars: ✭ 345 (+279.12%)
Mutual labels:  jit, x86-64
Rappel
A linux-based assembly REPL for x86, amd64, armv7, and armv8
Stars: ✭ 818 (+798.9%)
Mutual labels:  x86-64, x64

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
  • x86-64 up to AVX2 (no FPU)
  • Lightweight backend C library with no third-party dependencies
  • Support for floating-point and integer inputs/outputs including SIMD vectors
  • Automatically generated and verified instruction encoder
  • Parallel island model using OpenMP
  • Ruby bindings

Installation

$ git clone --recursive https://github.com/evoasm/evoasm
$ bundle install
# compile libevoasm, omit --no-omp if your compiler has OpenMP support
$ bundle exec rake compile -- --no-omp
$ bundle exec ruby docs/examples/sym_reg.rb # run example

Requirements

  • Ruby (MRI >= 2.3)
  • Capstone for disassembling (optional).
  • Gnuplot for visualizing loss functions (optional)
  • POSIX-compliant OS (Linux and Mac OS X should both work).

Documentation

Please see the API documentation, have a look at the examples or the test cases.

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].