[ Bottom of Page | Previous Page | Next Page | Contents | Index | Library Home |
Legal |
Search ]
Assembler Language Reference
.csect Pseudo-op
Purpose
Groups code or data into a control section (csect)
and gives that csect a name, a storage mapping class, and an alignment.
Syntax
where QualName = [Name][[StorageMappingClass]]
Note: The boldfaced
brackets containing StorageMappingClass are part of
the syntax and do not specify an optional parameter.
Description
The following information discusses using the .csect pseudo-op:
- A csect QualName
parameter takes the form:
symbol[XX]
OR
symbol{XX}
where either the [ ] (square
brackets) or { } (curly brackets) surround a two- or three-character storage
mapping class identifier. Both types of brackets produce the same results.
The QualName parameter can be omitted. If
it is omitted, the csect is unnamed and the [PR] StorageMappingClass is used. If a QualName is used, the Name parameter is optional and the StorageMappingClass is required. If no Name is specified, the csect
is unnamed.
Each control section has a storage mapping class associated
with it that is specified in the qualification part of QualName. The storage mapping class determines the object data section,
specifically the .text, .data,
or .bss section, in which the control section is grouped.
The .text section contains read-only data. The .data and .bss sections contain read/write data.
The storage mapping class also indicates what kind of data should
be contained within the control section. Many of the storage mapping classes
listed have specific implementation and convention details. In general, instructions
can be contained within csects of storage mapping class PR. Modifiable data
can be contained within csects of storage mapping class RW.
A csect is associated with one of the following storage mapping classes. Storage
mapping class identifiers are not case-sensitive. The storage mapping class
identifiers are listed in groups for the .text, .data, and .bss object data sections.
.text Section Storage Mapping Classes |
PR |
Program Code. Identifies the sections that provide executable instructions
for the module. |
RO |
Read-Only Data. Identifies the sections that contain constants that
are not modified during execution. |
DB |
Debug Table. Identifies a class of sections that have the same characteristics
as read-only data. |
GL |
Glue Code. Identifies a section that has the same characteristics
as Program Code. This type of section has code to interface with a routine
in another module. Part of the interface code requirement is to maintain TOC
addressability across the call. |
XO |
Extended Operation. Identifies a section of code that has no dependency
on the TOC (no references through the TOC). It is intended to reside at a
fixed address in memory so that it can be the target of a branch to an absolute
address.
Note: This storage mapping class should
not be used in assembler source programs. |
SV |
Supervisor Call. Identifies a section of code that is to be treated
as a supervisor call. |
TB |
Traceback Table. Identifies a section that contains data associated
with a traceback table. |
TI |
Traceback Index. Identifies a section that contains data associated
with a traceback index. |
.data Section Storage Mapping Classes |
TC0 |
TOC Anchor used only by the predefined TOC symbol. Identifies the
special symbol TOC. Used only for the TOC anchor. |
TC |
TOC Entry. Generally indicates a csect that contains addresses of
other csects or global symbols. If it contains only one address, the csect
is usually four bytes long.
- TD
- TOC Entry. Identifies a csect that contains scalar data that can be
directly accessed from the TOC. For frequently used global symbols, this is
an alternative to indirect access through an address pointer csect within
the TOC. By convention, TD sections should not be longer than four bytes.
Contains initialized data that can be modified during program execution.
|
UA |
Unknown Type. Identifies a section that contains data of an unknown
storage mapping class. |
RW |
Read/Write Data. Identifies a section that contains data that is
known to require change during execution. |
DS |
Descriptor. Identifies a function descriptor. This information is
used to describe function pointers in languages such as C and FORTRAN. |
.bss Section Storage Mapping
Classes |
BS |
BSS class. Identifies a section that contains uninitialized read/write
data. |
UC |
Unnamed FORTRAN Common. Identifies a section that contains read/write
data.
A csect is one of the following symbol types: |
ER |
External Reference |
SD |
CSECT Section Definition |
LD |
Entry Point - Label Definition |
CM |
Common (BSS) |
- All of the control sections with the same QualName value are grouped together, and a section can
be continued with a .csect statement having the same QualName. Different csects can have the same name and
different storage mapping classes. Therefore, the storage mapping class identifier
must be used when referring to a csect name as an operand of other pseudo-ops
or instructions.
However, for a given name, only one csect can be externalized.
If two or more csects with the same name are externalized, a run error may
occur, since the linkage editor treats the csects as duplicate symbol definitions
and selects only one of them to use.
- A control section is relocated as a body.
- Control sections with no specified name (Name) are identified with their storage mapping class,
and there can be an unnamed control section of each storage mapping class.
They are specified with a QualName that only has a
storage mapping class (for instance, .csect [RW] has
a QualName of [RW]).
- If no .csect pseudo-op is
specified before any instructions appear, then an unnamed Program Code ([PR])
control section is assumed.
- A csect with the BS
or UC storage mapping class will have a csect type of
CM (Common), which reserves spaces but has no initialized data. All other
control sections defined with the .csect pseudo-op are
of type SD (Section Definition). The .comm or .lcomm pseudo-ops can also be used to define control sections of type
CM. No external label can be defined in a control section of type CM.
- Do not label .csect statements.
The .csect may be referred to by its QualName, and labels may be placed on individual elements of the .csect.
Parameters
Number |
Specifies an absolute expression that evaluates to an integer value
from 0 to 31, inclusive. This value indicates the log base 2 of the desired
alignment. For example, an alignment of 8 (a doubleword) would be represented
by an integer value of 3; an alignment of 2048 would be represented by an
integer value of 11. This is similar to the usage of the Number parameter for the .align pseudo-op. Alignment
occurs at the beginning of the csect. Elements of the csect are not individually
aligned. The Number parameter is optional. If it is
not specified, the default value is 2. |
QualName |
Specifies a Name and StorageMappingClass for the control section. If Name is not given, the csect is identified with its StorageMappingClass. If neither the Name nor the StorageMappingClass are given, the csect is unnamed and has a storage
mapping class of [PR]. If the Name is specified, the StorageMappingClass must also be specified. |
Examples
The following example defines three csects:
# A csect of name proga with Program Code Storage Mapping Class.
.csect proga[PR]
lh 30,0x64(5)
# A csect of name pdata_ with Read-Only Storage Mapping Class.
.csect pdata_[RO]
l1: .long 0x7782
l2: .byte 'a,'b,'c,'d,'e
.csect [RW],3 # An unnamed csect with Read/Write
# Storage Mapping Class and doubleword
# alignment.
.float -5
Related Information
Pseudo-ops Overview.
The .comm pseudo-op, .globl
pseudo-op, .lcomm pseudo-op, .align pseudo-op.
[ Top of Page | Previous Page | Next Page | Contents | Index | Library Home |
Legal |
Search ]