A fast algorithm for division by constant divisors is presented. The method has proved very useful implemented as microcode on a binary machine, and can be adapted directly into hardware. The mathematical foundations of the algorithm are presented as well as some performance measures.
We present a technique for the compile-time determination of the syntactic attribute of names essential for the development of a compile-time parser for APL. The method is applicable to a large class of APL programs namely, programs which do not utilize certain features of the language allowing dynamic changes in the syntactic meaning of program statements.… (More)
Some results of a study of the static usage of features of the APL language is presented. We compare several characterizations of APL programs with previously measured FORTRAN data, and discuss the significant differences observed. The verity of popular rumors and intuitions about APL programs is also examined. APL users appear to take advantage of the… (More)
The design of a high performance APL system is presented along with an evaluation of the performance improvement measured on a partial implementation. The system contains a compiler which translates APL into the instructions of a virtual APL machine. Numerous special techniques suitable for optimized interpretation of this virtual machine entirely in… (More)
The foundations of capability schemes are critically examined. The context free utilization of capabilities once acquired is shown to be inconsistent with both least privilege norm and information flow requirements. An enhanced Capability Vector mechanism which pre-confines the set of capabilities with which a given capability can be combined is proposed.… (More)
An algorithm is presented for the assignment of instruction addresses and formats under the following conditions: (1) the length of the instruction varies as a function of the distance of the instruction from its target; (2) there exists an optimality criterion which implies some preferential choices subject to the addressing constraints. This may be, for… (More)
Existing implementations of the APL language are generally referred to as "interpretive". APL users rely on system behavior of an interpretive nature, such as "desk calculator mode" debugging, and modern interpreters retain that external view even though internal interpreter organization is highly optimized. Increased use of APL has led to many requests for… (More)