AT&T 7300 C compiler/ variable name lengths (general)

Jan Edler edler at cmcl2.UUCP
Wed Apr 17 14:09:30 AEST 1985

We have the System V/68000 tape from AT&T, and it contains a set of
tools (C compiler, etc.) that we intend to use but haven't yet.
On examination, they seem not to have either of the problems that
have been attributed to the 7300 C compiler, namely short external
identifiers or name clashes with runtime support routines like ldiv.

The System V/68000 C compiler is based on pcc2, and is a more modern
compiler than the old one we've been using (based on the MIT pcc-based
C compiler).  For example, it supports "void *", and no longer supports
the old-style assignment operators or initializations (our version of
the MIT compiler doesn't even support void).  Furthermore, we are expecting
a big improvement in the correctness and quality of generated code.

Before we fixed it, the MIT compiler also suffered from the name clash
problem.  Not only was this a problem with routines like lmul or ldiv,
but you had to watch out for global variables with names like "sp", "pc",
"d0", and so forth.  The SV/68 compiler has a nice way of dealing with
this; '_' is not prepended to externals, but internal identifiers
that should be hidden have a '%' in their names, making clashes with
C identifiers impossible.  The register names recognized by the assembler
have '%'s in them.

Jan Edler
New York University
edler at nyu

More information about the Comp.lang.c mailing list