Monkeys With Assemblers – Part 8 : Basic Language Model
Right now the Monkeys write purely random, and mostly garbage, Z80 code which is fed into a genetic algorithm which then shapes it into something resembling a real solution to a problem. There were several reasons why I wanted to add support for a real-world processor, even one that’s decades old, but a major one … Continue reading Monkeys With Assemblers – Part 8 : Basic Language Model
Monkeys With Assemblers – Part 7 : Bilingual Monkeys
So far the monkeys have been able to produce simple code to solve simple problems using a very simple machine language of just 24 instructions. I want to see what happens if we give them a more complex, real world processor to play with. Processor Choice When deciding which processor to use I considered the … Continue reading Monkeys With Assemblers – Part 7 : Bilingual Monkeys
Monkeys With Assemblers – Part 6 : Hello World!
The monkeys can now count successfully to 8 using a conditional loop, thanks to the genetic algorithm generator. Next, I want to see if they can solve some new problems. It’s often the first program you write when learning how to code, so let’s try the classic “Hello, World!” program. Say Hello, Clyde! There are … Continue reading Monkeys With Assemblers – Part 6 : Hello World!
Monkeys With Assemblers – Part 5 : Facelift
While working on some new exercises for the monkeys, I realised we’d need some new functionality in the virtual machine. This would then need to be exposed to C# via the C++/CLI interface and then displayed in the WPF-based UI. For me, these latter steps are neither fun nor efficient, and as the complexity increases … Continue reading Monkeys With Assemblers – Part 5 : Facelift
Monkeys With Assemblers – Part 4 : Survival Of The Fittest
This Monkey’s Gone To Seven We left our monkeys with the ability to count to 3 in a mere 20 minutes. I’m proud of them but it’s not going to earn them any bananas. The next step is to count to 8. I think this is the tipping point at which a loop will be … Continue reading Monkeys With Assemblers – Part 4 : Survival Of The Fittest
Monkeys With Assemblers – Part 3 : Optimisation
Lazy Monkeys Left overnight, our monkeys are able to count to 3. It’s not terribly impressive, really, so let’s see what we can do to reduce that time. Multicore Monkeys The current system, being completely random, is perfect for parallelization. We have a single unit, comprising of a code generator, virtual machine and evaluator, which … Continue reading Monkeys With Assemblers – Part 3 : Optimisation
Monkeys With Assemblers – Part 2 : Code Generation
Now we have a system that can run code and examine the results of that execution, but I’m still concerned that this whole concept could fall at the first hurdle, so it’s time to test out the code generation. First Exercise – Write non-zero byte at address 0 I added the concept of an Exercise, … Continue reading Monkeys With Assemblers – Part 2 : Code Generation