Hacker News new | ask | show | jobs
by crdotson 2030 days ago
I must fight pedantry with pedantry! Historically it has been correctly nomered as a Program Counter, such as on the 6502 (https://en.m.wikipedia.org/wiki/MOS_Technology_6502#Register...)
1 comments

People aren't just wrong on the internet. People were wrong before the internet existed. It's even possible to be smart enough to design a CPU and still be wrong.

The register points at instructions. It does not count programs.

The register is correctly named in some hardware manuals, including those for PowerPC and x86.

Program Counter = Counter used for programs. Counts bytes for position of next instruction.

Within an early context and machine code vs hw level, not totally unreasonable as a legacy term. "Counter" was often used as name, even when starting at 0.

Wrong before internet or just pioneers? And what wrongs do we now do, or not?

It sometimes seems to count, but then an interrupt happens or there is a backwards jump. That isn't counting. 42, 45, 47, 3, 4, 7, 37953, 37955, 37959, 11, 12, 15...

Actual counting on real hardware does happen. For example, x86 has the CX/ECX/RCX register for string operations. That has a far better justification for being called a program counter, but still that would be awful terminology. Another example is the CTR register of PowerPC, commonly used with an instruction that decrements it and then conditionally branches to do a loop. Even a cycle counter has better justification for being called a program counter.

Yes, I let go of "counters" some two decades ago. Personally prefer index or just i, instead.

The way it used to go. Call something counter. Increment it each loop. Use goto for looping. Over time, add more gotos and change "counter" value. It tends to creep in, and clear names are important.