If memory serves me right, Paolo Molaro wrote:
> > You're insane. :)

Why does this sentence keep popping up whenever anyone discusses modding
gcc :)

> > registers, and register starvation's one of the more annoying things
> > a compiler has to deal with.

imcc ! 

But this is what Dan had to say about compiling C to Parrot 
(conversation dated: 2002-10-19)

[11:31] <rhysw> Dan: to go off on a different tangent now - C support
[11:31] <rhysw> Dan: compiling C to Parrot, that is
[11:31] <Dan> Ah, that. Yeah, definitely doable. It'll be rather slow, though
[11:31] <Dan> Our function call overhead's rather large compared to what C needs
[11:32] <Dan> Still, I find the thought of C with native continuations 
              rather interesting. Scary, but interesting
[11:32] <rhysw> Dan: I was more thinking of the memory layout issues.  
                C code is very particular about struct layout, array 
                representation, etc.  I didn't see any opcodes that 
                would allow one to do "pull an int32 out of offset N 
                from this pointer".
[11:33] <Dan> C's not at all particular about struct layout, unless they 
              changed the standard.
[11:33] <Dan> Still, you can do them either with struct PMCs, whcih'd be 
              slowish, or with the pack/unpack opcodes, which I bet are 
              insufficiently documetned
[11:35] <Dan> Still, the packed structures need more thoght. Hrm.
[11:35] <rhysw> Dan: I suppose a better question would be "is supporting 
                     C a goal, or would it just be a cool hack but 
                     otherwise uninteresting?"
[11:36] <rhysw> because, as you say, it wouldn't be terribly efficient ...
[11:36] <Dan> Neither, really. It's interesting in the sense that it'd let 
              people use code that they otherwise couldn't, if they don't 
              have a C compiler for.
[11:36] <Dan> But it's definitely not a primary goal
[11:36] <Dan> Consider it both mildly interesting and mildly bemusing :)

So ... the verdict then was "mildly interesting" ... and the partly done
pm_codegen.tc is still commented out ... is there any change now ?

> There is already a (limited) gcc backend that targets the CLR that
> sets up an area of memory for that use, but, as you can guess, it's not
> vey nice.

Currently I can dump stack opcodes (like the CLR) using a triple var
(or rather temporaries) code generator off AST .. and directly translate
stack opcodes to Parrot without any of the "stack++" crap .. almost
making half the JIT-time operations during compile time . 

I've used that idea to build a small mathematical expression compiler
which dumps IL or Parrot (and acme did the perl5 codegen)...

> I think a gcc port would require parrot to provide at least a stack 
> memory area and a register (sp) that points to it. 

No, actually I think the gcc backend could lighten up on the register 
allocation and just add new temporaries as needed ... also there are 
no special registers for parrot which makes it a bit easier too ..
All I can say is that PMCs might be underutilized in this model.

> There may be other issues with the parrot instruction set, but since 
> you have already hundreds (or thousands?) of opcodes, I guess it 
> wouldn't be an issue to add a few more if needed:-)

I object ... no special registers or stack areas please .. 

Gopal
-- 
The difference between insanity and genius is measured by success

Reply via email to