-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathstack.s
More file actions
100 lines (84 loc) · 1.07 KB
/
stack.s
File metadata and controls
100 lines (84 loc) · 1.07 KB
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
# Stack manipulation
verb code RESETDATA
mov $stack, SP
jmp next
verb code RESETRETURN
mov rspbk, %rsp
jmp next
verb code DUP
minstk 1
_dup
jmp next
verb forth dup2 "2DUP"
do OVER
do OVER
endword
verb code drop2 "2DROP"
minstk 2
_drop2: advance SP
mov (SP), TOS
advance SP
jmp next
verb code DROP
minstk 1
_drop: mov (SP), TOS
advance SP
jmp next
_uflow: do RESETDATA
saycr "\x1B[91m Stack underflow!"
do QUIT
verb code SWAP
minstk 2
push TOS
mov (SP), TOS
pop (SP)
jmp next
verb code OVER
minstk 2
push (SP)
_dup
pop TOS
jmp next
verb code ROT
minstk 3
mov (SP), ACC
mov TOS, (SP)
mov -8(SP), TOS
mov ACC, -8(SP)
jmp next
verb code ROLL
minstk 1
cmp TOS, 0
je 1f
shl TOS
shl TOS
shl TOS
add SP, TOS
mov (TOS), TOS
1: jmp next
verb code DEPTH
mov $stack, ACC
sub SP, ACC
shr ACC
shr ACC
shr ACC
_dup
mov ACC, TOS
jmp next
top: codeword
push SP
_dup
pop TOS
jmp next
verb code pushret ">R"
minstk 1
push TOS
jmp _drop
verb code popret "R>"
_dup
pop TOS
jmp next
verb code peekret "R@"
_dup
mov (%rsp), TOS
jmp next