TAL Programmer's Guide
Storage Allocation
Introducing the Environment
4–10 096254 Tandem Computers Incorporated
Secondary Storage Areas
The secondary storage areas are:
A global secondary area, which begins following the location of the last global
variable allocated in the global primary area
A local secondary area, which begins following the location of the last local
variable allocated in the local primary area
The secondary areas have no explicit size, but the total of all primary and secondary
areas cannot exceed the lower 32K-word area of the user data segment.
For each standard indirect array or structure that you declare:
1. The compiler provides an implicit standard pointer and allocates a word of
storage for the pointer in the global or local primary area.
2. The compiler allocates storage for the array or structure in the global or local
secondary area, which begins immediately following the last direct item.
If you declare indirect arrays and structures within BLOCK declarations, however,
the compiler allocates such data blocks as described in Section 14, “Compiling
Programs.”
3. The compiler initializes the implicit pointer (provided in step 1) with the allocated
address of the array or structure in the secondary area, as follows:
For a STRING array, the pointer contains the byte address of the array.
For any other array, the pointer contains the word address of the array.
For a structure, the pointer contains the word address of the structure.
Allocation in the Automatic
Extended Segment
Extended indirect allocation is limited to the size of an extended segment, which can
be as large as 127.5 megabytes.
If you declare any extended indirect array or structure, the compiler automatically
allocates and manages an extended data segment. (You can also allocate and manage
explicit extended segments as described in Appendix B, “Managing Addressing.”)
For each extended indirect array or structure that you declare:
1. The compiler provides an implicit extended pointer and allocates a doubleword of
storage for the pointer in the global or local primary area of the user data segment.
(Because the local primary area is limited to 127 words, you can declare at most 63
extended local variables in any procedure.)
2. The compiler allocates storage for the array or structure in the automatic extended
data segment.
3. The compiler initializes the implicit pointer (provided in step 1) with the byte
address of the array or structure in the extended data segment.
The compiler also allocates and manages:
An extended stack
Two extended stack pointers