1. A method of performing superscalar out-of-order processing in software on a computer system comprising: loading a plurality of operation codes (opcodes) into an analysis thread of a core of a processor of a computer of the computer system, wherein the computer system comprises a plurality of computers connected through a network and bus; analyzing, at the analysis thread, the plurality of opcodes to identify a plurality of non-independent opcode snippets; distributing the plurality of identified non-independent opcode snippets to one or more separate threads by the analysis thread, wherein the distributing comprises: distributing the plurality of identified non-independent opcode snippets to a thread of the same instruction set architecture (ISA); and distributing the plurality of identified non-independent opcode snippets to a code morphing thread when the plurality of identified non-independent opcode snippets needs to be executed in threads of different ISA, and distributing the plurality of identified non-independent opcode snippets to the threads of different ISA by the code morphing thread; instructing each of the one or more separate threads to execute each of the plurality of distributed non-independent opcode snippets, respectively; and collecting the results of the executions of each of the one or more separate threads by a consolidation thread.