rasi

rasi is a C++23 compiler suite with SSA IR, linear scan register allocation, and x86-64 codegen, built from scratch. Includes islec, a custom ISLE instruction selection compiler, and Rune, a DSL that generates x86-64 instruction encoders.

IR sample

                
fn @foo(i64 %0, i64 %1) -> i64 {
bb0:
    %2 = iadd %0, %1
    ret %2
}
            

Rune

A DSL for declaring x86-64 instruction encodings. Rune compiles .rn files into C++ assembler methods.

add.rn
(inst mov_rr64   (enc 0x89 ModRM(r $rs rm $rd))
    (pattern (mov (reg64 $rd) (reg64 $rs))))
assembler.hpp
inline void emit_mov_rr64(Buffer& buf, Reg rd, Reg rs) noexcept
{
	buf.emit(rex(true, rs.extended(), false, rd.extended()));
	buf.emit(0x89);
	buf.emit(modrm(3, rs.index() & 7, rd.index() & 7));
}