22.02.2015 Views

HLASM Language Reference

HLASM Language Reference

HLASM Language Reference

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

This is not only convenient, but it saves space and reduces fragmentation of virtual<br />

storage.<br />

| Typical bind-time processing of external dummy sections involves “merging” the<br />

| attributes of identically-named external dummy sections, retaining only the longest<br />

| length and strictest alignment. In particular, the lengths of identically-named<br />

| external dummy sections are not additive.<br />

To generate and use the external dummy sections, you need to specify a<br />

combination of the following:<br />

DXD or DSECT instruction<br />

Q-type address constant<br />

CXD instruction<br />

For more information about the DXD and CXD instructions, see “DXD Instruction”<br />

on page 180 and “CXD Instruction” on page 125.<br />

| Note: The names of dummy external control sections may match the names of<br />

| other external symbols that are not names of dummy control sections, without<br />

| conflict.<br />

Generating an external dummy section: An external dummy section is<br />

| generated when you specify a DXD instruction, or when you specify a DSECT<br />

| instruction whose name appears in a Q-type address constant.<br />

| When a DSECT name is used as an operand of a Q-type address constant, that<br />

| name becomes an external symbol with type XD. The name must satisfy the<br />

| name-length requirements of the object file format specified in the assembler<br />

| options.<br />

| DXD names may match the names of other types of external symbols without<br />

| conflict.<br />

Use the Q-type address constant to reserve storage for the offset to the external<br />

dummy section whose name is specified in the operand. This offset is the distance<br />

in bytes from the beginning of the area allocated for all the external dummy<br />

sections to the beginning of the external dummy section specified. You can use<br />

this offset value to address the external dummy section.<br />

Using external dummy sections: To use an external dummy section, you must<br />

do the following:<br />

1. Identify and define the external dummy section. The assembler computes the<br />

| length and alignment required. The linker will merge this definition with other<br />

| definitions of the same name, assigning the longest length and strictest<br />

| alignment.<br />

2. Provide a Q-type constant for each external dummy section defined.<br />

3. Use the CXD instruction to reserve a fullword area into which the linker or<br />

loader inserts the total length of all the external dummy sections that are<br />

specified in the source modules of your program. The linker computes this<br />

length from the accumulated lengths of the individual external dummy sections<br />

supplied by the assembler.<br />

4. Allocate a storage area using this computed total length.<br />

58 <strong>HLASM</strong> V1R5 <strong>Language</strong> <strong>Reference</strong>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!