Path: utzoo!utgpu!news-server.csri.toronto.edu!bonnie.concordia.ca!uunet!tnc!m0154 From: m0154@tnc.UUCP (GUY GARNETT) Newsgroups: comp.sys.amiga.programmer Subject: Re: Self modifying code Message-ID: <823@tnc.UUCP> Date: 29 May 91 13:01:16 GMT References: <5005@orbit.cts.com> <1991May28.120630.10150@cs.umu.se> <1991May28.171342.31105@kuhub.cc.ukans.edu> Reply-To: m0154@tnc.UUCP (GUY GARNETT) Organization: The Next Challenge, Fairfax, Va. Lines: 28 [Good discussion of why self-modifying code is a bad idea on the Amiga; thank you, Mark Gooderum!] I'd like to add a comment, though, which may help clarify things a little bit. The 680x0 family of processors has become (with the caches on the 68030 and 68040) what is known as a "Modified Harvard Architecture" machine. This means that, logically speaking, code memory and data memory are completely separate. Any given address in code memory is, from the point of view of the machine architecture, a different memory loation from the same address in data memory. Every real implementation I know of uses the same physical memory for both purposes, but that's just an implementation detail, and doesn't change the nature of the machine architecture. That is why the code cache doesn't attempt to find out what the data cache is doing; they are completely separate systems. Of course, for the machine to be useful, the operating system must provide some way of getting code into code memory, and data into and out of data memory. Getting code into code memory is the loader's job, and it knows what to do to make everything work right (and will, I presume, be updated to reflect new developments in the 680x0 family). Wildstar .signature: syntax error in line 1: "(" unexpected.