Subject: Re: Problem with .FAS file on SunOS4

From: haible (Bruno Haible)
Date: Fri, 25 Nov 94 01:50:09 +0100

David Arnold <[email-masked]> writes about old .FAS files:

> *** - This file was produced by another lisp version, must be recompiled.
> 
> Since I do not have the source code for this file, and being a bit
> of a hacker, I thought I would have a look at the file. The first thing
> that struck me was a number that looked suspiciously like a date in
> the first line.

Yes, this is the date of the last incompatible change to the bytecode.

> I then decided to alter the date in
> the original '.fas' file to be the same as in the simple one.

I would not recommend to do this.

> Does this mean that I cannot use this file, or can I get a copy of an
> earlier compiler to run it on.

Indeed, you cannot use this .FAS file with newer CLISP versions.
Either
  - you get a not-so-new CLISP (available in the 199x-yy-zz/ directories
    of the source/ and binaries/*/ directories on
    ma2s2.mathematik.uni-karlsruhe.de),
or
  - someone writes a "decompiler" that turns the bytecode contained in the
    .fas file into some primitive Lisp code which can then be compiled
    by a newer CLISP version.

                    Bruno Haible
                    [email-masked]

---

From: Joachim Schrod <[email-masked]>
Date: Mon, 28 Nov 1994 21:13:03 +0100 (MEZ)

Bruno wrote:
> [...] Indeed, you cannot use this .FAS file with newer CLISP versions.

Since we're at it; can you scetch in a few words what parameters FAS
compatibility has? I ask because we noticed that the same CLISP
(Version 1994-10-26) produces different FAS files on two platforms
(RS6000/AIX and Linux [1.1.62]). Are there differences due to
big/little-endianness?

I ask because it would be nice if we could share FAS files between
different platforms.

For reference, I append the differences below.

Cheers,
	Joachim

fac.lsp:
------------8<-------------8<-------------8<---------------8<----------------
(defun fac (n)
  (if (zerop n) 1
    (* n (fac (1- n)))))
------------8<-------------8<-------------8<---------------8<----------------

fac.lib:
------------8<-------------8<-------------8<---------------8<----------------

(PROGN (SYSTEM::C-DEFUN 'FAC))
------------8<-------------8<-------------8<---------------8<----------------

RS6000 fac.fas:
------------8<-------------8<-------------8<---------------8<----------------
(SYSTEM::VERSION '(SYSTEM::CLISP3 64. LISP:T 161094.))
#Y(#:TOP-LEVEL-FORM-1
   #18Y(00 00 00 00 00 00 00 01 D8 2E 01 D8 DA 31 79 C3 19 01) FAC
   SYSTEM::REMOVE-OLD-DEFINITIONS
   #Y(FAC
      #25Y(00 00 00 01 00 00 00 02 AB 8D 89 0A AB 96 02 6B 77 32 02 37 19 02 C3
           19 02
          )
      1.
  )  )
------------8<-------------8<-------------8<---------------8<----------------

Linux fac.fas:
------------8<-------------8<-------------8<---------------8<----------------
(SYSTEM::VERSION '(SYSTEM::CLISP2 6. LISP:NIL 161094.))
#Y(#:TOP-LEVEL-FORM-1 #16Y(00 00 00 00 00 01 D8 2E 01 D8 DA 31 79 C3 19 01) FAC
   SYSTEM::REMOVE-OLD-DEFINITIONS
   #Y(FAC
      #23Y(01 00 00 00 00 02 AB 8D 89 0A AB 96 02 6B 77 32 02 37 19 02 C3 19 02
          )
      1.
  )  )
------------8<-------------8<-------------8<---------------8<----------------

--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Joachim Schrod			Email: [email-masked]
Computer Science Department
Technical University of Darmstadt, Germany