GitHunt
TR

trumae/tabuada

Genetic programming synthesize assembler programs

This project is a little toy in genetic programming. Basically we built a system that uses genetic programming to synthesize code into a tiny virtual machine.

To play you need of:

  • gcc
  • Building

In the src directory, execute the command:
$ make

  • Testing

Run without changes, the gp program try synthesize a program that does the multiplication of two integers. Note that the virtual machine has no instruction of multiplication. Use this command for see the program in action:

$./gp -n 20 -t 50000000 -i 10 -H 30

  • Instructions of Virtual Machine

| instruction | note |
|--------------+--------------------------------------------------------|
| MOVE x y | put the value of y in x |
| MOVI x num | put the value num in x |
| ADD x y | adds the value of y at x |
| SUBI x num | decreases the value num at x |
| JUMPZ x pc | if x value is zero, jump to instruction in position pc |
| JUMP pc | jump to instruction in position pc |
| RET | stop the program |

  • Examples of output

#+BEGIN_SRC
MOVE 2 0
SUBI 1 1
JUMPZ 1 8
ADD 2 0
JUMP 1
MOVE 0 1
JUMPZ 2 1
MOVE 0 2
RET
#+END_SRC

Another example (very strange/good):
#+BEGIN_SRC
MOVE 2 0
ADD 1 1
MOVE 2 0
JUMPZ 2 5
SUBI 1 2
JUMPZ 1 9
SUBI 1 2
ADD 0 2
JUMP 5
SUBI 1 3
SUBI 2 12
JUMPZ 0 3
MOVE 2 0
RET
#+END_SRC

Languages

C63.4%Perl36.2%Makefile0.5%

Contributors

Latest Release

ok1October 29, 2014
Other
Created August 13, 2010
Updated February 19, 2023