From e01c42907690544af9d93e31ed26eed8db16ea48 Mon Sep 17 00:00:00 2001 From: nils <48135649+Nilstrieb@users.noreply.github.com> Date: Mon, 20 Jun 2022 11:29:14 +0200 Subject: [PATCH] ir --- src/ir.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/ir.rs diff --git a/src/ir.rs b/src/ir.rs new file mode 100644 index 0000000..1ef19ee --- /dev/null +++ b/src/ir.rs @@ -0,0 +1,33 @@ +#[derive(Debug, Clone, Copy)] +pub struct Register(u8); + +#[derive(Debug, Clone, Copy)] +pub enum Place { + Register(Register), + /// `[r5]` + AddrRegister(Register), + /// `[353]` + AddrLiteral(u64), +} + +#[derive(Debug, Clone, Copy)] +pub enum Value { + Literal(u64), + Place(Place), +} + +#[derive(Debug, Clone, Copy)] +pub struct Location { + index: usize, +} + +#[derive(Debug, Clone, Copy)] +pub enum Stmt { + Mov { to: Place, from: Value }, + Add { to: Place, value: Value }, + Sub { to: Place, value: Value }, + Mul { to: Place, value: Value }, + Div { to: Place, value: Value }, + Jmp { to: Location }, + Cmp { lhs: Value, rhs: Value }, +}