In article <16ds34INNpvn@fbi-news.Informatik.Uni-Dortmund.DE> eggenste@cantor.informatik.uni-dortmund.de (Heinz-Bernd Eggenstein) writes:
>Hello!
>
>Among the few MS-DOS programs that will run on a 80386, but not on
>an i486 based machine, there's a program called "PC Scheme"
>by Texas Instruments (Scheme is a Lisp-like language).
>
>According to rumors, this is a result of the program changing
>some instructions in its own code-segment at runtime.
>-How can this cause incompatibilities between
> 80386 and i486 processors?
The i386 has a 12 byte prefetch, the i486 a larger (32 byte? Intel
Gurus, please provide a correct value if it's not 32 bytes). If the
i486 changes something that has already been prefetched,
it changes the copy in the cache, but not the prefetch, and
the old instruction gets executed.
>-I don't think every self-modification of a program will
> cause problems. Exactly under what conditions may
> problems occur?
When the modified code falls within the prefetch.
>-Is there a way to detect this kind of self-modification
> either at runtime (say, with a small TSR debugger-like program) or
> scanning the assembly-code sources.
Scanning the assembly code should do it.
>-Are there any other mayor causes for i486 incompatibilities?
No.
--
Microsoft is responsible for propogating the evils it calls DOS and Windows,
IBM for AIX (appropriately called Aches by those having to administer it), but neither is as bad as AT&T. Boycott AT&T, and let them know how you feel.