Printf didn't use nargs (and still doesn't). It looked at the presence of the
% markers and assumes that’s how many arguments were passed.
It worked on the PDP-11 or any similar stack calling sequence. It was only after C got
moved to some of the more varied architectures that
VARARGS/STDARG was implemented to achieve some level of variable argument portability.
Even so, there's not a concept of "nargs" to this day.
The PDP-11 nargs was a kludge that looked at the calling code. This obviously
didn't work if you were in split I-D mode (where you couldn't address the
i-space). There was a published hack to rewire the processor to allow MTPI to work in
user mode from your OWN I space to make it work.
The bigger issue with the early printf is it just called putchar and putchar only output
to stdout or what ever the global fout variable was set to.
There was a comment in the manual that the fout concept was kludgy.
-----Original Message-----
From: TUHS <tuhs-bounces(a)minnie.tuhs.org> On Behalf Of Dave Horsfall
Sent: Sunday, July 1, 2018 1:30 AM
To: The Eunuchs Hysterical Society <tuhs(a)tuhs.org>
Subject: Re: [TUHS] Any Good dmr Anecdotes?
On Sat, 30 Jun 2018, Arrigo Triulzi wrote:
As I was told this visitor was the R in the “K&R”
book I felt I could
finally ask “someone who knew” how printf() worked with a variable
number of arguments.
It wouldn't've used that awful nargs() call at that time, would it? I was glad
when that horror was removed.
-- Dave