IL(ID:8252/)



Madrid Scientific Systems Programming Language developed by IBM Madrid Scietific Research Center

Used to make system independent versions of APL etc


References:
  • M. Alfonseca, D. Selby "APL2-a RISC business" December 1987 ACM SIGAPL APL Quote Quad , Proceedings of the international conference on APL, Volume 18 Issue 2 view details Abstract: APL2 is one of the most exciting programming languages to evolve from IBM's original APL discovery. APL2 has been restricted to IBM 370 mainframe computers, due to the complexity of the interpreter required to implement all facets of the language. This paper describes a joint research / feasibility study carried out by IBM's Madrid and Winchester Scientific Centres on generating a ?Portable? Workstation APL2 interpreter.
    Extract: The IL Compiler
    The IL Compiler
    Once a target machine is selected, the machine independent APL2 interpreter should be compiled into the corresponding machine language. This is done by appropriate IL compilers.
    IL is a high level assembly language, and its translation to any target machine language is simple and straightforward. IL compilers, therefore, need only a single pass and are automatically optimising, without additional efforts, as they usually have to perform a symbol to instruction translation. However, further optimisations may be added to the compilers, to obtain a better performance of the resulting program, which is extremely compact.
    A compiler translating IL into the PC machine language was already in existence, as a sub-product of the APL/PC project performed by Madrid Scientific Centre. For the RT/PC, a new compiler had to be built. It was written in APL2, running under VM in the 370 family of machines, and compiles to ROMP assembly code, (ROMP is the processor used in the RT/PC range of machines), so that it would be very easy to perform hand optimisations, although, in general, this was not found to be necessary. This compiler represents about 200k of APL2 source code.
    APL2 is an unusual choice for the development of a compiler, since it is interpreted, which will make the compiler operation slower. However, in this particular case, speed of compilation is not a consideration, for the interpreter should be compiled only once (barring debugging changes). Compilation of the whoIe interpreter (about 20000 IL executable statements) takes about 3 hours on a 4381 machine.
    The compiler performs typical operations like:
    Common sub-expression elimination
    Register renumbering
    Invariant code motion
    Constant arithmetic
    Constant folding
    In addition, the compiler performs optimisation on multiolication and takes full advantage of the ROMP?s overlapped branch instructions. This can yield about 33% improvement in performance.
    The complexity of IL may be judged by its expansion factor which is about 7.5:1, that is each line of IL will on average generate 7.5 lines of ROMP assembler code.
    Besides the two IL compilers mentioned in the above other IL compilers exist for the 370 and the Series/l machine languages. The 370 version was used to generate a test case for our machine independent APL2 interpreter, and is used for debugging purposes and for comparison with the host product.