Style more consistent, replace capitalization with camel case
This commit is contained in:
@ -22,7 +22,7 @@ let convert (prg: RISC.RISCAssembly.t)
|
||||
: RISC.RISCAssembly.risci list CodeMap.t =
|
||||
(* takes as input a sequence of RISC commands and computes a map to the right
|
||||
labels for easier execution *)
|
||||
let rec helper
|
||||
let rec aux
|
||||
(prg: RISC.RISCAssembly.risci list)
|
||||
(current: RISC.RISCAssembly.risci list)
|
||||
(current_label: string)
|
||||
@ -33,27 +33,27 @@ let convert (prg: RISC.RISCAssembly.t)
|
||||
(fun _ _ _ -> failwith "Two labels are the same")
|
||||
(CodeMap.singleton current_label current)
|
||||
map)
|
||||
| Label l :: tl -> helper tl ([]) l
|
||||
| Label l :: tl -> aux tl ([]) l
|
||||
(CodeMap.union
|
||||
(fun _ _ _ -> failwith "Two labels are the same")
|
||||
(CodeMap.singleton current_label current)
|
||||
map)
|
||||
| instr :: tl -> helper tl (current @ [instr]) current_label map
|
||||
| instr :: tl -> aux tl (current @ [instr]) current_label map
|
||||
in
|
||||
match prg.code with
|
||||
| Label "main" :: tl -> helper tl [] "main" CodeMap.empty
|
||||
| Label "main" :: tl -> aux tl [] "main" CodeMap.empty
|
||||
| _ -> failwith "Program should begind with label main"
|
||||
|
||||
let label_order (prg: RISC.RISCAssembly.t) : string list =
|
||||
let rec helper
|
||||
let rec aux
|
||||
(prg: RISC.RISCAssembly.risci list)
|
||||
: string list =
|
||||
match prg with
|
||||
[] -> []
|
||||
| Label l :: tl -> l :: (helper tl)
|
||||
| _ :: tl -> (helper tl)
|
||||
| Label l :: tl -> l :: (aux tl)
|
||||
| _ :: tl -> (aux tl)
|
||||
in
|
||||
helper (prg.code)
|
||||
aux (prg.code)
|
||||
|
||||
let reduce_instructions (prg: RISCArchitecture.t) (lo: string list) : int =
|
||||
let match_operator_r (brop: RISC.RISCAssembly.brop) =
|
||||
@ -89,7 +89,7 @@ let reduce_instructions (prg: RISCArchitecture.t) (lo: string list) : int =
|
||||
| MoreEqI -> (Utility.int_more_eq)
|
||||
in
|
||||
|
||||
let rec helper
|
||||
let rec aux
|
||||
(prg: RISCArchitecture.t)
|
||||
(current: RISC.RISCAssembly.risci list)
|
||||
(current_label: string)
|
||||
@ -101,7 +101,7 @@ let reduce_instructions (prg: RISCArchitecture.t) (lo: string list) : int =
|
||||
None -> prg (* should never happen *)
|
||||
| Some i ->
|
||||
if i + 1 < (List.length lo) then
|
||||
helper
|
||||
aux
|
||||
prg
|
||||
(CodeMap.find (List.nth lo (i+1)) prg.code)
|
||||
(List.nth lo (i+1))
|
||||
@ -109,13 +109,13 @@ let reduce_instructions (prg: RISCArchitecture.t) (lo: string list) : int =
|
||||
prg
|
||||
)
|
||||
| Nop :: tl ->
|
||||
helper prg tl current_label
|
||||
aux prg tl current_label
|
||||
| BRegOp (brop, r1, r2, r3) :: tl -> (
|
||||
let n = (match_operator_r brop)
|
||||
(RegisterMap.find {index = r1.index} prg.registers)
|
||||
(RegisterMap.find {index = r2.index} prg.registers)
|
||||
in
|
||||
helper { prg with
|
||||
aux { prg with
|
||||
registers = RegisterMap.add {index = r3.index} n prg.registers}
|
||||
tl current_label
|
||||
)
|
||||
@ -124,7 +124,7 @@ let reduce_instructions (prg: RISCArchitecture.t) (lo: string list) : int =
|
||||
(RegisterMap.find {index = r1.index} prg.registers)
|
||||
i
|
||||
in
|
||||
helper { prg with
|
||||
aux { prg with
|
||||
registers = RegisterMap.add {index = r3.index} n prg.registers}
|
||||
tl current_label
|
||||
)
|
||||
@ -132,7 +132,7 @@ let reduce_instructions (prg: RISCArchitecture.t) (lo: string list) : int =
|
||||
match urop with
|
||||
| Copy -> (
|
||||
let n = RegisterMap.find {index = r1.index} prg.registers in
|
||||
helper { prg with
|
||||
aux { prg with
|
||||
registers =
|
||||
RegisterMap.add {index = r3.index} n prg.registers }
|
||||
tl current_label
|
||||
@ -141,7 +141,7 @@ let reduce_instructions (prg: RISCArchitecture.t) (lo: string list) : int =
|
||||
let n = Utility.int_not
|
||||
(RegisterMap.find {index = r1.index} prg.registers)
|
||||
in
|
||||
helper { prg with
|
||||
aux { prg with
|
||||
registers =
|
||||
RegisterMap.add {index = r3.index} n prg.registers }
|
||||
tl current_label
|
||||
@ -150,7 +150,7 @@ let reduce_instructions (prg: RISCArchitecture.t) (lo: string list) : int =
|
||||
let n = Random.int
|
||||
(RegisterMap.find {index = r1.index} prg.registers)
|
||||
in
|
||||
helper { prg with
|
||||
aux { prg with
|
||||
registers =
|
||||
RegisterMap.add {index = r3.index} n prg.registers }
|
||||
tl current_label
|
||||
@ -162,40 +162,40 @@ let reduce_instructions (prg: RISCArchitecture.t) (lo: string list) : int =
|
||||
(RegisterMap.find {index = r1.index} prg.registers)
|
||||
prg.memory
|
||||
in
|
||||
helper { prg with
|
||||
aux { prg with
|
||||
registers = RegisterMap.add {index = r3.index} n prg.registers}
|
||||
tl current_label
|
||||
)
|
||||
| LoadI (i, r3) :: tl -> (
|
||||
let n = i
|
||||
in
|
||||
helper { prg with
|
||||
aux { prg with
|
||||
registers = RegisterMap.add {index = r3.index} n prg.registers}
|
||||
tl current_label
|
||||
)
|
||||
| Store (r1, r3) :: tl -> (
|
||||
let n = RegisterMap.find {index = r1.index} prg.registers in
|
||||
let n1 = RegisterMap.find {index = r3.index} prg.registers in
|
||||
helper
|
||||
aux
|
||||
{ prg with memory = MemoryMap.add n1 n prg.memory }
|
||||
tl
|
||||
current_label
|
||||
)
|
||||
| Jump l :: _ -> helper prg (CodeMap.find l prg.code) l
|
||||
| Jump l :: _ -> aux prg (CodeMap.find l prg.code) l
|
||||
| CJump (r, l1, l2) :: _ -> (
|
||||
let br = (RegisterMap.find {index = r.index} prg.registers) > 0 in
|
||||
if br
|
||||
then
|
||||
helper prg (CodeMap.find l1 prg.code) l1
|
||||
aux prg (CodeMap.find l1 prg.code) l1
|
||||
else
|
||||
helper prg (CodeMap.find l2 prg.code) l2
|
||||
aux prg (CodeMap.find l2 prg.code) l2
|
||||
)
|
||||
| Label _ :: tl -> helper prg tl current_label
|
||||
| Label _ :: tl -> aux prg tl current_label
|
||||
in
|
||||
match
|
||||
RegisterMap.find_opt
|
||||
prg.outputreg
|
||||
(helper prg (CodeMap.find "main" prg.code) "main").registers
|
||||
(aux prg (CodeMap.find "main" prg.code) "main").registers
|
||||
with
|
||||
Some x -> x
|
||||
| None -> failwith "Output register not found"
|
||||
|
||||
Reference in New Issue
Block a user