Report Number: CSL-TR-77-130
Institution: Stanford University, Computer Systems Laboratory
Title: The structure of directly executed languages: a new theory of interpretive system design
Author: Hoevel, Lee W.
Author: Flynn, Michael J.
Date: March 1977
Abstract: This paper concerns two important issues in the design of
optimal languages for direct execution in an interpretive
system: binding the operand identifiers in an executable
instruction unit to the arguments of the routine
implementingthe operator defined by that instruction; and
binding operand identifiers to execution variables. These
issues are central to the performance of a system both in
space and time.
Historically, some form of "machine language" is used as the
directly executable medium for a computing system. These
languages traditionally are constrained to a single
"n-address" instruction format; this leads to an excessive
number of "overhead" instructions that do nothing but move
values from one storage resource to another being imbedded in
the executable instruction stream. We propose to reduce this
overhead by increasing the number of instruction formats
available at the directly executed language level.
Machine languages are also constricted with respect to the
manner in which operands can be "addressed" within an
instruction. Usually, some form of indexed base-register
scheme is available, along with a direct addressing mechanism
for a few, "special" storage cells (i.e., registers and
perhaps the zeroth page of main store). We propose a
different identification mechanism--based on the Contour
Model of Johnston. Using our scheme, only N bits are needed
to encode any identifier in a scope containing less than 2**N
distinct identifiers.
Together, these two results lead to directly executed
language designs which are optimal in the sense that: (1) k
executable instructions are required to implement a source
statement containing k functional operators; (2) the space
required to represent the executable form of a source
statement containing k distinct functional operators and v
distinct variables approaches F*k + N*v -- where there are
less than 2**F distinct functional operators in the scope of
definition for the source statement, and less than 2**N
distinct variables in this scope. (3) the time needed to
execute the representation of a source statement containing k
functional operators, d distinct variables in its domain, and
r distinct variables in its range approaches d + r + k ;
where time is measured in memory references.
http://i.stanford.edu/pub/cstr/reports/csl/tr/77/130/CSL-TR-77-130.pdf