Binder Manual (G06.27+, H06.04+, J06.03+)

Object File Structure
Binder Manual528613-004
4-7
Data Blocks
INT G[0:7] = 'P' := "abcdefgh";
END BLOCK;
At the conceptual level, this declares a single block named BLK, containing seven
variables. This actually gets compiled as four related blocks:
Binder derives the names of indirectly accessed blocks from the primary block’s name
by adding the prefix character “.” for 16-bit addressing or “$” for 32-bit addressing.
Other languages use some subset of TALs scheme of multiple blocks; refer to the
appropriate language manual for additional information.
Separately compiled modules need not use the same technique for addressing data in
public data blocks. For example, when accessing a block in secondary global named
.BLK, TAL always requires a directly accessible block in primary named BLK
containing pointers into .BLK. FORTRAN does not use BLK to access .BLK. And under
the large memory model, C and Pascal also do not use BLK to access .BLK. If BLK
happens to be present, for the sake of TAL modules, it is ignored by FORTRAN, C,
and Pascal modules.
Separately compiled modules need not agree on what category of memory is required
for a particular public data block. For example, TAL always requires that a block named
BLK be in primary global, below G+256, so that it is directly addressable. But under the
large memory model, C and Pascal do not require that BLK be directly addressable;
any location in secondary global, below G+32768, will do. If these TAL and C or Pascal
modules are bound together into one program, Binder places BLK in primary global to
meet the most restrictive requirements on its placement.
You can modify separately compilable data blocks in an object file either by recompiling
the block or by using the MODIFY command. Then, you can build a new object file with
the corrected data block during an interactive BIND session. You do not need to
recompile the entire program.
BLK containing directly accessed items residing in primary global space:
The value of the numeric variable A
The value of the 16-bit pointer variable B
The value of the 32-bit pointer variable C
The contents of the directly-addressable array variable D
A 16-bit pointer for the indirectly-addressed array variable E
A 32-bit pointer for the indirectly-addressed array variable F
.BLK containing indirectly accessed items residing in secondary global space:
The contents of the array variable E
$BLK containing indirectly accessed items residing in extended global space:
The contents of the array variable F
G containing read-only data residing in code space:
The contents of the array variable G