-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path204864.asm
101 lines (101 loc) · 1.19 KB
/
204864.asm
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/usr/bin/env bfmake
stk 16
org 0
db_ 0
db_ 65
db_ 0
db_ 0
#PAGE_SIZE = 16
#MM_BASE = 5
#call("alloc")
mov r4, r6
#call("_main")
end
@alloc
#alloc("r6", "r5")
ret
@_p
rclr1,r4
outr1
ret
@_g
in r1
ret
@_main
psh 3
psh 0
#call("_g")
mov r2, r1
pop r1
sto r1, r2
pop r1
sto r1, r2
@L1
mov r2, 3
rcl r1, r2
dec r1
sto r2, r1
inc r1
jz_ r1, %L2
psh r4
#call("alloc")
mov r2, 1
rcl r1, r2
inc r1
sto r2, r1
dec r1
sto r6, r1
mov r4, r6
#call("_p")
#free("r4")
pop r4
psh 2
psh 65
rcl r1, 0
mov r2, r1
pop r1
add r1, r2
mov r2, r1
pop r1
sto r1, r2
@L3
rcl r1, 2
psh r1
rcl r1, 0
mov r2, r1
pop r1
sub r1, r2
mov r2, 65
sub r1, r2
psh r1
rcl r1, 0
mov r2, 1
sub r1, r2
mov r2, r1
pop r1
lt_ r1, r2
jz_ r1, %L4
psh r4
#call("alloc")
mov r2, 2
rcl r1, r2
inc r1
sto r2, r1
dec r1
sto r6, r1
mov r4, r6
#call("_p")
#free("r4")
pop r4
jmp %L3
@L4
psh r4
#call("alloc")
sto r6, 10
mov r4, r6
#call("_p")
#free("r4")
pop r4
jmp %L1
@L2
ret