Home

PL/2DX

Why?

I'm designing a computer around the RV64I instruction set architecture. While this architecture is supported by GCC, so far I've not been successful in using it to produce flat binary images suitable for use in my computer's bootstrap ROM. So, I decided to try and tackle making a purpose-built, systems programming language suited just for writing my bootstrap ROM images. Using this, I hope to implement an ELF reader that is capable of supporting the ELF images that GCC produces, thus letting me bootstrap the rest of my run-time environment.

Inspirations

Some languages of note will inform how I design the language.

  • PL/I
  • Oberon
  • C (especially circa Unix 6th Edition, back when C was simple)

Why Lisp-Flavored?

Laziness. I could write my own lexer and parser, but I really don't have the patience for that anymore. I'm using Shen Lisp's reader to do all that work for me, thus letting me focus more on the code generator.

Besides, if syntax really does become an issue, I could conceivably also make use of Shen's built-in support for parsing to define an infix syntax. Or, maybe you can, and submit a patch. ;)

Mission

  • Compile high(ish) level code into an assembly language listing suitable for the Kestrel-2DX's development toolchain.
  • Let me write a reasonable BIOS-like implementation in space competitive with hand-written assembly language. (I have 32KiB of ROM space available to me, so tight code is more important than speedy code.)