Assembler

The compiler is designed to work with legacy backend toolchains as well as the new customised backend, which is what will be discussed here.

Note that the new backend is still only a prototype, so the compiler still integrates with legacy toolchains instead for most demos.

General Design

The assembler & linker are designed to be extremely generic so they can easily be modified for new architectures, so the linking format works a bit differently to legacy formats and can encode arbitrary linking functions by using syntax (x OPERATOR y) within assembly code which will encode that “OPERATOR” as a linking function.

Work In Progress

The new backend is still a work in progress, so the compiler will usually default to the GNU toolchain or an alternative (ideally piggybacking off of whatever binary toolchain already works on your system).