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