[net.lang.c] Args in Regs and Zilog flame

wendyt@pyramid.UUCP (Wendy Thrash) (05/28/86)

The "discussion" so far:
	>>> Wendy Thrash  (that's me)
	>> George Robbins
	> Jim Cottrell
>>>                                                   When we implemented
>>>parameter passing in registers at Zilog, it was a big win.

>>*WAS* a big win - meaning maybe it looked good on benchmarks...

Yes, including generalized system benchmarks, not just silly little loops.
When we made the kernel with the register-argument compiler, things ran faster.

>>2) Because of the register assignment scheme used, you couldn't even blindly
>>   pass a list of variable arguments to a routine like printf that did know
>>   how to deal with them.

>	Why not? And who says varargs has to be written in C? It just may
>   	have to be written in assembly some day.

Well, you could pass things to printf fairly blindly, as I recall.  Printf
itself, though, went through some strange peregrinations to get hold of
its arguments.

>>3) setjmp/longjmp got broken with respect to restoring register variable
>>   parameters somewhere along the way.

>	Probably difficult, but not impossible. Pyramids seem to work.

Zilog's setjmp/longjmp did get broken, and were thought to be more or less
unfixable, but I can't remember why.  They were replaced with routines called
setret and longret, which accomplished pretty much the same thing.

As for Pyramids, yes, they work just fine.  Pyramids, though, have an
architecture specifically designed for passing parameters in registers.

This is starting to take on the character of religious discussion, so
I might as well bow out with a small flame:

-------------------------
[Begin Zilog flame]

>>Also, note that Zilog has never delivered its ATT SVID blessed System V port,
>>and that their next series of machines will contain ATT chips running vanilla
>>3Bx software...

>	Zilog of course has other problems as well.


I think the other problems tell the story.  Zilog didn't fail to deliver
because of passing parameters in registers.  About three and a half years
ago, the director of systems engineering left.  He was followed eventually
by the compiler group manager, every staff engineer (a grade above senior
engineer at Zilog) in the place, and most of the senior engineers.

Moreover, components couldn't deliver chips.  I did the compiler support
for Zilog's floating point chip over three years ago!  ("What chip?" I hear
you ask.)  I also worked on Z80K support at that time.  (Again, "What chip?")
-- 
Wendy Thrash   {allegra,cmcl2,decwrl,hplabs,topaz,ut-sally}!pyramid!wendyt
Pyramid Technology Corp, Mountain View, CA  +1 415 965 7200 ext. 3001