384 Part 4 The instruction-set processor level: special-function processors
Section 4 Processors based on a programming language
and storage is allocated dynamically, e.g.,
new N; . . .; N ¬ 4; . . .; begin new A; A ¬ list N;
In order to cope with these problems the EULER execution system uses a run time stack. Each operation is accompanied by stack pointer manipulations which by the microprogram can be accomplished in minimum time (in general, even without extra time because they are overlapped with the operation proper), whereas extra instructions would be required, if the program were compiled.
3. List processing. EULER includes a list processing system, and lists are of a general tree structure, e.g.,
A ¬ (3, 4, (5,6,7), true, ' . . . ');
List operators are provided like tail and cat and subscripting:
B¬ A[3]; C ¬ B cat A; C ¬ tail C;
The string language interpreter handles list operations directly and efficiently by special microprograms. If the program would be compiled to 360 machine language, a sequence of instructions would be required for each list operation.
EULER system on IBM System/360 Model 30
An experimental processing system for the EULER language has been written to demonstrate the validity of these ideas. It is a system running under the IBM Basic Operating System and consists of three parts:
1 A translator, written in Model 30 microcode.1 This translator is a one-pass syntax-driven compiler which translates EULER source language programs into a reverse polish string form.
2 An interpreter, written in Model 30 microcode,1 which interprets string language programs.
3 An I/O Control Program written in 360 machine language.2 This IOCP links the translator and interpreter to the operating system and handles all I/O requests of the translator and interpreter.
The system is an experimental system. Not all the features of EULER are included,-only the general principles that are to be demonstrated. The restrictions are:
1 Real numbers are not included; only integers are recognized.
2 The interpreter microprograms for the operators Divide, Integer Divide, Remainder, and Exponentiation have not been coded.
3 The type 'symbol' is not included.
4 No garbage collector is provided. Therefore, the system comes to an error stop if a list processing program has used up all available storage space (32K bytes).
Also for reasons of simplicity, the system is written only for a 64K System/360 Model 30 and the storage areas for tables, compiled programs, stacks and free space are assigned fixed addresses.
The string language into which source programs are translated is defined as closely as possible to the interpretive language used in the definition of EULER [Wirth and Weber, 1966a and 1966b]. The question whether this is the ideal directly interpretable language corresponding to the EULER source language given the Model 30 hardware is left open. Also no attempt is made to define the string language so that it becomes relocatable for use in time sharing or conversational processing mode.
The three storage areas used by the execution system are:
1 Program area
2 Stack
3 Variable area
Program area. A translated program in string language consists of a sequence of one-byte symbols for the operators (+, -, begin, end, ¬ , go to, etc.). Some of the symbols have trailer bytes associated with them; for instance, the symbol + number has three trailer bytes for a 24-bit absolute value of the integer constant.
The symbol reference (@)has two trailer bytes, one containing the block number (bn), the second one the ordinal number (on).
1
Stored in the second Read-Only Storage (Compatibility ROS) of Model 30.