HLASM Language Reference
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Object program structures

HLASM Language Reference
SC26-4940-06

High Level Assembler supports two object-program models. The older "load module" model generally involves one or more independently relocatable control sections combined into a single block of machine language text, which is loaded into a single contiguous portion of memory. Addresses within this block of text are resolved to locations within the block, or are left unresolved. Such programs are considered one-dimensional structures. Examples include z/OS load modules, CMS modules, and z/VSE phases.

z/VM and z/OS
The second object-program model supports a two-dimensional structure called a program object. The loaded program can consist of one or more contiguous blocks of machine language text grouped in classes and placed in different portions of memory. Each contribution of machine language text to a class is provided by an owning section, and the independently relocatable text from a section that contributes to a class is an element. For certain types of class, an element can contain parts. Unlike a control section, a program object section can specify more than one independently relocatable block of text. Addresses within each class can be resolved to addresses in the same or different classes. A class in a program object has behavior properties like those of a load module.

Section names are specified with the CSECT, RSECT, and START statements, and class and part names are specified with the CATTR statement. Additional attributes can be assigned to external symbols with the XATTR statement.

The program object model can be created only when the GOFF option is specified. The "load module" model can be created when either the NOGOFF or GOFF option is specified, but there are limitations on source program statements if GOFF is specified.

Note: The term "section" is used in different senses for each object-program model. In the load module model, a section is a control section. In the program object model, a section is a one-dimensional cross-section of program object data containing contributions to one or more classes.

z/VM and z/OS
Note: Features supported by High Level Assembler when you specify the GOFF option might not be supported by the system linker/binder or run-time environment where the assembled program is processed. You should check the relevant product documentation before utilizing the assembler's features.
The following figure illustrates the differences between the object-program models.
Figure 1. Load module and Program Object structures
   ┌─────────────┐                Class     Class     Class   ─ ─ ─
   │             │             ┌─────────┬─────────┬─────────┬ ─ ─ ─┐
   │   Control   │             │         │         │  part   │      │
   │   Section   │     Section │ element │ element ├─────────┤      │
   │             │             │         │         │  part   │      │
   ├─────────────┤             ├─────────┼─────────┼─────────┼ ─ ─ ─┤
   │   Control   │             │         │         │         │      │
   │   Section   │     Section │ element │ element │  part   │      │
   ├─────────────┤             │         │         │         │      │
   :             :             ├─────────┼─────────┼─────────┼ ─ ─ ─┤
   :             :             :         :         :         :      :
   :             :             :         :         :         :      :
   └─────────────┘             └─────────┴─────────┴─────────┴ ─ ─ ─┘
  Load Module Model                  Program Object Model

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014