There have been doubts here wether Lisp systems can be croos- 
compiled. Let me mention here a simple method which is used
by some Lisp-like system -- this method shows that cross-
compiling Lisp has no fundamental problems (only usual
problems).

First, why croos-compiling Lisp looks difficult? The reason
is dynamic nature of Lisp: freshly compiled code is loaded
into hast system and used in subsequent compilations. Moreover,
compiling Lisp means building apropriate data structures
which mix ordinary data with machine code. There seem to
be difficulty here: we want data stuctures containg target
machine code as a final result, but during compilation we
need host machine code.

One method which can solve this difficulty is: compile
everything twice, one version for host machine to be
used in further compilation, the second one for target.
In particular, for GCL one can probably just run the
C compiler twice to get object files for target machine.

If done naively this process still requires loading
object files into target Lisp to build the final image.
With such a method to do full build on host one has to
provide cross-Lisp capable just of loading object files
and saving image. While non-trivial (since some code is
executed at load time) such limited cross-Lisp should be
much simpler than full compiler. Alternatively, since
final loading of object files and dumping image is
unlikely to be time critical one can build the final
image at install time.

Of course there are usual cross-compilation problems, for
example (in GCL case) one must make sure that generated
C code works both on host and target machine.

-- 
                              Waldek Hebisch
[EMAIL PROTECTED] 


_______________________________________________
Axiom-developer mailing list
Axiom-developer@nongnu.org
http://lists.nongnu.org/mailman/listinfo/axiom-developer

Reply via email to