Self modifying code, lambda calculus - Re: ENIAC programming
andy.holt at tesco.net
Thu Sep 17 12:03:30 CDT 2015
I took it from Crispin's paper and I assumed it was correct as he has done a
lot of work on this...
.. and I assumed when he said "solve all problems" we were referring to
problems that can be solved on a Turing Complete computer....
It is easy to prove that a computer does not need the ability to run self-modifying code*:
Assume the contrary
Write a emulator running on a non-self-modifying machine for the machine that has self-modifying code
(does anyone think that this is not possible? Mathematically - if not practically - this is trivial)
Then the emulated machine can solve the problem and thus the machine running the emulator can.
(there are some loose ends to tidy up to make this a formal proof but none of them are game-changers.)
* Obviously (!) to load a program into memory for execution is, in a sense, self-modification. However I
don't think that is what you mean.
Early 3rd generation machines had special instructions to finagle their way around self-modifying code:
The/360 had EX
The 1900 had OBEY
The GE6xx had a rather fancy variation but I forget what it was called.
However it was soon discovered that these were almost as dangerous as self-modifying code, not actually necessary.
Also with the introduction of re-entrant code (and paging) self-modifying became /really bad/ (tm)
More information about the cctalk