It used to be thought that software written in assembler cannot be effectively migrated to a different processor architecture without a complete re-write. But MicroAPL's PortAsm source-level translation products can take assembler source, and port it to a new architecture, optimized to run at full native speed.
PortAsm is the leading commercial assembly-language translation tool, converting assembly-language software so that it becomes a full ‘native’ program for the target architecture. Because PortAsm can analyze the original program in detail, it is able to eliminate irrelevant side-effects of instructions during the translation process, and can also apply block level optimizations. In addition, it can automatically generate any ‘glue’ code needed to interface translated code to re-compiled high-level code, or to the operating system/kernel.
This approach has the advantage that the translated program follows the original very closely (in particular, the code flow is virtually the same), making translation very automatic in most cases. It is also straightforward to continue to maintain the code for the original target processor, which you may need to support for some time. In this mode you keep the same source-code base, and use PortAsm rather like a compiler to generate code for the new target architecture, whilst using the original assembler to continue targetting the original processor.
PortAsm has been used at organizations all over the world since the mid-nineties, successfully translating many millions of lines of mission-critical assembler. Current versions include:
PortAsm/68K for POWER Architecture - Translates general and embedded 680x0 family assembly-language software to the POWER Architecture
PortAsm/86 for POWER Architecture - Translates 80x86 family assembly-language software to the POWER Architecture
PortAsm/68K for 80x86 - Translates 680x0, CPU32 and CPU32+ assembly-language software to the 80x86 architecture
In addition PortAsm exists in a number of versions for older processor architectures.
See here if you have assembler code for a source or target architecture not listed here.