Skip to content

trumae/tabuada

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

instructionnote
MOVE x yput the value of y in x
MOVI x numput the value num in x
ADD x yadds the value of y at x
SUBI x numdecreases the value num at x
JUMPZ x pcif x value is zero, jump to instruction in position pc
JUMP pcjump to instruction in position pc
RETstop the program

Examples of output

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

Author

Trumae <trumae@gmail.com>