implement protocol ast and instruction-selection examples
This commit is contained in:
2 files changed
+19
No files matched your search
@@ -0,0 +1,9 @@
|
|||||||
|
data Exp = Const Int | Reg Int | Plus Exp Exp | Times Exp Exp
|
||||||
|
|
||||||
|
data Instr = LoadImm Int | LoadReg Int | AddInstr | MulInstr
|
||||||
|
|
||||||
|
match select (e : Exp) : Instr =
|
||||||
|
| Plus (Reg a) (Reg b) -> AddInstr
|
||||||
|
| Times (Reg a) (Reg b) -> MulInstr
|
||||||
|
| Const n -> LoadImm n
|
||||||
|
| Reg n -> LoadReg n
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
data Exp = Const Int | Reg Int | Plus Exp Exp | Times Exp Exp
|
||||||
|
|
||||||
|
data Instr = LoadImm Int | LoadReg Int | AddInstr | MulInstr
|
||||||
|
|
||||||
|
match select (e : Exp) : Instr =
|
||||||
|
| Plus (Reg a) (Reg b) -> AddInstr
|
||||||
|
| Times (Reg a) (Reg b) -> MulInstr
|
||||||
|
| Const n -> LoadImm n
|
||||||
|
| Reg n -> LoadReg n
|
||||||
|
| _ -> LoadImm 0
|
||||||
Reference in new issue
Block a user