<OT>
I'm only seeing one side of this discussion, but now I'm curious. Has
Jacob invented a new type of variable called "bss"? In my assembler
coding days, "bss" meant "block storage symbol" and was implemented by
simply incrementing the program counter by the requested amount, which
of course had no effect on memory thus skipped.
Traditionally it meant 'Block Starting with Symbol', in contrast to
'Block Ending with Symbol' which was used on IIRC IBM 709x because it
had backwards(!) indexing of (machineword=36bits) arrays.
Both BSS and BES were (again traditionally) not explicitly
initialized, and so could be optimized in some (most?) object and/or
executable formats. Especially those which collect them into a
contiguous section or sections (or equivalent), which is sometimes
(but not always) called simply the/a BSS section.
With the advent of multiuser/multitasking and especially timesharing
it became important memory newly assigned to a process be initialized
(somehow) rather than retain data from (possibly) another user, and
conventional to zero-initialize memory not explicitlly initialized.
As long as I'm posting to this greatly overblown thread, I'll add that
I commonly use an implementation whose object and executable format
does not have any separate section with BSS characteristics, but does
support unstored demandzero _pages_ within the data section, which
depending on how the linker places your data, only partly under your
control, may or may not result in approximately the same effect. (And
it does have all-bits-zero null pointers and floating-point zero, so
those can be included in such demandzero areas. Although it does _not_
have the same representation for all data pointers.)
- David.Thompson1 at worldnet.att.net