XPL
XPL
OUTPUT = 'This is a line';
It has inline machine code. "Programmers are given all therope they ask for. Novices tend to hang themselves fairlyfrequently." XPL has been implemented on IBM 360, Univac 1100, ICL System 4, CDC 6000 and Cyber series, XDS Sigma-5 and Sigma-7 and DEC PDP-10.
An optimising XPL compiler (version 1) by Robin Vowels
The following areas have been optimised: procedures calls whenthe argument and corresponding parameter are of the same type,and when the argument is a constant; constant subscripts; useof CORELHALFWORD and COREWORD; string constants of length one;iterative DO statements by transferring code to the end of theloop.
String constants of length one do not require a descriptor,hence more descriptors are available for string variables.Comparison operations are treated as commutative, and animproved Commute algorithm is used. Halfword instructions aregenerated for BIT(16) variables.
These areas have been improved or re-written: calls on OUTPUT,catenation, integer-to-string conversion, multiply, divide,and MOD. An emitter for SS-type instructions has been added.The compiler achieves an 11% reduction in object codecompiling itself, an 11% increase in compilation rate, a 55%increase in compilation speed when the $E toggle is set.Special treatment for catenating a string to an integersubstantially decreases consumption of the free string area,and decreases string moves. The latter improvement is mostnoticeable on small core machines.
Core requirements: less than the improved XCOM on which it isbased (approx. 98000 bytes). Symbol table size is 468.Ported to IBM System 370. The compiler is written in XPL.The code generators are machine-specific.
["A Compiler Generator," W.M. McKeeman et al, P-H 1970].
[JCC, AFIPS 1968].