We could:
Even though all of the programs may be written in a high-level language, it is quite expensive and time-consuming to port programs to a new ISA. Differences in the architectures, operating systems and compilers usually make this option infeasible. Another common problem is the inability of organizations to locate their source code files.
Exception: interpreted languages, such as Java, cost nothing to port because the interpreter provides its own machine (such as the JVM for Java)
A machine code simulator is a software program, written on the new computer, that executes code of another ISA. Simulators are relatively inexpensive to write or are available to purchase. But, they execute programs quite slowly (typically 100 to 1000 times slower).
Translation is a fruitful possibility because the code is converted to the new native mode. System calls and APIs often doom this approach but some vendors have released successful translators.
This is a temporary solution because you don't have any source code for your production programs.
An emulator is an extension to the microcode, in the new computer, that executes other ISAs. Emulators run programs faster than on their original computer. They are widely available, at nominal cost or free, on larger computer systems.Note that many vendors often provide simulators and call them emulators, for obvious reasons. This happens so often that the word emulator has come to mean a machine-code simulator. This is another example of word misuse that causes confusion. But it's easy to tell the difference; just compare performance with the original computer.