Interesting decompiler

Chuck Guzis cclist at sydex.com
Tue Dec 19 15:02:06 CST 2006


On 19 Dec 2006 at 11:01, Billy Pettit wrote:

> Most of the early compilers at CDC worked this way.  The intermediate
> language was assembly and could be used to clean up the final code.  It
> could be saved as a separate file and also be used as sub-routines.  It was
> a very fast way to create a compiler.

While there was a command-line option to use COMPASS to perform the 
assembly pass, both RUN and FTN (at least prior to 4.0) by default 
used their own "cheap and dirty" internal assemblers.  I believe that 
the deck in FTN was called FTNXAS, or some such.  Very few headaches 
there--I spent most of my aspirin debugging the COMMON/EQUIVALENCE 
statement processor (a state machine made up of a pile of ASSIGNed 
GOTOs) with very little commentary.

RUN did have a neat feature of allowing you to stack a mixed deck of 
FORTRAN and COMPASS modules.  The compiler would read the first card 
and if it saw IDENT or some such, pass control to COMPASS, which 
would, after assembly, pass control back to RUN.  

Cheers,
Chuck









> 
> Then there was another method called interpreters,  where final machine code
> never really exists.  The compiler generates a list of psuedo ops that would
> be executed by a series of macros.  Was fast to write, but incredibly
> ineffecient.
> 
> And there was a really fascinating one on the IBM 1401 that kept the high
> level langauage in the core, and brought in sequential routines from the
> tape unit.  Each rountine would perform one process on the source.  At the
> end, what remained in core was the machine language program.  It was a true
> single pass compiler.  But it worked in serial mode, bringing in each
> routine in order (63 different ones, if I remember correctly) even if wasn't
> needed.
> 
> It was probably the slowest compiler I ever worked with, but the concept was
> interesting.
> 
> Billy





More information about the cctalk mailing list