If an instruction is never used, it is a waste of hardware to implement it.
If it is never used, you could delete the extra hardware and it would never be
missed. It is a decision that any programmer can make, so any programmer can
decide to effectively delete an instruction. In fact, the PDP-8 has a number of
instructions that were never used. You could request both a left and a right
shift in one instruction. Needless to say, different models did different
things for that instruction but that instruction existed on all models. The
hardware implemented the instruction, but it did not exist as far as anybody
writing code for the machine was concerned.
It is precisely because
there is a need to extend any set of hardware instructions that most instruction
sets include a special sub-routine call instruction. That instruction will have
a different effect depending on the address of the sub-routine called. If it
did not act as a hardware extender, the sub-routine call would not be included
in the instruction set.
And then there are the virtual machines. Eniac
was programmed using a plug board. It had a fixed point binary architecture.
John VN programmed it to provide a floating point virtual machine. The virtual
machine tradition is ancient in that sense, and can not be ignored. But Stites
fails to mention it.
It is precisely the rigidity and failure to
understand the genius of instructions set design he presents and the inherent
flexibility and open-endedness of real programming where Stites fails. It is
this subtlety that makes computer design and programming an art. It is this
flexibility that allows digital computers to perform on the abstract level.
This is the ultimate math in digital computers. And he fails to capture
it.
--- MTEW [ Reply to This | Parent | # ]
|