1. A method for compiling an executable file for execution on a target system, wherein the target system comprises a host processor having a first, fixed processor instruction set and a heterogeneous co-processor having reconfigurable logic for dynamically reconfiguring the co-processor's instruction set to be any of a plurality of predefined co-processor instruction sets, wherein each of the plurality of predefined co-processor instruction sets provides extended instructions that are not natively supported by the first instruction set of the host processor, thereby extending the first processor instruction set of the host processor, and wherein the plurality of predefined co-processor instruction sets are mutually exclusive, the method comprising: receiving, by a compiler, source code for a software application; analyzing, by the compiler, types of operations encountered in the received source code determining, by the compiler using said analyzing, instructions of a predefined co-processor instruction set of the plurality of predefined co-processor instruction sets that optimally enhance performance of at least a portion of the types of operations encountered in the received source code; selecting, by the compiler, said predefined co-processor instruction set of said plurality of predefined co-processor instruction sets as a selected predefined co-processor instruction set having extended instructions to be generated in said executable file; and processing, by the compiler, the source code to generate said executable file that comprises native instructions of the host processor's instruction set, and extended instructions of said selected predefined co-processor instruction set determined to optimally enhance performance of the at least a portion of the types of operations encountered in the received source code.