Hi,
Thinking about it some more, the compiler and linker only checked the first 7 or 8
characters - so I had to use hash8 (comp.sources.unix I think) to port JOVE.
It also didn’t support a dynamically growing stack segment, so you had to use setstack(1)
if you had an aggressively recursive code, the though I assume this was a kernel or
hardware limitation rather than a compiler feature.
-Steve
On 5 Nov 2017, at 20:12, Clem cole
<clemc(a)ccc.com> wrote:
That sounds like the Ritchie V7 compiler or the Typersetter C from featured although
since it was for the PE target could, I suspect it have been based on Steve’s by then.
Any idea where the backend came from? Was it from BTL or was it a different code
generator? I didn’t think much of the PE work left research but I don’t know for sure.
IIRC Leffler and Shannon had something for a compiler backend at Case when they started
their PE port, although they had to do some hacking as the model they had was different
from any previous PE (they had to deal with a number of 7 bit and 24 bit issues). I
believe one of the attractions to the PE was they model the Research folks had access was
32 bits and the PDP-11 was 16. I’ll try to ask Sam with what they started.
Sent from my PDP-7 Running UNIX V0 expect things to be almost but not quite.
On Nov 5, 2017, at 10:29 AM, Steve Simon <steve(a)quintile.net> wrote:
> I started out on Edition 7, this was
> the interdata / perkin elmer port of v7 (based on Richard Milker’s work at Wollongong
with some bits of 2.4BSD added in (csh and vi i remember).
>
> i remember this having a modified v6 compiler which had the shared namespace fir all
structure members (hence the stat.st_mtime and friends). but it also had structure
assignment and enums.
>
> anyone know where this fits into the compiler evolution, or was it an evolutionary
dead end?
>
> -Steve
>
>
> On 5 Nov 2017, at 17:53, Clem cole <clemc(a)ccc.com> wrote:
>
>> Correct. When void came into C, full typing was already there; so void * was a
part and it was first exploited because of the useful property of the return. The ptr
properties became more and more important as its power was realized.
>>
>> FYI. K&R was written before V7 was released and matched the Typesetter C
compiler for V6 more than the later compiler released in V7. i.e. A slightly more mature
version compiler was included in UNIX/TS which was what Bourne used as the V7 ‘project
manager’ (Steve had a couple interesting stories about the later process). By that point
in time void had been added as formal type to the language.
>>
>> As since Bourne had been the driver for void it is not surprising that he picked
up a version of the compiler that he thought was important. Thus as was noted it meant
the book and released compiler were not in sync.
>>
>>
>>
>> Sent from my PDP-7 Running UNIX V0 expect things to be almost but not quite.
>>
>> On Nov 5, 2017, at 7:14 AM, Warner Losh <imp(a)bsdimp.com> wrote:
>>
>>> void functions certainly were much more widely used before void *, but void *
worked on all the compilers I ever used. I'm a relative newcomer, though, since the
first C compiler I used was on a VAX running 4.2BSD...
>>>
>>> Warner
>>>
>>> On Sun, Nov 5, 2017 at 6:20 AM, Ron Natalie <ron(a)ronnatalie.com>
wrote:
>>> Yes. Correct me if I’m wrong, but I recall functions returning void came
before void*.
>>>
>>> Sent from my iPhone
>>>
>>> > On Nov 5, 2017, at 5:06 AM, arnold(a)skeeve.com wrote:
>>> >
>>> > Paul Ruizendaal <pnr(a)planet.nl> wrote:
>>> >
>>> >> I’m trying to understand the origins of void pointers in C. I think
>>> >> they first appeared formally in the C89 spec, but may have existed
in
>>> >> earlier compilers.
>>> >
>>> > void was added after the publication of the first edition of K&R,
in
>>> > the V7 time frame. The 4.x compilers had support for void pointers and
>>> > functions returning void. Also added around the same time was structure
>>> > assignment and the ability to pass and return structs by value
(although
>>> > this was little used).
>>> >
>>> >> In the 4BSD era there was caddr_t, which I think was used for
pretty
>>> >> much the same purposes.
>>> >
>>> > Only for kernel code. I am pretty sure caddr_t wasn't used in
user-land code.
>>> >
>>> > HTH,
>>> >
>>> > Arnold
>>>
>>>