summaryrefslogtreecommitdiff
path: root/tnslc/simple.tnsl
blob: 5ef79467cc55cb9771c9d897a72e88d6b9cb709b (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

{}uint8 str1 = "abcd"

struct Stress {
    int i
}

struct Test {
    Stress s
}

/; s_call () [Stress]
    Stress a
    a.i = 1
    return a
;/

/; main (int argc, ~~uint argv) [int]
    # On windows, the first two arguments are passed in RCX and RDX, so we need to
    # update their positions here or else tnsl will have garbage values in r8 and r9
    asm "mov r8, rcx"
    asm "mov r9, rdx"

    Stress test
    Test stress

    test.i = 1

    stress.s = s_call()

    # return 3
    return stress.s.i
;/