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
- Author
Trumae trumae@gmail.com