|Compiler and interpreter origins email@example.com (Lauri Alanko) (2004-07-28)|
|Re: Compiler and interpreter origins Jeffrey.Kenton@comcast.net (Jeff Kenton) (2004-08-04)|
|Re: Compiler and interpreter origins firstname.lastname@example.org (Dick Weaver) (2004-08-05)|
|Re: Compiler and interpreter origins email@example.com (glen herrmannsfeldt) (2004-08-05)|
|Re: Compiler and interpreter origins firstname.lastname@example.org (Rodney M. Bates) (2004-08-09)|
|Re: Compiler and interpreter origins email@example.com (Nick Roberts) (2004-08-09)|
|Re: Compiler and interpreter origins firstname.lastname@example.org (2004-08-09)|
|Re: Compiler and interpreter origins email@example.com (John Slimick) (2004-08-09)|
|Re: Compiler and interpreter origins Martin.Ward@durham.ac.uk (Martin Ward) (2004-08-10)|
|Re: Compiler and interpreter origins firstname.lastname@example.org (Scott Moore) (2004-08-10)|
|[5 later articles]|
|From:||glen herrmannsfeldt <email@example.com>|
|Date:||5 Aug 2004 14:27:21 -0400|
|Posted-Date:||05 Aug 2004 14:27:21 EDT|
Lauri Alanko wrote:
> Firstly, back when everything was done in pure machine code or
> assembly, how common was the use of self-modifying code?
The IBM OS/360 Fortran library does it. I don't believe I know of any
compilers that generate self modifying code, though.
The IBM 360/91, one of the earlier machines doing out of order
execution, had special logic to detect modified instructions that had
been previously fetched.
IBM, as of OS/360, has three attributes they apply to load modules
(executable code files). Serially reusable, reentrant, and
refreshable. Reentrant and refreshable modules usually should not be
self modifying, and later OS would store then in read only page
Fortran library routines were serially reusable, but not reentrant or
Also, OS/360 channel programs were often self modifying.
[The IBM 360 architecture specifically permits instruction modification
without extra serialization. I gather it's still a pain for hardware
implementers, although it's now much more comment to do an EXecute
instruction to run one instruction created at runtime. -John]
Return to the
Search the comp.compilers archives again.