@InProceedings{Barnes01, title = "tranx86 -- {A}n {O}ptimising {ETC} to {IA}32 {T}ranslator", author= "Barnes, Frederick R. M.", editor= "Chalmers, Alan G. and Mirmehdi, Majid and Muller, Henk", pages = "265--282", booktitle= "{C}ommunicating {P}rocess {A}rchitectures 2001", isbn= "1 58603 202 X", year= "2001", month= "sep", abstract= "This paper describes tranx86, a program which converts Extended Transputer Code (ETC) from a modified Inmos occam compiler, into IA32 code for execution on the Intel i386 family of processors within the KRoC/Linux system. Several optimisations are employed in an attempt to maximise performance on this family of processors, including optimisations in the CCSP run-time kernel. These include a graph-colouring type register allocation scheme and various inlining of code. While tranx86 is mostly architecture dependent, effort has been made to allow the use of arbitrary schedulers, although currently CCSP is the only fully supported one. Various benchmark programs are used to compare the performance of this translator with the old system, giving significant time wins in some cases. For the commstime benchmark program on an 800 MHz Pentium-3, the old KRoC/Linux system gave 233 ns per communication (2 context switches); the new one, with optimisations and inlining, gives 67 ns per communication -- more than a 3-fold reduction in overheads." }