[TUHS] Maximum Array Sizes in 16 bit C
Dave Horsfall
dave at horsfall.org
Sat Sep 21 01:07:11 AEST 2024
On Fri, 20 Sep 2024, Paul Winalski wrote:
> On Thu, Sep 19, 2024 at 7:52 PM Rich Salz <rich.salz at gmail.com> wrote:
>
> In my first C programming job I saw the source to V7 grep which
> had a "foo[-2]" construct.
>
> That sort of thing is very dangerous with modern compilers. Does K&R C
> require that variables be allocated in the order that they are declared? If
> not, you're playing with fire. To get decent performance out of modern
> processors, the compiler must perform data placement to maximize cache
> efficiency, and that practically guarantees that you can't rely on
> out-of-bounds array references.
[...]
Unless I'm mistaken (quite possible at my age), the OP was referring to
that in C, pointers and arrays are pretty much the same thing i.e.
"foo[-2]" means "take the pointer 'foo' and go back two things" (whatever
a "thing" is).
C is just a high level assembly language; there is no such object as a
"string" for example: it's just an "array of char" with the last element
being "\0" (viz: "strlen" vs. "sizeof".
What's the length of "abc" vs. how many bytes are needed to store it?
> Things were much simpler when V7 was written.
Giggle... In a device driver I wrote for V6, I used the expression
"0123"[n]
and the two programmers whom I thought were better than me had to ask me
what it did...
-- Dave, brought up on PDP-11 Unix[*]
[*]
I still remember the days of BOS/PICK/etc, and I staked my career on Unix.
More information about the TUHS
mailing list