-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtest.cms
61 lines (56 loc) · 1.14 KB
/
test.cms
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
;; test.cms
.program
.entry main
.mode multiply
.datas
.array #1, 0:12:34:56
.string #2, "Hello World!\n"
.data #3, 5
.data #4, 6
.func Math#add ;; (cms#int64 cms#int64) -> cms#int64
.res cms#int64
.stvarb 2, cms#int64
.arg %1s %2s
db_opreg
call %res, cms#int64#+, %1s %2s
ret
.func print-hello
.dyvarb 0
.stvarb 1, cms#pointer
.arg 0
loadp %1s, #2
call %0, print_string, %1s
ret
.func main
.dyvarb 2
.stvarb 4, cms#int64
.stvarb 1, cms#pointer
.stvarb 1, cms#int64
db_opreg
load %1d, #1, cms#int64
db_opreg
mov %2d, %1d
mov %1s, %1d
mov %2s, %1d
db_opreg
load %3s, #3, cms#int64
load %4s, #4, cms#int64
load %6s, 0, cms#int64
db_opreg
loadp %5s, #2
db_opreg
call %0, print-hello
call %0, print_int64, %3s
call %0, print_int64, %4s
call %0, print_int64, %6s
call %6s, Math#add, %3s %4s
call %0, print_int64, %6s
jump #line1
call %0, print-hello
call %0, print-hello
call %0, print-hello
call %0, print-hello
call %0, print-hello
#line1
call %0, print-hello
ret