1. A method for translating off-line a first non-source code version of a computer program expressed in terms of a first instruction set, the first version of the computer program being executable on a source computer, to a second non-source code version of the computer program expressed in terms of a second instruction set different from the first instruction set, the second version being executable on a target computer different from the source computer, at least one instruction in the first version of the computer program having primary and side effects, the method comprising the computer implemented steps of: producing a complete intermediate language representation of the entire first non-source code version of the computer program by expanding instructions of the first non-source code version into a plurality of intermediate language instructions which explicitly replicate primary and side effects of all the instructions of the first version; processing the entire intermediate language representation to eliminate individual instructions whose elimination does not affect any substantial functionality of the program; and creating from the intermediate language representation a second non-source code version of the entire program having a functionality substantially the same as the first version, the second non-source code version being executable on the target computer without further translation.