Phase I Complete

With Brooke’s help, we now have a Scheme compiler that can take a small program

(for example, the Scheme program ’75′), and expand it into an executable Forth

program approximately 2.5K in size. Keep in mind, that Scheme program (the number

’75′) is CPSed in the final output; it’s tail recursive, guaranteed!

But the important thing: IT WORKS! . . . → Read More: Phase I Complete

Big moves…

The impending move to UKC has been keeping us busy, and I suppose relates to the notes

I would be jotting on this site in a way. This post isn’t really about research per se, though (the move itself),

although research is a significant part of the motivation for the move.

I will point out the Southeast . . . → Read More: Big moves…

Does it have to be semantically correct?

It compiles to Forth code, and that code is syntactically correct.

Granted, the Forth code doesn’t run. A few things jump out from initial testing:

I have no idea how to go about debugging a Forth program.

I really don’t want this compiler to have to run past register allocation

just to compile to . . . → Read More: Does it have to be semantically correct?

Success!

It wasn’t an infinte loop. When writing a ‘meta-circular compiler,’ so to speak,

you have to be careful where the language of the compiler begins and your

implementation ends. In particular, there are some macros that (under Chez Scheme)

implement the semantics of the predicate ‘begin?’ for the last few passes of the compiler.

These same macros do not work . . . → Read More: Success!

Silliness == Two Schemes

The “silliness holding up the Scheme compiler” is a difference between Chez and MzScheme

regarding when macros are expanded and top-level defines are expanded into the namespace.

While I’m confident there is good reason for separating out the stages of definition and

macro expansion, it is frustrating, because things that work in Chez _don’t_ work in Mz, . . . → Read More: Silliness == Two Schemes

Doldrums

Last week was a “down” week. Instead of trying to fight it, I took some time to re-read

the Lord of the Rings, and got the apartment cleaned up for a visit by the ‘rents.

It was good to see them, although it was too short.

My goals this week:

Get past the silliness that is holding . . . → Read More: Doldrums

Grr

I’m tying all the passes together, and right now the compiler isn’t even generating good C code.

The bootstrapping code provides a “heap” and “stack” for us to play with (a couple of character arrays),

and provides some rudimentary bounds and alignment checking. All the code being produced right now

right now violates the alignment conditions we have on . . . → Read More: Grr

New participants?

I think I need to follow up with Tammy and Andy… looks like they aren’t here yet…

While I think the hack to the update script to report “Empty Blog” was nice, I’d rather they weren’t empty.


. . . → Read More: New participants?

32x is fast!

Let the record show that a 32x10x40 CDRW (WritexRewritexRead) is really fast.

The implication here is that 600MB of data can be written to disc at 32x

the speed audio is played at. Or, since audio is roughly 10MB/minute, a

1x CDR takes 60 minutes to write a disc. A 32x writer should take, oh…

Chez Scheme . . . → Read More: 32x is fast!

No peace unto the wicked…

Wow. The harassment begins. Looks like my delta for posts before harassment begins is 4 days…

Here’s whats up:

CPS: I CPSed the subset of Scheme we’re working with high up in the compilation chain;

this way, closure building and representation decisions that get made late in the chain will take care of the

procedural representation of . . . → Read More: No peace unto the wicked…