Logical shift Project home

Glossary

DICTIONARY, n. A malevolent literary device for cramping the growth of a language and making it hard and inelastic. This dictionary, however, is a most useful work.

-- Ambrose Bierce, The Devil's Dictionary

Alignment
An address is aligned to a certain quantity if it is a multiple of that quantity. That is, an address is word aligned (for the purposes of this project) if it is a multiple of 4.
Byte
Usually this means the smallest quantity of data that a processor can manipulate. (Early computers had 6 and 7-bit bytes). Modern computers take the length of a byte to be 8 bits, and actually tend to work with larger quantities. For the purpose of this project, all bytes are 8-bits wide.
Bytecode
A name given to a class of language intended for easy evaluation by a software interpreter. Bytecodes are most common in interpreted languages (such as Prolog, elisp, perl and many of the variants of ML), and get their name from the common practice of encoding their instructions as single bytes, to allow the interpreter to quickly look up an instruction's meaning. Bytecode languages are also used where cross-platform execution of code is desired (for example, Java or ZCode) - in this case, the intention is that the interpreter should be very much simpler than the compiler, and the bytecode bears a strong resemblance to a machine language. Some bytecodes, such as elisp, exist merely to cut down on the evaluation time of expressions - these bytecodes often bear more resemblance to the high-level language they were compiled from. Bytecode is an overloaded and occasionally abused term.
IETF
Internet Engineering Task Force. The coordinating body behind most major internet protocols.
LEAP
Lightweight & Efficient Application Protocol. An open datagram protocol designed for mobile phones. LEAP is a 'push' protocol, designed for SMS-like applications.
Partial Evaluator
A process that automatically applies specialisation to a source program. An extreme example of a partial evaluator is a compiler (whose object output is a specialised version of the source code). A 'Just-in-Time' compiler does a similar job, but at run-time. Other examples of partial evaluators include C-Mix and Tempo.
PC
Abbreviation for Program Counter
Program counter
In a bytecode context, a variable that holds the address of the instruction currently being executed. In the context of a microprocessor, the program counter is a special register that usually stores the position of the instruction currently being read. For example, R15 is the program counter on ARM-based processors. Due to the pipeline architecture, ARM2/3/6/7 cores have a PC that is two instructions ahead of the one being executed, and StrongARM cores have one that is (up to?) four instructions ahead.
PDA
Personal Digital Assistant. A generic term for a 'palmtop' computer. The boundary between these and mobile phones is becoming blurred, as the operating systems that run PDAs such as Psion organisers or Palm Pilots are integrated into mobile phones, and cellphone technology is integrated into PDAs such as the Palm VII.
RFC
Request For Comments. Originally used as a label on a published working paper, this term is now commonly used to refer to a numbered IETF paper.
SMS
Simple Message Service. Many cellphone networks provide the ability to send short (up to 160 character) messages between mobile phones.
Specialisation
If a program taking static data S and dynamic data D produces a result R, than a specialisation of that program would take just the dynamic data D, producing the same result, R. This is a technique often applied to interpreted languages, removing a layer of unnecessary interpretation. A piece of software that performs automatic specialisation is called a partial evaluator.

A simple example of a specialisation can be made with the C printf statement. Often this takes a constant string which indicates how and where the rest of its input is to be displayed. A simple example would be 'printf("String is %s\n", str);' (where str is a char*). This could be specialised to 'puts("String is ");puts(str);putchar('\n');', removing the need to interpret the first string (with performance benefits that should be obvious).

Virtual Machine
An architecture that is emulated for the purpose of portable bytecode execution. Usually, the architecture of the virtual machine is not based on any physical machine, but rather designed to help the interpreter execute the code. Usually a VM design incorporates the memory layout of the system and the Security can be designed into a language by specifying a VM that enforces restrictions.
VM
Abbreviation for Virtual Machine
WAP
Wireless Access Protocol. A transport designed for providing internet-like services over archaic mobile services. WAP is bogged down by patent restrictions, excessive legacy support (including systems that were obsolete when the protocol was designed!), industry infighting and standards fluctuations.
Word

For the purposes of this project, a 'word' is a 32-bit quantity made up of 4 bytes. Note that a word may be 'big endian' (with the most significant byte first), or 'little endian' (with the least significant byte first).

In the context of a microprocessor, a word is usually the width of the widest register the processor has (hence, the largest quantity of data the processor can deal with in a single instruction)

Z-Machine
Designed in 1979 as a way of writing machine-independant interactive fiction ('text adventures') for the Infocom company. The Z-Machine is notable for its device independance, small size and the (almost unique) designed-in ability to save the machine's complete state in a compact and portable format.

Andrew Hunter
Last modified: Thu Oct 26 22:26:22 GMT 2000