On Sat, 2002-02-23 at 13:12, Dan Sugalski wrote:
> At 12:22 PM -0500 2/23/02, Melvin Smith wrote:
> >At 11:53 AM 2/23/2002 +0000, Simon Cozens wrote:
> >>I was very lucky recently to attend a talk by Ganesh Sittampalam
> >>introducing Microsoft .NET and the Common Language Runtime. A lot of
> >>what CLR is trying to do is quite similar to what we're doing with
> >>Parrot, so I thought it would be a good idea to briefly recap what's
> >>going on with CLR.
> >
> >I've read several specs on CLR and ILAsm; there are some good ideas.
> >
> ><rant>
> >I wouldn't want Parrot to look like ILA but I wish we would at least
> >have more dialogue on things like pbc format, adding directives to
> >the language, etc.
>
> Then lets start. I've not been giving the assembler much attention
> mainly because I've been assuming that it'll be marginalized quickly,
> but I think that assumption's a bad one.
>
> We also need a PDD for the bytecode file format.
>
> >We need notation for globals, notation for metadata about objects and
> >types, etc. etc. but frankly the last time I looked at the assembler I sort
> >of got lost.
>
> You're not alone here. The assembler gives me headaches, and I think
> it's stymied Simon recently as well.
>
;) me too [uh oh, I wrote bits of it!]
I've been playing around with a new assembler that might be a bit better
laid out.
Here's what I've got done so far:
* object oriented:
* you can load more than one assembler at once
* assembly can be done in parts, i.e.
$a=new Assembler;
$a->assemble("set I0,3");
$a->assemble("set I1,4");
is the same as:
$a=new Assembler;
$a->assemble("set I0,3\nset I1,4");
* the preprocessor is a separate routine
* directives must be in upper case (per PDD)
* local labels, plus the ability to use local labels from outside the
scope: global_label.local_label from anywhere will find the right one.
* argument types are fully determined prior to looking up signatures
I've not got these things finished
* label arithmetic [is this really needed?]
* macros
* actual bytecode output
I just kind of set it aside because I wasn't sure if it was really
needed. I can dig it back up if there is interest...
Brian