The
following glossary describes some terms
that either often or sometimes require definition. Many terms may have
common usage in the technical community, while some may only be familiar
to Cygnus engineers when needing to designate tools, platforms or processes.
For more etymology
and history of the technical jargon,
see the following HTML documentation:
This list of URLs
is by no means exhaustive of the available content. Accordingly, it will
continue to grow as the technology and
the technology community grows.
A
a.out
The original UNIX object
file format, still in use on SunOS, though not Solaris operating systems.
Supports only three sections.
a29k
AMD
29000 family of
RISC processors.
ABI
Application Binary Interface,
which defines how programs should interface with the operating system,
including specifications such as
executable
format, calling conventions, and chip-specific requirements.
accumulator
A
register
being used for arithmetic or logic (as opposed to
addressing
or a
loop index), especially one being
used to accumulate a sum or count of many items.
address
A number identifying a location
in the computer's memory that informs the computer where to find information
such as a file name or data for processing.
ADP
Angel Debug Protocol,
a
protocol used with
ARM's
newer Angel monitor and their
Embedded
ICE.
AIX
IBM's
version of
UNIX for
RS/6000
and
PowerPC. Pronounced
aches
.
Alpha
Name for
Digital's
family of 64-bit RISC processors.
API
Application Programming
Interface,
defining how programmers write source code that makes use of a library's
or operating system's facilities by accessing the behavior and state of
classes and objects.
ARC
Argonaut RISC Chip,
a simple
RISC processor designed into
custom chips.
architecture
A term for a
family
of
processors, generally used in reference
to features common to all members.
ARM
Acorn RISC Machine's
family of RISC processors.
Also,
Annotated
Reference Manual for C++, often used to describe a
name-mangling
style.
array
A collection of data items,
all of the same type, in which integers designate each item's position.
ASCII
American Standard Code
for Information Interchange. The predominant
character set encoding of present-day computers. The modern version uses
7
bits for each character, whereas most
earlier codes (including an early version of ASCII) had fewer assignments.
assembler
A tool that produces object
files from
assembly
code like the GNU assembler,
gas.
B
backend
The set of functions which
appear in a particular target vector.
The implementation within
BFD of a specific object file format.
backtrace
A summary of how a program
got where it is with a
debugging process.
bar
Used very generally as a
sample name for absolutely anything, especially programs and files. Etymology
from Army slang acronym,
FUBAR (bowdlerized
to mean "Fouled Up Beyond All Repair").
bash
A basic
command
shell ("Bourne Again Shell"), typically for UNIX or Linux operating systems,
based on the Bourne shell. See
shell .
BDM
Background Debugging Mode,
referring to the ability of the CPU32 sub-family (68302, 68360, etc.) of
Motorola 68000 series chips and
Motorola
PowerPC chips to be directly controlled through a special set of pins.
BFD
Binary File Descriptor,
the library used by GNU tools to read and write object files.
bi-endian
Refers to a processor or
toolchain that supports both
big-endian
and
little-endian code.
big-endian
A byte-ordering scheme in
which the most significant bytes are at lower addresses (big-end-first),
such as the Motorola 68000 family of microprocessors and most of the various
RISC
designs, which use a
big-endian microprocessor.
bignum
A multiple-precision computer
representation for very large integers. Most computer languages provide
a kind of "
integer-based" data, but such
computer integers are usually very limited in size; to work with larger
numbers, use floating-point numbers, which are usually accurate to only
six or seven decimal places. Computer languages that provide bignums can
perform exact calculations on very large numbers, such as 1000! (the factorial
of 1000, which is 1000
x 999
x 998
x ...
x
2
x 1).
binary
Base-two number system, of
which the only digits are 0 and 1. Used as a signal for processing as either
off (0) or on (1); from right to left, the digits have a binary value of
1, 2, 4, 8, 16, and so on in multiples of 2, exponentially (the binary
number of 101, for instance, is equivalent to the decimal number, 5, and
the binary number of 1011 is equivalent to the decimal number, 13). See
also
unary and
ternary. Compare
floating point noation.
binary operator
An operator that has two
arguments.
Bison
The GNU
parser
generator, a workalike for
yacc.
bit
A computational quantity
that can take on one of two values, such as true and false or 0 and 1.
A bit is said to be set if its value is true or 1, and reset or clear if
its value is false or 0. One speaks of setting and clearing bits. To toggle
or invert a bit is to change it, either from 0 to 1 or from 1 to 0.
boot/
bootstrap
The action for a machine
to run through its opening processes, for instance, for a compiler's initialization.
Known by having to put on boots by pulling on the sidestraps before going
out in the world.
breakpoint
What makes a program stop
whenever a certain point is reached in a debugging process. See also
watchpointand
tracepoint.
BSD
Berkeley Software Distribution,
a family of
UNIX software tools from
U.C. Berkeley, originally licensed from AT&T, and later upgraded to
all-free code. Formed the basis for
SunOS,
incorporating
paged
virtual
memory,
TCP/IP
networking
enhancements, among other features.
BSP
Board Support Package,
typically referring to the low-level code or scripts that build programs
running on a particular chip on a particular circuit board. Also refers
to the
ROM that boots an
RTOS
onto a specific board. Exact meaning varies.
buffer overflow
What happens when you try
to stuff more data into a buffer than the buffer has been constructed to
hold.
buffer
A holding area in a program's
memory (like an
Emacs buffer) for text
waiting to be edited.
bug
A problem with software that
needs a
patch. Etymology obscured by
various myths such as the Naval Surface Warfare Center story, with a picture
of the logbook and the purported moth taped into it, recorded in the "Annals
of the History of Computing" [Vol. 3, No. 3 (July 1981), pgs. 285--286],
as well as the electrical handbook, "
Hawkin's
New Catechism of Electricity" [Theo. Audel & Co.], which says, "The
term,
bug, is used to a limited extent to designate any fault or
trouble in the connections or working of electric apparatus."
build
The process of configuring,
compiling, and linking a set of tools. Also used as a noun, to denote the
results of the process.
Byacc
Berkeley yacc , version
in
BSD UNIX. See also
yaccand
Bison.
byte
A sequence of eight
bits.
bytecode
Machine-independent code
generated by a compiler and executed by an interpreter.
C
Canadian cross
A
cross-compilation
in which a program being compiled is a cross compiler for some other host/target
pair. Example: building a
Motorola 68000
cross compiler that runs on a 486 PC using a Sun SPARC station.
canonical
The usual or standard state
or manner or usage in technical terminology, derived from computation theory
and mathematical logic, meaning that, for instance, two formulas such as
1 + x and x + 1 are said to be equivalent because they mean the same thing,
but the second one is in canonical form because it is written in the usual
way, with the highest power of x first.
CHILL
A high-level language popular
in Europe for telecommunications programming.
CISC
Complex Instruction Set
Computer. This class of machines typically
has variable-length instructions with a variety of addressing modes. Examples
include x86, m68k, and vax.
classes
A class definition defines
instance and class variables and methods, as well as specifying the interfaces
the class implements and the immediate superclass of the class. In
Java,
a type that defines the implementation of a particular kind of object.
class file
The Java binary file format
for the Java Virtual Machine (JVM) for the `
.class' file that,
after compiling, contains bytecode and symbols (like an object file); see
also
bytecode and
JVM.
COFF
Common Object File Format.
This format appeared with UNIX SVR3, formerly common for UNIX, and still
used by some embedded systems. The
Microsoft
PE
format for
Windows is based on COFF.
COFF debugging
The debug format that is
defined as part of the
COFF specification.
comment
In source code, explanatory
text that the compiler ignores. In most code, comments are delimited using
//
or
/* ...
*/ .
compiler
A tool that translates high-level
source
code in a language such as
C or
Pascal
into machine-executable programs. The term may also refer specifically
to the tool that translates from source to assembly language.
copyleft
The copyright notice for
GNU
Emacs and other GNU software, the
GNU
General Public License, which grants reuse and reproduction rights to all
users.
critical section
A segment of code in which
a thread uses resources (such as certain instance variables) that can be
used by other threads, but that must not be used by them at the same time.
CRLF
A
carriage
return (
CR; for the
ASCII, 0001101...for
the octal, \015...for the hex, 0x0f) followed by a
line
feed (
LF; for the ASCII, 0001010...for the octal, \012...for the
hex format, 0x0c).
cross-configuration
A different target machine
than the development tools themselves, which run on the host--for example,
when working on a software application with a SPARC station that generates
and debugs code for a Motorola Power PC-based board.
csh
C shell, a
c
ommand
sh ell for users to type commands, interacting with the operating
system. Uses a C-like command syntax, typically for UNIX/Linux developers.
CVS
Concurrent Version System,
a free
source version control system
currently used for all sources at Cygnus.
CX/UX
A version of
UNIX
produced by
Harris Computer Systems.
CygMon
Cygnus' standard
ROM
monitor.
Cygnus
The leading provider of single-source,
UNIX, and NT desktop and cross-platform development tools for 32- and 64-bit
microcontrollers. The company strategy is to continue to extend the functionality
and performance of its development tools, as well as to deliver innovative
software component technologies for embedded systems.
With Roman etymology (for
swan),
named for the constellation, Cygnus is within the plane of our Milky Way
galaxy and is 2,500-10,000 light-years away, forming a
cross.
The brightest star in Cygnus is
Deneb.
Cygnus Insight
The GNUPro visual debugger
(formerly known as
GDBTk).
Cygwin
Cygnus'
UNIX
emulation library for Windows 95 and NT operating systems.
D
D10V
A small VLIW processor developed
by Mitsubishi, featuring 32-bit instructions each, with two 15-bit subinstructions.
D30V
A
VLIW
processor developed by
Mitsubishi, and
intended for use in video processing applications (camcorders and DVD players).
It has 64-bit instructions each, with two 30-bit subinstructions.
daemon
A program that is not invoked
explicitly, but lies dormant waiting for some condition(s) to occur. The
idea is that the perpetrator of the condition need not be aware that a
daemon is lurking.
dbx
The standard debugger on
many UNIX systems.
debug format
The layout of debugging information
within an object file format. Debug formats include stabs,
COFF,
DWARF,
and
DWARF 2.
debug protocol
A mechanism by which a
debugger
examines and controls a program being debugged.
debugger
A tool that allows programmers
to examine and control a program, typically for the purpose of finding
errors in the
program.
DejaGNU
The regression testing framework
used at Cygnus, based on
tcland
expect.
delta
A quantitative change, especially
a small or incremental one, used in general in physics and engineering.
Often represented as
or
.
diff
A UNIX command to generate
a listing of changes, especially giving differences between (and additions
to) source code or documents. See also
patch.
DJGPP
D.J. Delorie's
DOS
port of GNU, using the
GO32 DOS extender.
It includes all the standard GNU tools, and runs in the
Windows
environments.
dynamic link
A program's link against
a shared library that, when run, is locateable by the appropriate shared
library, arranging to have inclusion in the program that is running.
dynamic object
Another name for an ELF shared
library.
DWARF
A
debugging
format based on attribute records. Versions include DWARF 1, 1.1, 2, and
extensions to 2.
E
E7000
An
ICE
produced by
Hitachi for its
SH
and
H8/300 processors.
EABI
Generic term for an
ABI
adapted for
embedded use.
EBCDIC
Extended Binary Coded
Decimal Interchange Code, a character
set used by
IBM before its open-systems
policy, allegedly adapted from punched card code.
ECOFF
Extended COFF,
a format used with MIPS and Alpha processors, both for workstations and
embedded uses.
eCos TM
Embedded Cygnus Operating
System, a complete,
open-source
run-time
environment, allowing embedded system developers to focus on differentiating
their products instead of developing, maintaining, or configuring proprietary,
real-time
kernels.
EGCS
GNUPro compiler tool, EGCS
is the actual name for the current version of the GNU compiler, version
1.1.2; EGCS is pronounced "eggs" with the "C" silent.
ELF
Extended Linker Format.
Appeared with UNIX
SVR4 and used on many
systems, including
Solaris/
SunOS,
Irix, and
Linux.
Many embedded systems also use ELF.
Emacs
A programmable text editor
(derived from "Editing MACroS"), including facilities to run compilation
subprocesses and send and receive mail. Originally written by Richard
Stallman
at the
MIT AI lab.
embedded development
Using software applications
with cross-configuration (working with a different target machine than
the development tools themselves,which run on the host)--for example, a
SPARC generating and debugging code for a Motorola Power PC-based board.
encryption
Use of algorithms to alter
data, making it incomprehensible to unauthorized viewers.
end point
Device at which a virtual
circuit or virtual path begins or ends.
enterprise network
Large and diverse network
connecting most major points in an organization.
EEPROM
Electrically Erasable
Programmable Read-Only Memory .
EPROM
Erasable Programmable
Read-Only Memory , non-volatile memory chips that are programmed after
they are manufactured, and, if necessary, made erasable and reprogrammed.
Compare with
EEPROM and
PROM.
exception
An event during program execution
that prevents the program from continuing normally; generally, an error.
exception handling
Event that occurs when a
block of code reacts to a specific type of exception. If the exception
is for an error from which the tool, the
debugger,
for instance, can recover, the debugger resumes its process.
executable file
A
binary-format
file containing machine instructions in a ready-to-run form.
expansion
The process of running a
compressed data set through an algorithm that restores the data set to
its original size.
expressions
A specification for an address
or numeric value. An
empty expressionhas
no value (being either whitespace or null). An
integer expressionis
one or more arguments delimited by operators. Arguments can use symbols,
numbers or sub-expressions.
Sub-expressionshave
a parenthetical usage containing an integer expression, or they are a
prefix
operator followed by an argument. See
Using
as
in the
GNUPro Utilities documentation for more discussion
of these subjects.
expect
A program that allows scripted
control over another program.
F
flex
The GNU
lexical
analyzer generator.
floating-point
A number representing a mantissa
(usually, a value between 0 and 1) and an exponent according to a given
base (usually, 2).
floating-point
notation
Numeric system used to represent
very large and very small real numbers. With two parts, a mantissa and
an exponent; for example, 153,000,000 and 0.0009375 have the floating point
notation, respectively, of 153E4 and 9375E-7. See also
FLOPS.
FLOPS
Floating-point
operations
per
second,
a measure of computer's speed of performing floating-point operations.
Compare
MIPS.
foo/
foobar/foo.bar/.bar
Used very generally as a
sample name for absolutely anything, especially programs and files. Etymology
from Army slang acronym,
FUBAR (bowdlerized
to mean "Fouled Up Beyond All Repair").
FreeBSD
A free
UNIX
operating system for PCs. See
BSD .
FTP/ ftp
File Transfer Protocol,
based on
TCP/IP, which enables getting
and storing files between hosts on the web.
function
Segments of C or C++ programming
languages which provide a means for a program to transfer and to generate
data in a modular way. A program can have many functions but only one
main
function to which all other functions address. See also
program.
G
garbage collection
The automatic detection and
freeing of memory that is no longer in use. A
runtime
system performs garbage collection so that programmers never explicitly
free
objects.
gas
Acronym for the GNU
assembler.
Interchangeably used with capitalization, as GAS.
gcc
Acronym for the GNU C
compiler.
Interchangeably used with capitalization, as GCC.
gcj
Front end to GCC that is
able to read Java `
.class ' files, generating assembly code.
gcjh
A program to generate C++
header files corresponding to
Java `
.class'
files.
gdb
Acronym for the GNU
debugger.
Interchangeably used with capitalization, as GDB.
gdbtk
glibc
GNU ANSI C library, a fully
POSIX and ANSI compliant C library, more suited to native UNIX systems
and heavily used for Linux. See
newlib.
global variable
Any variable external to
a function. See also
local variable.
GNU
Recursive acronym for
GNU's
Not UNIX. A project to build a free operating system, started by
Richard
Stallman in 1985, with many useful spinoffs, such as the
Emacs
text editor, a C compiler (gcc or egcs), a debugger (gdb), and many other
programming tools.
GO32
Freeware 32-bit
DOS
extender. Also the Cygnus name for GNU tools ported to DOS using
GO32.
See
DJGPP.
GUI
Graphical User Interface,
which refers to an interface and the techniques involved in using a keyboard
or a mouse, for instance, to provide an easy-to-use interface to some software.
Arguments ensue over the pronunciation ("gooey" or "gee-you-eye").
H
h8300
Cygnus name for
Hitachi's
H8/300 family of microprocessors, including H8/300, H8/300H and H8/S.
hacker
A person who enjoys exploring
the details of programmable systems and how to stretch their capabilities.
Also, one who programs enthusiastically (even obsessively) or who enjoys
programming rather than just theorizing about programming.
hacker ethic
Belief that information-sharing
is a powerful positive good, and that it is an ethical duty of hackers
to share their expertise by writing free software and facilitating access
to information and to computing resources wherever possible.
Also, the belief that system-cracking
for fun and exploration is ethically correct as long as the cracker commits
no theft, vandalism, or breach of confidentiality.
hex /
hexadecimal
The numbering system that
uses 16 as its
base. The code signified
by
0 through
9 and
a through
f (or
equivalently
A through
F ) represents the digits, 0 through
15.
host
The computer on which the
compiler runs.
HPPA
Cygnus name for
Hewlett
Packard's
PA architecture.
HP/UX/ hpux
Hewlett
Packard's version of UNIX for Motorola 68000 and
PA
architectures. Versions include 7, 8, 9, 10, and 11. Interchangeably designated
as "HP-UX" in the industry.
hpux is the Cygnus usage.
I
i370
Cygnus name for the
IBM
370 mainframe computer.
i386
Cygnus name for the 32-bit
members of the
Intel
x86
family. Members include 386, 486,
Pentium
("i586"), and Pentium Pro ("i686").
i860
Cygnus name for an obsolete
family of Intel RISC processors.
i960
Cygnus name for Intel's 80960
family of
RISC processors.
ICE
In-Circuit Emulator,
a hardware device that gives an engineer control over the execution of
a processor while it's connected to the rest of a system's circuitry.
Emulators
are powerful hardware debugging tools that can connect to debuggers.
IDE
Integrated Development
Environment, a GUI tool or a set of tools
that uses GUI functionality.
ILU
Inter-Language Unification,
a partial
CORBA implementation from
Xerox
PARC, allowing programs to associate.
includefiles
Often designated as
#includefiles,
using or assigning duplication of a portion (or whole) of another file,
sometimes leading to excessive multi-leveled inclusion (as within a newsgroup's
discussion
thread, a practice that tends
to annoy readers).
Insight
The GNUPro visual debugger,
Cygnus Insight (formerly known as
GDBTk).
interpreter
A
module that alternately
decodes and executes every statement in some body of code.
IP
Internet Protocol,
the basic protocol of the Internet, enabling the delivery of individual
packets from one computer to another across the web. A packet may not be
instantly delivered, or if multiple packets are sent simultaneously, they
may not simultaneously arrive in the order they were sent.
Protocols
built on top of this add the notions of connection and reliability. See
also
TCP/IP.
ISA
Instruction Set Architecture.
Irix
SGI's
version of UNIX for
MIPS architectures.
Versions include 4, 5, and 6.
J
JavaTM
An object-oriented, "write
once, run anywhere" programming language, developed by Sun Microsystems.
Originally called "OAK" (and meant for handheld devices), its purpose is
for using with
JVM on the World Wide Web (see
http://java.sun.com/).
For further reference, see
The Java Language Specification by James
Gosling, Bill Joy and Guy Steele (Addison Wesley, 1996; ISBN 0-201-63451-1).
jcf-dump
Reads a `
.class
' Java-type file and prints out all sorts of useful information.
JDKTM
A software development environment
for writing applets and applications in the Java
TM programming
language, developed by
Sun Microsystems.
JIT
Just-in-time compiler
that converts all of the bytecode into native machine code just as a Java
program is run, resulting in run-time speed improvements over code interpreted
by a Java Virtual Machine (
JVM).
JTAG
Joint Test Advisory Group,
referring to a type of hardware interface that allows the testing of chips
and boards within a complete system; programs running on processors with
JTAG support may be controlled through the processor's JTAG port.
jvgenmain
A small program to generate
an appropriate `
main' for a Java class.
JVM
Java Virtual Machine,
part of the
Java Runtime Environment
responsible for interpreting Java bytecodes.
jv-scan
Reads a `
.java'
file and prints some useful information, such as for instance, which classes
are defined in that file.
K
Knuth
A safe answer. From
Donald
E. Knuth's "The
Art of Computer Programming,"
a reference that answers all questions about data structures or algorithms.
There is a Donald Knuth home page:
http://www-cs-faculty.Stanford.EDU/~knuth.
K & R
From Brian
Kernighan
and Dennis
Ritchie's book, "The
C
Programming Language," (Prentice-Hall, 1978; ISBN 0-113-110163-3), referring
to the pre-ANSI version of the C programming language, as written and invented
by Kernighan and Ritchie.
kluge
A clever and hopefully temporary
programming trick intended to solve a particularly difficult problem in
an expedient, if not clear, manner. Often used to repair
bugs.
Also
kludge. From
the German `klug,' a clever thing; possibly related to the Polish word,
`klucza,' a trick or hook.
L
ld/LD
The
GNU
linker.
Interchangably used with capitalization, as LD. See
linker.
lexical
How the characters in source
code are translated into tokens that the compiler can understand.
lexical scoping
Nested functions that can
access all the variables of the containing function that are visible at
the point of its definition.
LGPL
Library
GNU
Public
License.
libopcodes
GNU library for manipulating
machine opcodes. Its main use is disassembling binary files. Distributed
under the GPL, this is currently only used by the GNU binary utilities,
the GNU assembler and the GNU debugger.
libreadline
This is the GNU command line
editing program, and it is distributed under the GPL. This library implements
full
Emacs or
vi
key bindings with history support. At Cygnus, this is currently only used
by
GDB.
libbfd
This is the
GNU
object file manipulation library, and is distributed under the GPL.
libbfd
is used by the GNU debugger, assembler, linker, and the binary utilities.
It can read and write files in any supported object file format, and presents
a somewhat loosely defined standard for manipulating object files.
libide
This is the Cygnus
IDE
library, a collection of useful procedures, mostly all related from
Tcl/Tk
development. These functions will be useful for all GUI applications. As
they are Tcl/Tk code, all are portable between NT, UNIX and MacOS operating
systems.
linker
A tool that merges
object
files and
library archives (such as compiled
classes),
building an executable, a complete program or a single executable file.
For GNUPro Toolkit, the linker is the
ldtool.
linker script
A set of programmer-supplied
instructions that tell the
linker how
to handle object file sections, how to lay out memory, and so forth. For
native linking, the contents of the linker script are normally determined
by the needs of the operating system; for embedded targets, the programmer
explicitly supplies the linker script.
Linux
A free UNIX operating system
for many kinds of computers, created by
Linus
Torvalds and friends starting about 1990 (the pronunciation of
/lee-nuhks/
is preferred, accenting the first syllable, since the name Linus has an
/ee/sound
in Swedish).
LISP
LIS t
P rocessing
language, based on the ideas of variable-length lists and/or trees as fundamental
data types, and the interpretation of code as data (and vice-versa). Invented
by John McCarthy at
MIT in the late 1950s.
literal
The basic representation
of any integer, floating point, or character value. For example, 3.0 is
a single-precision floating point literal, and "
a" is a character
literal.
local variable
A data item known within
a block, but inaccessible to code outside the block. For example, any variable
defined within a
Tcl method is a local
variable and can not be used outside the method.
little-endian
A
byte-ordering
scheme, such as used by the Intel
x86 family, which is
all little-endian. Describes a computer architecture in which, within a
given 16- or 32-bit word, bytes at lower addresses have lower significance
(the word is stored little-end-first). See also
big-endian.
M
m68k
Cygnus name for
Motorola's
68000 family of microprocessors. Depending on context, the abbreviation
may include the CPU32 and ColdFire families as well. Members include 68000,
68020, 68030, 68040, 68060, 68302, 68332, 5200.
m88k
Cygnus name for Motorola's
88000 family of
RISC microprocessors,
now discontinued.
Mach
An operating system developed
at
Carnegie-Mellon.
machine registers
Used for
general-register
(for intermediary and temporary results), index register (for arithmetic
operation and addressing memory),
pointer
register (for arithmetic operation and addressing memory), and
segment
register (for built-in memory management) purposes.
make
The GNU reconfiguration utility
for automating recompilation, linking, etc., of programs, taking account
of the interdependencies of modules and their modification times.
make
reads instructions from a makefile, Makefile, which specifies a set of
targets to build, a set of files on which the targets depend and the commands
to execute in order to produce them. If
make is run with no arguments,
it looks for a makefile,
Makefile . For historical purposes, see
also
Make: A Program for Maintaining Computer Programs by
A.I. Feldman (a Bell Labs publication).
Makefile
A specific script which tells
a UNIX program,
make , how to build a particular computer program
or set of programs. A
makefile contains variable assignments and
rules that which, with input, say if any files have been modified more
recently than a target file (or if the target does not exist), then execution
of specific commands will normally bulid the target from the inputs. For
an example of a makefile, see
A
simple makefile and
Writing
makefiles with
Usingmake
in the
GNUPro Utilities documentation.
makefile
File run by
make
, the reconfiguration utility.
mangling/
name-mangling
The process by which C++
types and classes are turned into symbols in object files that are compatible
with other languages.
mingw32
Minimal GNU-Win32,
a configuration of the GNU-Win32 tools that avoids the UNIX emulation of
Cygwin
(formerly known as
cygwin32).
Minix
A tutorial version of UNIX,
written by Andy Tanenbaum and described in his textbook.
Minix is
said to have been the inspiration for
Linux.
MIPS
Millions of
instructions
per
second,
a measurement of processing speed.
mips
Cygnus name for the MIPS
family of
RISC processors. Members include
R2000,
R3000, R4000, R5000, R8000, R10000, and
TinyRISC.
There are many vendors of MIPS parts, each using a distinct naming scheme,
such as
V
R4
xxx for
NEC, and
TX39
xx
for
Toshiba parts.
MIT
Massachusetts Institute
of Technology, the birthplace of the
Artificial
Intelligence (AI) Laboratory and the
Tech
Model Railroad Club (
TMRC), one of the wellsprings
of hacker culture. Notably, the main location of GNU conception.
MON960
Intel's ROM monitor for their
i960 processor.
multilibs
A collection of libraries
built with different GNU compiler options, for target processors having
several variants that require changes in code generation, one for each
variant. This ensures that a program using
-msoft-float (enabling
software
floating point functionality)
will link with libraries built using the same option.
multithreading
Functionality of a program
that is designed to have parts of its code execute concurrently. See also
thread.
Multics
MULTiplexed Information
and Computing Service , an early (late 1960s) timesharing operating
system co-designed by a consortium including
MIT,
General Electric, and
Bell Laboratories.
munge
To make changes to a file,
irrevocably, such as a comprehensive rewrite of a routine, data structure
or a whole program. Often an unintentional process of corrupting a file
or memory block so that it's unusable, unreadable, unviewable or unrecoverable.
N
name-mangling
The process by which C++
types and classes are turned into symbols in object files that are compatible
with other languages.
namespaces
An ANSI/ISO standard in development
for the C++ libraries, allowing users to identify the
scope
for selecting specific functions by class or type from separate libraries,
while still being able to let libraries work together and separately.
NCSA
National
Center
for
Supercomputer
Applications, which produced many popular
programs, including Mosaic and a version of telnet (which became Netscape).
nested function
A function defined inside
another function. See also
lexical scoping.
NetBSD
A free UNIX operating system
for PCs and other kinds of computers. See also
BSD.
newlib
Cygnus two C libraries,
libc
(C library), and
libm (C math library) for embedded systems work.
newline
The
ASCII
LF
character (for 0001010), used under UNIX as a text line terminator. See
also
CRLF.
NINDY
An obsolete
ROM
monitor for the i960.
NOP
A machine instruction that
does nothing (sometimes used in
assembler-level
programming as filler or for overwriting code to be removed in
binaries).
NRE
Non-Recurring Engineering
, typically used to refer to one-time-only development, such as re-targeting
to a new architecture or adding a feature.
ns32k
Cygnus name for the
National
Semiconductor 32000 family of processors.
O
object
The principal building blocks
of object-oriented programs. Each object is a programming unit consisting
of data variables and functionality. See also
classes.
object file
A binary-format file containing
machine instructions and possibly symbolic relocation information. Typically
produced by an
assembler.
object file format
The layout of
object
files and executable files. Common formats include
a.out,
COFF,
and
ELF.
OSF/1
The
Open
Software Foundation's version of UNIX, used in Digital's Alpha machines.
overflow bit
A
flag
on some processors indicating an attempt to calculate a result too large
for a register to hold.
P
PA
Name for
Hewlett-Packard's
family of
Precision Architectureprocessors.
patch
A change in source code to
correct or enhance processes. Also a file that contains changes to source
code; specifically, the results of a differentiation and comparison between
the new file(s) and the old file(s). See
diff and
bug .
path
A filename, fully specified
relative to the
root directory (as opposed
to relative to the current directory; the latter is sometimes called a
`
relative path'). This is also called a pathname
or full path. With UNIX and MS-DOS, the search path uses an environment
variable, specifying the directories in which the
shell
(
Command.com , under MS-DOS) should look for commands. Other similar
constructs abound under UNIX (for example, the C preprocessor has a
search
path it uses in looking for
#includefiles).
PDP
Programmed Data Processor
, the machine that made timesharing real, adopted by many university computing
facilities and research labs, including
MIT,
Stanford,
and
Carnegie-Mellon. Some aspects of
the instruction set (most notably the bit-field instructions) are still
considered unsurpassed. The PDP-10 was eventually eclipsed by the
VAX
machines (descendants of the PDP-11) when
DEC
recognized that the 10 and VAX product lines were competing with each other
and decided to concentrate its software development effort on the more
profitable VAX. The machine was finally dropped from DEC's line in 1983,
following the failure of the
Jupiter
Project at DEC to build a viable new model.
PE
Portable Executable,
Microsoft's
object
file format for Windows 95 and NT operating systems. It is basically
COFF
with additional header information.
PPC
PowerPC
family of
RISC processors, designed jointly
by
IBM and
Motorola.
Versions include the 601, 604, 401, 403, 750, 801, and 860 processors.
PPC bug
ROM monitor from Motorola.
program
A piece of software that
produces something; for instance, you create, compile and then link a software
program file,
foo.exe. Type `
foo' at the shell window's
prompt. Your operating system will call the
main() function
of the program, the program runs and, when it finishes, control goes back
to the system. A typical example in most C and C++ books would be the following
code, that prints "
Hello." on a system monitor's shell window.
See also
compiler and
function .
//
// A program to print Hello. on the terminal.
//
// Header file for all the iostream input--output stuff.
//
#include <iostream.h>
//
// The main function.
//
void main()
{
cout << "Hello." << endl ;
}
PROM
Programmable Read-Only
Memory,
ROM
that can be programmed using special equipment. PROMs can be programmed
only once. Compare with
EPROM.
ps
The commandline option for
enabling UNIX-like functionality in Windows-type systems.
pseudo-ops
pseudo registers
Pseudo registers can only
contain scalar variables that cannot be aliased. This means that
global
variables,
local variables that have
their
addresses taken, and aggregates
(such as structures and unions) cannot be stored in pseudo registers, and
thus they must be accessed with separate load and store instructions. Because
of the guarantee that
pseudo registers
are not aliased, they are ideal targets for optimization.
ptrace
The UNIX system call, traditionally
used by debuggers to control other UNIX processes.
ptrace arguments
may include commands to
read/write registers,
single-step,
etc.
Q
No entries.
R
RAM
Random-Access Memory,
referring to volatile memory that can be read and written by a microprocessor.
rcfile
runcomfiles
, using a startup script file that contains startup instructions for an
application program (or an entire operating system), usually a text file
containing commands of the sort that might have been invoked manually once
the system was running but are to be executed automatically each time the
system starts.
RDI
Remote debugging library,
used by
ARM.
RDP
Remote Debugging Protocol,
a protocol used with ARM's Demon monitor.
reentrancy
A characteristic of library
functions which allows multiple processes to use the same address space
with assurance that the values stored in those spaces will remain constant
between calls. Cygnus made the
libm library functions, ensuring
that, whenever possible, they are reentrant.
registers
Registers are settings representing
values that serve as temporary storage devices in a processor, allowing
for faster access to data. Registers are divided into several classes:
pseudo
registers,
temporary registers,
and
machine registers.
remote target
RFC
Request For Comment
(s), one of a long-established series of numbered Internet informational
documents and standards widely followed by commercial software and freeware
in the Internet and UNIX communities.
RISC
Reduced Instruction Set
Computer, machines typically having fixed-length
instructions, limited addressing modes, many registers, and visible pipelines.
Examples include MIPS, ARM, SH, PowerPC.
ROM
Read-Only Memory,
non-volatile memory that can be read, but not written, by the microprocessor.
root
In a hierarchy of items or
of separate files in a directory, the one item or directory from which
all other items or
directory paths descend.
Also the name of the primary administrative account on UNIX and other machines.
router
Network device that determines
the optimal path along which network traffic should be forwarded, using
packets from one network to another based on network layer information.
rsh
Remote shell protocolthat
allows a user to execute commands on a remote system without having to
log in to the system.
RS6000
IBM's RS/6000 family of
RISC
processors. Depending on context, this term may also include PowerPC systems.
RTEMS
A real-time operating system.
RTI
The mnemonic for the `
return
from interrupt' instruction on computers.
RTOS
Real-Time Operating System.
run-time memory
Memory accessed while a program
runs.
runtime system
The software system or environment
in which compiled programs can run. The runtime system includes all the
code necessary to load programs, dynamically link native methods, manage
memory, handle
exceptions, and an implementation
of what may be an
interpreter.
S
SCO
Santa Cruz Operation,
a vendor of
SVR3UNIX and more recently
Unixware for PCs.
scope
Rules determining where a
name is usable, such as a function or variable name (the general rule being
that a name can be used from the point of declaration to its innermost
enclosing
compound statement).
screaming tty
A
terminal
line that disgorges an infinite number of random characters at an operating
system. See also
tty.
section
Object files and executables
that are composed of sections, having optional data and optional relocation
information.
segmentation fault
An error in which a running
program attempts to access memory not allocated to it and
core
dumps with a segmentation violation error.
selective linking
When configuring
libraries,
the linker's usage of source in libraries, whereby the linking explicitly
includes those libraries in the
linking
instruction.
SGML
Standardized Generalized
Markup Language, an ISO/ANSI/ECMA standard
that specifies a way to annotate text documents with information about
types of structure for a document.
sh/SH
Cygnus name for the
Hitachi
Super-H family of RISC microprocessors. ISAs include SH-1, SH-2, SH-3,
SH-3e, SH-DSP, and SH-4; within each ISA, parts have numbers like SH7032
or SH7780.
shared libraries
A library of functions used
by many executables without having been linked into each executable.
shell
An interface program for
accessing resources and for performing tasks. The original Multics shell
ran programs by starting processes that were dynamically linking programs
into existing code, calling them as subroutines (see
stub) and dynamically
de-linking them on return.
The main shell scripts used
are
ash,
bash,
csh , and
sh.
simulation
A means to interpret, classify
and present information about an embedded system's behaviour that is being
modeled, comprising both hardware and software elements.
Solaris
Sun's current version of
UNIX, superseding
SunOS. Based on
SVR4UNIX.
Sun
officially calls it
SunOS 5.x , with versions including 2.0-2.6,
7.0 (or, as Sun refers to them, 5.0-5.6, 7.0).
Source Navigator
A source code comprehension
tool with which developers can extract information from existing code in
C, C++, Java, Tcl,
[incr tcl] (the C++ extension for Tcl), FORTRAN,
Cobol, and assembly programs, using this information to build project databases.
The database represents internal program structures and relationships between
program components. Source Navigator then uses this database to query symbols
and relationships between components and graphically display them.
sparc/SPARC
Cygnus name for the family
of RISC processors based on Sun's SPARC architecture. Members include SPARClite,
SPARClet, UltraSPARC, versions 7-9.
SPARClet
An embedded SPARC processor
from
T.Sqware (formerly
Matra).
SPARClite
An embedded SPARC processor
family from
Fujitsu. Members include
86930, 931, 932, 933, 934, and 936.
S-record
A binary download format,
consisting of a series of records, each beginning with
S, with
symbolicdata
encoded as hexadecimal digits. Before downloading to a board, for instance,
a program must be converted using S-records.
stabs
Based on symbol tables, a
debug format originally introduced with the
Berkeley
UNIX
system, which records debugging information in certain symbols in the
object
file's symbol table.
stabs information may also be encapsulated
in
COFF or
ELF
files.
stack
The contiguous parts of the
data associated with one call to a specified function in a frame. The frame
contains the arguments given to the function, the function's local variables,
and the address at which the program is executing. In "The Art of Computer
Programming" [2nd edition, vol. I, pg. 236], Donald
Knuth
writes, "Many people who realized the importance of stacks and queues independently
have given other names to these structures: stacks have been called push-down
lists, reversion storages, cellars, nesting stores, piles, last-in-first-out
("LIFO") lists, and even yo-yo lists!"
stack frame
When debugging, the location
of a function call,
arguments about the
call and called
local variables, are
within a block of data called the stack frame. Stack frames are
allocated
in a region of memory called the
call
stack. When stopping a program or when a program stops, debugging commands
for examining the stack allow seeing all this information.
STL
Standard Template Library,
a C++ library. For more information, see
www.stl.org or the following
URL:
http://phobos.nsrl.rochester.edu/liu/stl.html
stub
A small piece of code that
executes on the target and communicates with the
debugger,
acting as its agent, collecting registers, setting memory values, etc.
Also, in a native shared library system, the part of the
shared
library that actually gets linked with a program. See also
subroutine.
subroutine
Part of a program which calls
another part of a program so that developers can simplify code in their
programs and save memory.
sun4
Informal name for a SPARC
workstation running SunOS 4.
x .
SunOS
Sun's former version of UNIX,
derived from
BSD 4.3. Versions include
2, 3, 4.0, 4.1, 4.1.3, 4.1.4. Sun currently refers to Solaris 2.x versions
as SunOS 5.
x .
SVID
System V Interface Definition,
defining interfaces and partitioning components within System V environments.
SVR3
System V Release 3,
the third version of UNIX for the AT&T 3B2.
SVR4
Acronym for
System V Release
4, the fourth version of UNIX for the
AT&T 3B2. Currently owned by
SCO,
after being owned by Novell.
swapping
Moving blocks of information
in units known as pages between memory and disk as necessary during execution
of an application; for instance, moving data from fast-access memory to
a slow-access memory (swap out) or reverse (swap in). Supported by operating
systems such as Linux, Windows NT/95/98, and OS/2, the process of exchanging
two values--for example, exchanging values between two variables. Especially
for use as temporary storage during reconfiguration.
symbols
Symbols are used to refer
to
variables,
labels,
and
procedures in a program; basically,
symbols are names and addresses. Typically every global function and variable
in a C program will have an associated symbol.
System V
T
target
The computer for which the
compiler generates code. Used both to refer to an actual physical device,
and to the
class of devices.
Tcl/Tk
The code language used to
develop an IDE. Tcl/Tk is a programming system developed by John Ousterhout.
Easy to use with very useful graphical interface facilities, Tcl is the
basic programming language while Tk is a "Toolkit" of widgets (graphical
objects similar to those of other GUI toolkits, such as
Xlib,
Xview and Motif). Unlike many of the other toolkits, it is not necessary
to use C or C++ in order to manipulate the
widgets,
and useful applications can be built very rapidly with Tcl/Tk.
TCP/IP
Transmission Control Protocolbased
on
IP. This is an
internet
protocol that provides for the reliable delivery of streams of data across
the web.
telnet
Standard
terminal
emulation protocol in the TCP/IP
protocol
stack, used for
remote terminal connection,
enabling users to log in to
remote systems,
thereby using resources as if connected to a
local
system.
temporary registers
Temporary registers are used
to hold intermediate results of computations within a basic block. Each
temporary register must be defined and used in exactly one place, and never
assign a value to a temporary register that is never used, and do not use
the value in a temporary register more than once.
ternary
System using three as the
base, such as a ternary logarithm.
TEX
An extremely powerful macro-based
text formatter written by
Donald E.
Knuth.
Pronounced "tech."
Texinfo
A text formatting tool with
various output formats such as HTML and PostScript.
TMRC
The
Tech
Model Railroad Club at
MIT, the legendary
control system that featured about 1200 relays.
Steven
Levy, in his book,
Hackers,
gives a stimulating account of those early years; see:
http://www.echonyc.com/~steven/hackers.html
toolchain
Informal term for the collection
of programs that make up a complete set of compilation tools. Typically
consists of the following example's sequence:
compiler->
assembler->
archiver->
linker->
debugger.
thread
The basic unit of program
execution. A process can have several threads running concurrently, each
performing a different job, such as waiting for events or performing a
time-consuming job that the program doesn't need to complete before resuming.
When a thread has finished its job, the thread is suspended or destroyed.
three-way cross
Thumb
The 16-bit instruction frontend
available with some ARM processors.
tracepoint
A hit during a
debugging
process.
trampolines
On-the-fly generation by
a compiler (such as
GCC) of small executable
code objects that do indirection between code sections, taking the address
of a nested function.
triple cross
twiddle
A small and insignificant
change to a program. Derived from squiggle, or in ASCII shorthand,
tilde
(for the
ASCII character definition,
1111110, of the character,
~ ).
tty
Any
serial
port, whether or not the device connected to it is a
terminal;
so called because under UNIX such devices have names of the form,
tty*.
Its derivation is from "teletype."
U
UDI
Universal Debug Interface,
a debugging protocol used only by
AMD,
and only for the
a29k architecture.
Unicode
A 16-bit character set defined
by ISO 10646.
URL
Uniform Resource Locator
, the standard for writing a text reference to an arbitrary piece of data
over the Internet. A URL looks like "
protocol://host/localinfo
" where
protocol specifies a protocol to use to get the
object (like
http or
ftp ),
host specifies
the Internet name of the host on which to find it, and
localinfo
is a string (often a file name) passed to the protocol location on the
remote host.
unary
Having, consisting of, or
acting on a single component.
UNIX
UNIX operating system. The
lowercase spelling of `Unix' is used interchangeably. Invented in 1969
by Ken Thompson after
Bell Labs left
the
Multics project, UNIX subsequently
underwent mutations and expansions at the hands of many different people,
resulting in a uniquely flexible and developer-friendly environment. By
1991, UNIX had become the most widely used multiuser general-purpose operating
system in the world.
Unixware
Name for the version of UNIX
based on
SVR4, produced by Novell.
V
variables
A variable is a name used
in a program to stand for a value.
Global variableshave
one value at a time, and this value is in effect for the whole system.
Constant
variableshave values that never change.
Local
variableshelp create variable values that
exist temporarily while within a certain part of the program; these values
are called
local , and the variables so used are called local variables.
For example, when a function is called, its argument variables receive
new local values that last until the function exits.
Void variablesuse
symbols that lack values.
vax / VAX
Virtual Address eXtension,
Digital's
popular
CISC minicomputer of the 1980s,
the most successful minicomputer design in industry history, possibly excepting
its immediate ancestor, the
PDP-11. Between
its release in 1978 and its eclipse by killer micros after about 1986,
the VAX was probably the hacker's favorite machine of them all, especially
after the 1982 release of 4.2
BSD UNIX
(see
BSD,
CISC and
PDP).
vi
Visual Interface ,
a screen
editor crafted together by Bill
Joy for an early
BSD release. Became
the de facto standard UNIX editor and a nearly undisputed hacker favorite
(arguably) outside of MIT until the rise of
Emacs
after about 1984.
VFS
Virtual File Systemarchitecture.
virtual machine
An abstract specification
for a computing device that can be implemented in different ways, in software
or hardware. Compiling to the instruction set of a virtual machine is much
like compiling to the instruction set of a microprocessor, using a bytecode
instruction set, a set of
registers,
a
stack, a
garbage-collected
heap, and an area for storing methods.
VxWorks
A real-time operating system
from Wind River Systems.
W
watchpoint
A special breakpoint that
stops a program's
debugging process when
the value of an expression changes.
whitespace
In code, newlines, spaces
and tab characters which the compiler treats as a contiguous, single character.
An instance that is unnoticable for the program output, and only as formatting
for human readability.
widget
The components of software
by which we get many of the interface features that provide interoperability,
such as the scrollbars or the means of selecting text with a cursor or
pointer, using
object-oriented programming.
worm
A program that propagates
itself over a network, reproducing itself as it goes (the famous "Great
Worm of 1988" is the best-known example;
Robert
T. Morris's 1988
virus, a benign one
that got out of control and hogged hundreds of Sun and
VAX
systems across the U.S.).
WWW
World Wide Web,
the web of systems and the data in them that is the
Internet.
X
An allegedly "over-sized,
over-featured, over-engineered and incredibly over-complicated" window
system (having a lot of
widgets) developed at
MIT
and widely used on UNIX systems. With its sources freely available, it
is a vehicle that is widespread since developers can modify and customize
it according to their requirements.
x86
Cygnus name for Intel's 80x86
processor chip family (the first chip from Intel being the 80x86).
XCOFF
eXtended COFF,
IBM's
object file format for
RS/6000 and
PowerPC
systems.
XENIX
Microsoft version of
SVR4.
XEROX PARC
The famed
Palo
Alto Research Center which, for more than a decade, from the early 1970s
into the mid-1980s, yielded an astonishing volume of groundbreaking hardware
and software innovations. The
mouse,
windows, and icon-type software interface was invented there, as well as
the laser printer, the local-area network (
LAN), and a series of D-machines that anticipated the personal computers
of the 1980s by a decade.
xor-endian
A way of implementing a big-endian
ISA. See
MIPS and
PowerPC for example members.
Y
Z
z8k
Cygnus name for the
Z8000,
a long-obsolete 16-bit descendent of the Z80 8-bit microprocessor.
Top|Contents|Previous|Next