blob: 03b88204c4aaed0e6ddd56050708620da34faa0d (
plain) (
blame)
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
|
definition module ABC.Assembler
from StdFile import class <<<
from StdOverloaded import class toString
from ABC.Machine.Def import ::Arity, ::Name, ::NrArgs, ::ArgNr, ::Instruction, ::State
from ABC.Machine.AStack import ::ASrc, ::ADst
from ABC.Machine.BStack import ::BSrc, ::BDst
from ABC.Machine.GraphStore import ::Desc
:: Label :== String
:: RedLabel :== Label
:: DescLabel :== Label
:: NrInstr :== Int
:: Assembler :== [Statement]
:: Statement
= Label Label
| Descriptor DescLabel RedLabel Arity Name
| Br NrInstr
| BrFalse NrInstr
| BrTrue NrInstr
| Dump String
| AddArgs ASrc NrArgs ADst
| Create
| DelArgs ASrc NrArgs ADst
| EqDesc DescLabel ASrc
| EqDescArity DescLabel Arity ASrc
| EqB
| EqB_a Bool ASrc
| EqB_b Bool BSrc
| EqI
| EqI_a Int ASrc
| EqI_b Int BSrc
| Fill DescLabel NrArgs Label ADst
| Fill_a ASrc ADst
| FillB Bool ADst
| FillB_b BSrc ADst
| FillI Int ADst
| FillI_b BSrc ADst
| GetDescArity ASrc
| GetNodeArity ASrc
| Halt
| Jmp Label
| JmpEval
| JmpFalse Label
| JmpTrue Label
| Jsr Label
| JsrEval
| NoOp
| Pop_a Int
| Pop_b Int
| Print String
| PrintSymbol ASrc
| Push_a ASrc
| PushAPEntry ASrc
| PushArg ASrc Arity ArgNr
| PushArg_b ASrc
| PushArgs ASrc Arity ArgNr
| PushArgs_b ASrc
| Push_b Int
| PushB Bool
| PushB_a ASrc
| PushI Int
| PushI_a ASrc
| ReplArgs Arity NrArgs
| ReplArgs_b
| Rtn
| SetEntry Label ADst
| Update_a ASrc ADst
| Update_b BSrc BDst
| AddI
| DecI
| GtI
| IncI
| LtI
| MulI
| SubI
| Comment String
instance toString Assembler
instance toString Statement
instance <<< Assembler
instance <<< Statement
assemble :: Assembler -> ([Instruction], [Desc])
|