There are
several architectures for computers, with all being the equal
of the Turing machine. Frankly, the Turing machine is the definition of
Odd... None of my computers have enough memory to be equivalent to a
Turing Machine, and I am pretty sure none of yours do either...
The writing of self-modifying code (a specialty
for me) does
require that
the data path have access to the code store, and
not all processors
The Turing machine only allows modification of the 'data memory' (tape),
not the 'program memory' (state transition table). Of course you can make
Neither can you alter the microcode of the x86, yet it is the essence of a
computer. Also, it allows modification of programming.
The program modified on a Turing machine is contained in the Tape of
that Turing machine, not in the state set of that Turing machine. See
"Introduction to Computer Theory," by Daniel I. A. Cohen, pp 557 et seq.
the latter act as an interpetter for instructions
stored on the former,
but if you allow that, then just about any processor that has any write
access to memory allows self-modifying programs (it would, for example,
Exactly, and thus the distinction between environments is distracting.
be possible to write an interpretter in Forty-One
CAlculator Language
that interpretted numbers stored in the user data registers as a program
in some new language. Since FOCAL programs can edit the contents of data
registers, it would then be possible to write self-modifying programs in
this new language. Of course it would be really slow, but it's still
possible.) I've written PIC programs that interpret the contents of the
EEPROM memory (on a 16C84, shows how long ago it was) as a set of
instructions to do things like toggle I/O lines, jump to a new location
in the EEPROM, modify 'registers' stored in the PICs data memory, etc.
The result wasn't a turing-complete language by any means, but it was a
sort-of programming language, and it did allow (at least in principle)
self-modifying code. The PIC itself is Harvard architacture, and the
machine code program (the interpreter) could not be modified while
running, but the 'user program' could.
-tony
William R. Buckley