RISC code output
TODO: fix wrong order for conversion in cfgrisc
This commit is contained in:
@ -47,13 +47,13 @@ module RISCSimpleStatements = struct
|
||||
let pp (ppf: out_channel) (v: t) : unit =
|
||||
let rec pp_t (ppf: out_channel) (v: t) : unit =
|
||||
match v with
|
||||
Nop -> Printf.fprintf ppf "nop"
|
||||
Nop -> Printf.fprintf ppf "Nop"
|
||||
| BRegOp (b, r1, r2, r3) -> Printf.fprintf ppf "%a r%d r%d => r%d" pp_brop b r1.index r2.index r3.index
|
||||
| BImmOp (b, r1, i, r3) -> Printf.fprintf ppf "%a r%d %d => r%d" pp_biop b r1.index i r3.index
|
||||
| URegOp (u, r1, r2) -> Printf.fprintf ppf "%a r%d => r%d" pp_urop u r1.index r2.index
|
||||
| Load (r1, r2) -> Printf.fprintf ppf "load r%d => r%d" r1.index r2.index
|
||||
| LoadI (r2, i) -> Printf.fprintf ppf "loadi %d => r%d" i r2.index
|
||||
| Store (r1, r2) -> Printf.fprintf ppf "store r%d => r%d" r1.index r2.index
|
||||
| Load (r1, r2) -> Printf.fprintf ppf "Load r%d => r%d" r1.index r2.index
|
||||
| LoadI (r2, i) -> Printf.fprintf ppf "LoadI %d => r%d" i r2.index
|
||||
| Store (r1, r2) -> Printf.fprintf ppf "Store r%d => r%d" r1.index r2.index
|
||||
and pp_brop (ppf: out_channel) (v: brop) : unit =
|
||||
match v with
|
||||
Add -> Printf.fprintf ppf "Add"
|
||||
@ -712,9 +712,6 @@ let helper (c: CfgImp.SimpleStatements.t list Cfg.NodeMap.t) (m: RegisterMap.m)
|
||||
let risccode, _ = Cfg.NodeMap.fold (fun node value (risccode, m) -> convert_ss m value node risccode) c (Cfg.NodeMap.empty, m) in
|
||||
risccode
|
||||
|
||||
let convert_content (c: CfgImp.SimpleStatements.t list Cfg.NodeMap.t) : RISCSimpleStatements.t list Cfg.NodeMap.t =
|
||||
helper c RegisterMap.empty
|
||||
|
||||
let convert (prg: CfgImp.SSCfg.t) : RISCCfg.t =
|
||||
match prg with
|
||||
{ empty: bool;
|
||||
@ -734,5 +731,5 @@ let convert (prg: CfgImp.SSCfg.t) : RISCCfg.t =
|
||||
inputOutputVar = inputOutputVar;
|
||||
initial = initial;
|
||||
terminal = terminal;
|
||||
content = convert_content content;
|
||||
content = helper content RegisterMap.empty;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user