11 lines
300 B
Plaintext
11 lines
300 B
Plaintext
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
|