[TUHS] crt0 -- what's in that name?

Paul Winalski paul.winalski at gmail.com
Tue Jun 13 08:09:52 AEST 2023

On 6/12/23, Clem Cole <clemc at ccc.com> wrote:
> WRT to BSS -- Block Start Symbol (and sometimes Block End Symbol in some
> later assemblers) I believe was (were) part of the original 704 assemblers
> from United Aircraft reserving a labeled block of uninitialized space in a
> "DUMMY SECTION" (or DSECT) for a hunk of storage.  The OS is going to load
> everything together. So, a big feature of the United Aircraft assembler was
> to help control memory layout and collect like (common) hunks of things
> together (i.e., code vs data).  The whole idea of BSS was to get the loader
> to reserve space that did not have to initialized.  As I understand it, the
> standard IBM FORTRAN (FAP) and Assembler (MAP) for the 709 and 7090/94
> picked it up, with the new FORTRAN compiler being the big driver.
>I don't recall either BSS or BES pseudo-ops in the System/360
assemblers for DOS/360 and OS/360.  I think that by then they had been
replaced by a more generalized concept of PSECTs and DSECTs.

I forget now the details of how Fortran uninitialized common blocks
were implemented in S/360 object language.  It was the job of the link
editor to overlay all such symbols with the same name, and if there
was no explicit initializer, to allocate space for them in
uniniitalized memory.  One thing to note is that, at least in DOS/360,
such memory was not zeroed out.  It contained random garbage  Security
wasn't a concern in closed, raised-floor computer shops and you didn't
want the program loader to waste time zeroing out memory anyway.

-Paul W.

More information about the TUHS mailing list