A pseudo-operation, commonly called a pseudo-op, is an instruction to the assembler that does not generate any machine code. The assembler resolves pseudo-ops during assembly, unlike machine instructions, which are resolved only at runtime. Pseudo-ops are sometimes called assembler instructions, assembler operators, or assembler directives.
In general, pseudo-ops give the assembler information about data alignment, block and segment definition, and base register assignment. The assembler also supports pseudo-ops that give the assembler information about floating point constants and symbolic debugger information (dbx).
While they do not generate machine code, the following pseudo-ops can change the contents of the assembler's location counter:
Pseudo-ops can be related according to functionality into the following groups:
The following pseudo-op is used in the data or text section of a program:
The following pseudo-ops are used for data definition:
In most instances, use these pseudo-ops to create data areas to be used by a program, as shown by this example.
.csect data[rw] greeting: .long 'H,'O,'W,'D,'Y . . .csect text[pr]
# Assume GPR 5 contains the address of # csect data[rw]. lm 11, greeting(5)
The following pseudo-ops define or map storage:
The following pseudo-ops assign or dismiss a register as a base register:
The following pseudo-ops define the sections of an assembly language program:
The following pseudo-ops define a variable as a global variable or an external variable (variables defined in external modules):
The following pseudo-op defines a static symbol:
The following pseudo-op defines a debug traceback tag for performing tracebacks when debugging programs:
The following pseudo-ops perform miscellaneous functions:
|.hash||Provides type-checking information.|
|.org||Sets the value of the current location counter.|
|Creates a special type entry in the relocation table.|
|.rename||Creates a synonym or alias for an illegal or undesirable name.|
|.set||Assigns a value and type to a symbol.|
|Identifies the source language type.|
|.tocof||Defines a symbol as the table of contents (TOC) of another module.|
|.xline||Provides file and line number information.|
The following pseudo-ops provide additional information which is required by the symbolic debugger (dbx):
The following pseudo-op defines the intended target environment:
White space is required unless otherwise specified. A space may optionally occur after a comma. White space may consist of one or more white spaces.
Some pseudo-ops may not use labels. However, with the exception of the .csect pseudo-op, you can put a label in front of a pseudo-op statement just as you would for a machine instruction statement.
The following notational conventions are used to describe pseudo-ops:
|Name||Any valid label.|
|Register||A general-purpose register. Register is an expression that evaluates to an integer between 0 and 31, inclusive.|
|Number||An expression that evaluates to an integer.|
|Expression||Unless otherwise noted, the Expression variable signifies a relocatable constant or absolute expression.|
|FloatingConstant||A floating-point constant.|
|StringConstant||A string constant.|
|[ ]||Brackets enclose optional operands except in the .csect and .tc pseudo-ops, which require brackets in syntax.|
See Chapter 9. Pseudo-ops for a listing of all pseudo-ops supported by the assembler.