Genetic programming: on the programming of computers by means of natural selection
Genetic programming: on the programming of computers by means of natural selection
Advances in genetic programming
Java Virtual Machine Specification
Java Virtual Machine Specification
Programming for the Java Virtual Machine with Cdrom
Programming for the Java Virtual Machine with Cdrom
Genetic Programming and Autoconstructive Evolution with the Push Programming Language
Genetic Programming and Evolvable Machines
A Brute-Force Approach to Automatic Induction of Machine Code on CISC Architectures
EuroGP '02 Proceedings of the 5th European Conference on Genetic Programming
Decompiling Java Bytecode: Problems, Traps and Pitfalls
CC '02 Proceedings of the 11th International Conference on Compiler Construction
Distributed Java Bytecode Genetic Programming with Telecom Applications
Proceedings of the European Conference on Genetic Programming
Strongly typed genetic programming
Evolutionary Computation
A Field Guide to Genetic Programming
A Field Guide to Genetic Programming
Automatic program repair with evolutionary computation
Communications of the ACM
Automated program repair through the evolution of assembly code
Proceedings of the IEEE/ACM international conference on Automated software engineering
Evolutionary repair of faulty software
Applied Soft Computing
Automatic evolution of java-written game heuristics
SSBSE'11 Proceedings of the Third international conference on Search based software engineering
Representations and operators for improving evolutionary software repair
Proceedings of the 14th annual conference on Genetic and evolutionary computation
A systematic study of automated program repair: fixing 55 out of 105 bugs for $8 each
Proceedings of the 34th International Conference on Software Engineering
Automated repair of binary and assembly programs for cooperating embedded devices
Proceedings of the eighteenth international conference on Architectural support for programming languages and operating systems
A heuristiclab evolutionary algorithm for FINCH
Proceedings of the 15th annual conference companion on Genetic and evolutionary computation
Current challenges in automatic software repair
Software Quality Control
Hi-index | 0.02 |
We describe a methodology for evolving Java bytecode, enabling the evolution of extant, unrestricted Java programs, or programs in other languages that compile to Java bytecode. Bytecode is evolved directly, without any intermediate genomic representation. Our approach is based upon the notion of compatible crossover, which produces correct programs by performing operand stack-, local variables-, and control flow-based compatibility checks on source and destination bytecode sections. This is in contrast to existing work that uses restricted subsets of the Java bytecode instruction set as a representation language for individuals in genetic programming. Given the huge universe of unrestricted Java bytecode, as is programs, our work enables the applications of evolution within this realm. We experimentally validate our methodology by both extensively testing the correctness of compatible crossover on arbitrary bytecode, and by running evolution on a program that exploits the richness of the Java virtual machine architecture and type system.