Hi Felix,
On Wed, Oct 15, 2008 at 2:54 AM, Felix Winkelmann <fw...@em...> wrote:
>> Yes, the C backend is indeed trampoline based -- the trampoline code
>> can be found in the main.c file created as the C output. Also, yes,
>> the compiler does general CPS conversion. We've defined the compiler
>> backend as the very last step of the compilation process, where the
>> cps converted, alloc converted and closure converted code is mapped
>> into C (or Forth). The compiler is based on Appel's book, so in many
>> respects it's probably similar to sml/nj.
>
> Ah, thanks for that information. What sort of garbage collection
> algorithm is used, if I may ask?
Currently a simple two space stop and copy collector is used. You can
find the implementation of the memory allocation routines
(alloc_untraced, alloc_traced_string, alloc_traced_array, and
alloc_tagged) as well as the underlying garbage collector in the
runtime-c.c file that is created as part of the C output.
>> I actually gave that talk a couple days ago :) I'll send you a link
>> to the presentation materials when they get online (hopefully soon).
>
> Excellent. Please do so, I'm looking forward to learn more about
> embeddedml.
I actually wrote an M.S. thesis about the new backends to the
compiler. I uploaded the thesis as an uploadable file to the
embeddedml project. You can get the file from this link:
http://downloads.sourceforge.net/embeddedml/harris_thesis.pdf?use_mirror=
There is also a new "documentation" page on the embeddedml website
http://embeddedml.sourceforge.net
hope this helps,
-andrew
|