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
In the src directory, execute the command: $ make
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
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 |
MOVE 2 0 SUBI 1 1 JUMPZ 1 8 ADD 2 0 JUMP 1 MOVE 0 1 JUMPZ 2 1 MOVE 0 2 RET
Another example (very strange/good):
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
Trumae <trumae@gmail.com>