Glossary

absolute address

 

 

A virtual (not physical) address within the

process’ address space that is computed as an

absolute number.

absolute expression

An expression that is not subject to link-time

relocation.

alias

Two identifiers referring to the same element.

assembler

A program that translates assembly language

into machine language.

assembly language

A low level symbolic language closely resembling machine-code language.

binding

The process of resolving a symbolic reference

in one module by finding the definition of the

symbol in another module, and substituting the address of the definition in place of the

symbolic reference. The linker binds relocatable object modules together, and the

DLL loader binds executable load modules.

When searching for a definition, the linker and

DLL loader search each module in a certain

order, so that a definition of a symbol in one

module has precedence over a definition of the same symbol in a later module. This order is called the binding order.

bundle

128 bits that include three instructions and a

template field.

COFF

Common Object File Format, an object-module

format.

directive

An assembler instruction that does not produce executable code.

execution time

The time during which a program is actually

executing, not including the time during which

the program and its DLLs are being loaded.

expression

A sequence of symbols that represents a value.

function name

A label that refers to a procedure entry point.

global symbol

Symbol visible outside the source file in which

it is defined.

IA-32

 

 

Intel Architecture-32: the name for Intel’s

current 32-bit Instruction Set Architecture

(ISA).

identifier

Syntactic representation of symbol names using alphabetic or special characters, and digits.

instruction

An operation code that performs a specific machine operation.

instruction group

Itanium(TM) architecture instructions are organized in instruction groups. Each instruction group contains one or more statically contiguous instructions that execute in parallel. An instruction group must contain at least one instruction; there is no upper limit on the number of instructions in an instruction group.

An instruction group is terminated statically by

a stop, and dynamically by taken branches.

Stops are represented by a double semi-colon

(;;). You can explicitly define stops. Stops immediately follow an instruction, or appear on a separate line. They can be inserted between two instructions on the same line, as a semi-colon (;) is used to separate two instructions.

Instruction Set

Architecture

 

 

 

The architecture that defines application level

resources which include: user-level instructions, addressing modes, segmentation,

and user visible register files. instruction tag A label that refers to an instruction.

ISA

See Instruction Set Architecture

Itanium processor

Name of Intel’s first 64-bit processor.

label

A location in memory of code or data.

link time

The time when a program, dynamic-link library (DLL), or starred object is processed by the linker. Any activity taking place at link time is static.

linkage table

 

 

 A table containing text, unwind information, constants, literals, and pointers to imported data symbols and functions.

local symbol

Symbol visible only within the source file in

which it is defined.

location counter

Keeps track of the current address when assembling a program. It starts at zero at the beginning of each segment and increments appropriately as each instruction is assembled. To adjust the location counter of a section, use the .align directive, or the .org directive.

memory stack

 

 

A contiguous array of memory locations, commonly referred to as “the stack”, used in many processors to save the state of the calling procedure, pass parameters to the called procedure and store local variables for the currently executing procedure.

mnemonic

A predefined assembly-language name for

machine instructions, pseudo-ops, directives,

and data-allocation statements.

multiway branch bundle

A bundle that contains more than one branch

instruction.

name space

A virtual (not physical) file. The assembler assigns names to a symbol, register, or mnemonic name space. Usually a name is defined only once in each separate name space. A name can be defined twice, in the symbol and register name space. In this case the register name takes precedence over the symbol name.

operator

The assembly-language operators indicate

arithmetic or bitwise-logic calculations.

plabel

See procedure label.

predicate registers

64 1-bit predicate registers that control the execution of instructions. The first register, p0, is always treated as 1.

predication

The conditional execution of an instruction

used to remove branches from code.

procedure label

A reference or pointer to a procedure. A procedure label (PLabel) is a special descriptor that uniquely identifies the procedure. The PLabel descriptor contains the address of the function’s actual entry point, and the linkage table pointer.

pseudo-op

 

 

An instruction aliasing a machine instruction,

provided for the convenience of the

programmer.

qualifying predicate

The execution of most instructions is gated by a qualifying predicate. If the predicate is true, the instruction executes normally; if the instruction is false the instruction does not modify architectural state or affect program behaviour.

register rotation

Software renaming of registers to provide every loop iteration with its own set of registers.

register stack configuration

A 64-bit register used to control the register

stack engine (RSE).

relocatable expression

An expression that is subject to link-time

relocation

rotating registers

Registers which are rotated by one register

position at each loop execution so that the

content of register X is in register X+1 after one rotation. The predicate, floating-point, and general registers can be rotated. The registers are rotated in a wrap-around fashion.

section

 

 

Portions of an object file, such as code or data, bound to one unit.

software pipelining

Pipelining of a loop by way of allowing the

processor to execute, in any given time, several instructions in various instructions of the loop.

stacked registers

Stacked general registers, starting at r32, used

to pass parameters to the called procedure and store local variables for the currently executing procedure.

statement

An assembly-language program consists of a

series of statements. The following are primary

types of assembly-language statements:

• label statements

• instruction statements

• directive statements

• assignment statements

• equate statements

• data allocation statements

• cross-data allocation statements

stop

Indicates the boundary of an instruction group. It is placed in the code by the assembly writer or compiler.

symbol declaration

The symbol address is resolved, not necessarily based on the current module. Declare symbols using a .global or .weak directive.

symbol definition

The symbol address is resolved based on the

current module. A symbol is defined by assigning it a type and value. You can define a

symbol either in an assignment statement, by

using it as a label, or with a .common directive.

temporary symbol

A symbol name that is not placed in the

object-file symbol table. To define a temporary symbol name, precede the name with a period (.).

weak symbol

Undefined symbol in object file, resolved

during link time.