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. |
.ref | |
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. |
.source | |
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.