blob: f8553d62d421a1adb3ce98418c471a5f99aedd0f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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[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
}
|