Self modifying code, lambda calculus - Re: ENIAC programming

ANDY HOLT andy.holt at
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 mailing list