-
Notifications
You must be signed in to change notification settings - Fork 5
/
structures
54 lines (35 loc) · 1.04 KB
/
structures
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
8kLisp Internal Data Types
==========================
nil:
+----+
| 01 |
+----+
cell:
+----+----+----+----+
| CAR | CDR |
+----+----+----+----+
lo hi hi lo
symbol (gc):
+----+----+----+----+----+----+----+----+----+----+----+----+
| 0C | value | fdef | plist | hlink | 67 E3 | 0C |
+----+----+----+----+----+----+----+----+----+----+----+----+
tag "gc" size
number (-7):
+----+----+----+----+
| 84 | 81 | 07 | 04 |
+----+----+----+----+
tag ^^ val size
/ \
sign size
tag byte:
+---+---+---+---+---+---+---+---+
| N | size | M | C |
+---+---+---+---+---+---+---+---+
N: Type flag for atoms
0 -> symbol
1 -> number
size: 5 bit for the atom's total size
M: mark bit for garbage collection
C: Cell flag
0 -> atom
1 -> cell