Portability by automatic translation a large-scale case study

Automatic code translation could be a useful technique for software migration, provided it can be done in large-scale industrial applications. We have built an automatic translation system for converting IBM 370 assembly-language programs to C, in order to port the original programs to different architectures. This system, called Bogart, first analyzes the original program in terms of data flow and control flow, and translates it into an abstract internal representation. It performs various transformations on the abstract representation, and finally re-implements it in the target language. Bogart was successfully tested on several large modules with thousands of lines of assembly code each, taken from a commercial database system and application generator. The results of this research are compared with the brute-force approach first implemented by the company, showing Bogart to be superior on all counts. This research is unusual in that it took place in industry, and had a clear objective of translating a real program and not just demonstrating the feasibility of the approach in an academic setting. Lessons from this experience are discussed at the end of the paper.