https://github.com/trumae/tabuada
Genetic programming synthesize assembler programs
https://github.com/trumae/tabuada
c genetic-algorithm genetic-programming tournament-algorithm
Last synced: 5 months ago
JSON representation
Genetic programming synthesize assembler programs
- Host: GitHub
- URL: https://github.com/trumae/tabuada
- Owner: trumae
- License: other
- Created: 2010-08-13T14:47:56.000Z (almost 16 years ago)
- Default Branch: master
- Last Pushed: 2019-11-20T01:33:51.000Z (over 6 years ago)
- Last Synced: 2024-04-17T15:10:51.503Z (about 2 years ago)
- Topics: c, genetic-algorithm, genetic-programming, tournament-algorithm
- Language: C
- Homepage: http://trumae.github.com/tabuada
- Size: 134 KB
- Stars: 14
- Watchers: 5
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.org
- License: COPYING
Awesome Lists containing this project
README
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