Relogix™ Technical Tour

Click here to download PDF version (253KB, 19 pages)

What is Relogix?

Relogix is an advanced assembler-to-C migration tool which can take assembly-language source files and automatically re-code them in naturally-structured, readable, maintainable C, complete with meaningful variable names and types. Unlike most other attempts at automated conversion from assembler to C, Relogix is designed to produce results which are as close as possible to what a skilled human programmer would produce if asked to migrate an assembler source file to C. The intention is that the translated sources can then be refined and developed further by hand.

The translation process is very largely automatic, but not entirely so. This is partly because some assembler constructs cannot be translated automatically because of fundamental architectural differences between assembler and C, and partly because a small amount of manual intervention in the translation process can sometimes help Relogix produce much better code. Where you need to help Relogix with the translation, you usually do so by editing the original assembler source file. You can either change the original source to avoid using the construct which gave rise to the problem, or in some cases you can provide a 'hint' which provides Relogix with information about what the program is doing. You can also optionally supply Relogix with header files containing your own definitions of data types and function prototypes.

Supported architectures

Relogix can be used to translate the following architectures:

  • Relogix/68K translates code originally written for the 680x0, CPU32, and ColdFire architectures
  • Relogix/86 translates 32-bit 'flat' code originally written for the 80386 family, including the Intel Pentium and other descendants of the 80386.
  • Relogix/51 translates 8051-family assembler.
  • Relogix/MF translates IBM mainframe assembler source (BAL and HLASM) to C.

Note: Relogix/51 and Relogix/MF are currently available only as a porting service. For migration from other architectures, see here.

Some instructions which are only used in system-level code, or which rely on hardware features not reproducible in C, are not translated automatically. Neither are SIMD instructions nor certain special instructions which are rarely used.

Floating-point instructions are currently supported only by Relogix/86.