Hi, A brief status update on wip-rtl. If this means nothing to you, just skip this mail; at some point in the future there will be more information.
I started to look at static constant allocation. In order to do so I needed an object format that could link together different sections with different permissions and alignments, so I imported an old ELF branch I had hanging around, and adapted it to work with wip-rtl. Now the interface is that you make an assembler, emit some programs, then link, resulting in a list of ELF objects. You then link-elf to produce a bytevector, which can be written to disk, then loaded with load-thunk-from-disk from (system vm objcode). You can also load via load-thunk-from-memory, which takes a bytevector. In that case you might want to skip alignment and permissions and just operate on read-write memory, so there is the #:page-aligned? kwarg to link-elf for that situation. Instructions that take constants take them literally. The various emit-foo procedures will add the constant to a table if necessary, and link-objects will serialize a constant table if necessary. Not sure if this is being too clever or not. Currently there are a couple of broken bits. One is that we don't currently write an init thunk, to fix up the car and cdr links in static pairs, for example. Also a lot of it is untested. But we needed the loader facility so that we could actually write tests, so hopefully things will come together. Anyway, the hack is ongoing, if a bit sporadic. Hopefully we'll be able to start compiling some Scheme shortly. Cheers, Andy -- http://wingolog.org/