From 5b06b0e4b8effaacd23308d6a6b26c525e7d3af4 Mon Sep 17 00:00:00 2001 From: hachem Date: Mon, 31 Aug 2026 19:58:56 +0200 Subject: feat: add enums and structs --- examples/records.hdass | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 examples/records.hdass (limited to 'examples') diff --git a/examples/records.hdass b/examples/records.hdass new file mode 100644 index 0000000..9800839 --- /dev/null +++ b/examples/records.hdass @@ -0,0 +1,42 @@ +[entry: main] + +// An enum of status codes and a struct describing a memory layout. Stores two +// fields into a stack instance, reads them back, and exits with their sum. +enum Status +{ + Ok, + Warn, + Fail +} + +struct Pair +{ + a: qword + b: qword +} + +const SYS_EXIT = 60 + +proc main +{ + stack pair[16] // Pair.size + + rsi = pair + rbx = 40 + ^rsi = rbx // pair.a (offset 0) + + rsi = pair + rsi += Pair.b + rcx = Status.Fail // 2 + ^rsi = rcx // pair.b (offset 8) + + rsi = pair + rdi = ^rsi // load a = 40 + rsi = pair + rsi += Pair.b + rax = ^rsi // load b = 2 + rdi += rax // 42 + + rax = SYS_EXIT + syscall +} -- cgit v1.3