blob: 8e87a4c9c02746574be8008d09106d32cfbdf678 (
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
43
44
|
[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
rsi += Pair.a
rbx = 40
^rsi = rbx // pair.a
rsi = pair
rsi += Pair.b
rcx = Status.Fail // 2
^rsi = rcx // pair.b
rsi = pair
rsi += Pair.a
rdi = ^rsi // load a = 40
rsi = pair
rsi += Pair.b
rax = ^rsi // load b = 2
rdi += rax // 42
rax = SYS_EXIT
syscall
}
|