Ya, evolutionary programming really fascinates me. In fact there has been experiments to evolve hardware designs. Basically those designs that come close to a goal (i.e. can get the most electricity through a certain point) are allowed to "breed" and creat new designs. Here's the exerpt from an article
Quote: "In one experiment, a chip was evolved that would digitally decode a binary signal sent over a telephone line, without using any of the external analog components found in devices such as modems. All digital circuits have "rough edges" where they don't quite behave exactly like perfect digital components; whereas human engineers try to filter out these irregularities, evolution exploited them. It came up with an almost perfect solution to the problem; it would have been almost impossible for a human electronics expert to build a similar circuit from the same components."
As for the virtual machine, what if instead the OS was loaded into a memory segment and it would check if any programs were trying to access the memory segment, that dont already reside there. In which case it would set each byte of memory trying to be accessed to 00h. This way the programs could still corrupt the memory segment, but they couldn't breed in it. In the memory segment there could be three "OS repairers" running. If these repair programs detect any corruption in the OS's code then its replaced with the original OS code. These repair programs could also check each other and make sure they havent been corruption. This would make it very difficult to corrupt the OS. I'm getting pretty far along with assembly too, and it doesnt really look like it would be too difficult to make a barebones OS. But at the moment I can't say for sure how feasible these repairer programs are. I'll keep learning assembly and see if I come up with anything. I feel some how that if I were to make a virtual machine I would be limiting and confining its potential.