From 11adaa5103f3915f4d0582cfb2bb27574f3a51cd Mon Sep 17 00:00:00 2001 From: elvis Date: Wed, 15 Jan 2025 00:09:58 +0100 Subject: [PATCH] First draft report, removing exercises --- bin/dune | 12 - bin/main.ml | 79 ------- bin/test.miniimp | 25 --- dune-project | 4 - lib/exercises/dune | 5 - lib/exercises/exercises.ml | 109 --------- lib/exercises/exercises.mli | 60 ----- report/document.bib | 0 report/document.pdf | Bin 0 -> 200986 bytes report/document.tex | 199 +++++++++++++++++ report/report.tex | 425 ++++++++++++++++++++++++++++++++++++ 11 files changed, 624 insertions(+), 294 deletions(-) delete mode 100644 bin/main.ml delete mode 100644 bin/test.miniimp delete mode 100644 lib/exercises/dune delete mode 100644 lib/exercises/exercises.ml delete mode 100644 lib/exercises/exercises.mli create mode 100644 report/document.bib create mode 100644 report/document.pdf create mode 100644 report/document.tex create mode 100644 report/report.tex diff --git a/bin/dune b/bin/dune index 4f912b5..e630ca1 100644 --- a/bin/dune +++ b/bin/dune @@ -1,15 +1,3 @@ -(executable - (name main) - (public_name main) - (libraries exercises - miniImp - miniFun - analysis - utility) - (package miniImp) - (modes byte exe) -) - (executable (name miniFunInterpreter) (public_name miniFunInterpreter) diff --git a/bin/main.ml b/bin/main.ml deleted file mode 100644 index e0e6c0e..0000000 --- a/bin/main.ml +++ /dev/null @@ -1,79 +0,0 @@ -open MiniImp - -let colorred s = - "\027[31m" ^ s ^ "\027[0m" - -let () = - let program = " -def main with input in output out as - out := in; - a := 1; - b := 2; - c := a + a; -" - in - - (* Printf.printf "%s\n%s\n" (colorred "Program is") program; *) - - let get_result x = Lexing.from_string x |> Parser.prg Lexer.lex in - - let p = get_result program in - - (* Format.printf "%s\n%a\n@?" (colorred "AST is") Types.pp_p_exp p; *) - - let convertedcfg = CfgImp.convert_io 10 p in - - (* Printf.printf "%s\n%a" (colorred "Converted CFG is") CfgImp.SSCfg.pp convertedcfg; *) - - let convertedrisccfg = CfgRISC.convert convertedcfg in - - Printf.printf "%s\n%a" (colorred "Converted RISC CFG is") CfgRISC.RISCCfg.pp convertedrisccfg; - - (* ---------------------------------- *) - - let analysiscfg = DefinedVariables.compute_defined_variables convertedrisccfg in - - (* Printf.printf "%s\n%a" (colorred "Analysis CFG is") DefinedVariables.DVCfg.pp analysiscfg; *) - - (* Printf.printf "%s" (colorred "Undefined Variables are:"); *) - (* ( *) - (* match DefinedVariables.check_undefined_variables analysiscfg with *) - (* | None -> Printf.printf " none"; *) - (* | Some l -> Printf.printf " %a" DefinedVariables.Variable.pplist l; *) - (* ); *) - (* Printf.printf "\n"; *) - - let convertedrisccfg = DefinedVariables.compute_cfg analysiscfg in - - (* Printf.printf "%s\n%a" (colorred "Converted RISC after analysis CFG is") CfgRISC.RISCCfg.pp convertedrisccfg; *) - - - (* let analysiscfg = LiveVariables.compute_live_variables convertedrisccfg in *) - - (* Printf.printf "%s\n%a" (colorred "Live Analysis CFG is") LiveVariables.DVCfg.pp analysiscfg; *) - - (* let convertedrisccfg = LiveVariables.compute_cfg analysiscfg in *) - - (* Printf.printf "%s\n%a" (colorred "Converted RISC with no analysis CFG is") CfgRISC.RISCCfg.pp convertedrisccfg; *) - - - (* let convertedrisccfg = LiveVariables.compute_cfg (LiveVariables.optimize_cfg analysiscfg) in *) - - (* Printf.printf "%s\n%a" (colorred "Converted RISC after analysis CFG is") CfgRISC.RISCCfg.pp convertedrisccfg; *) - - let convertedrisccfg = ReduceRegisters.reduceregisters 4 convertedrisccfg in - - Printf.printf "%s\n%a" (colorred "Converted RISC after reducing registers CFG is") CfgRISC.RISCCfg.pp convertedrisccfg; - - - (* ---------------------------------- *) - - let risc = RISC.convert convertedrisccfg in - - Printf.printf "%s\n%a" (colorred "RISC code is") RISC.RISCAssembly.pp risc; - - let computerisc = RISCSemantics.reduce risc in - - Printf.printf "%s\n%d\n" (colorred "Output of RISC code is") computerisc; - - () diff --git a/bin/test.miniimp b/bin/test.miniimp deleted file mode 100644 index 355d16b..0000000 --- a/bin/test.miniimp +++ /dev/null @@ -1,25 +0,0 @@ -def main with input n output result as - if (n % 2) == 0 then result := 1 - else ( - result := 0; - s := 0; - while (0 == ((n - 1) / (2 ^ s)) % 2) do ( - s := s + 1 - ); - d := ((n - 1) / 2 ^ s); - for (i := 20, i > 0, i := i - 1) do ( - a := rand(n - 4) + 2; - x := powmod(a, d, n); - y := 0; - for (j := 0, j < s, j := j+1) do ( - y := powmod(x, 2, n); - if (y == 1 && (not x == 1) && (not x == n - 1)) then - result := 1; - else - skip; - x := y; - ); - if not y == 1 then result := 1; - else skip; - ) - ) diff --git a/dune-project b/dune-project index 85457a3..b497fd4 100644 --- a/dune-project +++ b/dune-project @@ -21,7 +21,3 @@ (package (name miniFun) (depends ocaml dune utility)) - -(package - (name exercises) - (depends ocaml dune)) diff --git a/lib/exercises/dune b/lib/exercises/dune deleted file mode 100644 index 280c335..0000000 --- a/lib/exercises/dune +++ /dev/null @@ -1,5 +0,0 @@ -(library - (name exercises) - (public_name exercises)) - -(include_subdirs qualified) \ No newline at end of file diff --git a/lib/exercises/exercises.ml b/lib/exercises/exercises.ml deleted file mode 100644 index 895bde5..0000000 --- a/lib/exercises/exercises.ml +++ /dev/null @@ -1,109 +0,0 @@ -type a_exp = - Aval of int - | Plus of a_exp * a_exp - | Minus of a_exp * a_exp - | Times of a_exp * a_exp - | Of_bool of b_exp -and b_exp = - Bval of bool - | And of b_exp * b_exp - | Or of b_exp * b_exp - | Not of b_exp - | Minor of a_exp * a_exp - - -let rec eval_a_exp node = - match node with - Aval (i) -> i - | Plus (i, j) -> (eval_a_exp i) + (eval_a_exp j) - | Minus (i, j) -> (eval_a_exp i) - (eval_a_exp j) - | Times (i, j) -> (eval_a_exp i) * (eval_a_exp j) - | Of_bool b -> if (eval_b_exp b) then 1 else 0 -and eval_b_exp node = - match node with - Bval (b) -> b - | And (a, b) -> (eval_b_exp a) && (eval_b_exp b) - | Or (a, b) -> (eval_b_exp a) || (eval_b_exp b) - | Not b -> not (eval_b_exp b) - | Minor (i, j) -> (eval_a_exp i) < (eval_a_exp j) - -type 'a my_tree = - Leaf of 'a - | Node of ('a my_tree) list - -let mod_list y = - (List.fold_left - (fun acc x -> - match acc with - | [a] when ((List.hd a) = x) -> [x :: a] - | a :: tl when ((List.hd a) = x) -> (x :: a) :: tl - | _ -> [x] :: acc) - [] - y) - |> List.rev - -(* -------------------------------------------------------------------------- *) - -let to_tup f g = - fun x -> match x with - (a, b) -> (f a, g b) - -let partialsum l = - snd (List.fold_left_map (fun acc x -> (acc+x, acc+x)) 0 l) - -type label = - string - -type 'a finite_state_automata = { - l: label; - next: ('a finite_state_automata * 'a list) list; - final: bool; -} - -let rec check_included input fsa = - match input with - [] -> fsa.final - | a::rest -> ( - match List.find_opt (fun x -> List.mem a (snd x)) fsa.next with - None -> false - | Some x -> check_included rest (fst x) - ) - - -(* -------------------------------------------------------------------------- *) - -module StringMap = Map.Make(String) - -type fsa = { - vertices: bool StringMap.t; - edges: (string * char) StringMap.t; - state: string; -} - -let ex8 (instr: char list) (infsa: fsa) = - let rec helper_ex8 (i: char list) (ifsa: fsa) (current: string) = - match i with - [] -> ( - match StringMap.find_opt current ifsa.vertices with - None -> false - | Some b -> b - ) - | a::rest -> ( - match StringMap.find_first_opt (fun _ -> true) (StringMap.filter (fun x (_, y) -> x = current && y = a) ifsa.edges) with - None -> false - | Some (_, (outedge, _)) -> helper_ex8 rest ifsa outedge - ) - in helper_ex8 instr infsa infsa.state - -type binary_tree = - Node of binary_tree * binary_tree - | Leaf of int - -let ex9 b = - let rec helper_ex9 b' n = - match b' with - Leaf a -> a + n - | Node (r, l) -> (helper_ex9 r (helper_ex9 l n)) - in helper_ex9 b 0 - -(* -------------------------------------------------------------------------- *) diff --git a/lib/exercises/exercises.mli b/lib/exercises/exercises.mli deleted file mode 100644 index 7355881..0000000 --- a/lib/exercises/exercises.mli +++ /dev/null @@ -1,60 +0,0 @@ -type a_exp = - Aval of int - | Plus of a_exp * a_exp - | Minus of a_exp * a_exp - | Times of a_exp * a_exp - | Of_bool of b_exp -and b_exp = - Bval of bool - | And of b_exp * b_exp - | Or of b_exp * b_exp - | Not of b_exp - | Minor of a_exp * a_exp - - -val eval_a_exp: a_exp -> int -val eval_b_exp: b_exp -> bool - -type 'a my_tree = - Leaf of 'a - | Node of ('a my_tree) list - -val mod_list: 'a list -> 'a list list - -(* --------------------------------------------------------------------------- *) - -val to_tup : ('a -> 'b) -> ('c -> 'd) -> (('a * 'c) -> ('b * 'd)) - -val partialsum : int list -> int list - -type label = - string - -type 'a finite_state_automata = { - l: label; - next: ('a finite_state_automata * 'a list) list; - final: bool; -} - -val check_included : 'a list -> 'a finite_state_automata -> bool - -(* -------------------------------------------------------------------------- *) - -module StringMap : Map.S with type key = string - -type fsa = { - vertices: bool StringMap.t; - edges: (string * char) StringMap.t; - state: string; -} - -val ex8 : char list -> fsa -> bool - - -type binary_tree = - Node of binary_tree * binary_tree - | Leaf of int - -val ex9 : binary_tree -> int - -(* -------------------------------------------------------------------------- *) diff --git a/report/document.bib b/report/document.bib new file mode 100644 index 0000000..e69de29 diff --git a/report/document.pdf b/report/document.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1974e01e979adffb502935aedb2611312141745b GIT binary patch literal 200986 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�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∨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

\(\defeq\) `def main with input' `output' as + + \(\defeq\) skip + \alt{} `:=' + \alt{} `;' + \alt{} `if' `then' `else' + \alt{} `while' `do' + \alt{} `for' `(' `,' `,' `)' `do' + + \(\defeq\) | `\&\&' | `||' | `not' + \alt{} `<' | `<=' | `>' | `>=' + \alt{} `==' + + \(\defeq\) | | `+' | `-' | `*' | `/' a + \alt{} `\%' | `^' | `powmod' `(' `,' `,' `)' | `rand' `(' `)' + \end{grammar} + + Where \texttt{\%} is the modulo operator and \texttt{a a \% a} is the powermod operator; + the variables are all integers, \texttt{n} is an integer and \texttt{v} is a boolean litteral. + + The additional arithmetic expressions' semantics are implemented in a similar manner as with the other. + + The sematic of \texttt{for} is as follows: + + \begin{center} + \inference[\texttt{for}] + {\langle\sigma, c_1\rangle \to_c \sigma_1 & \langle\sigma_1, \texttt{while } b \texttt{ do } c_3 \texttt{; } c_2 \rangle \to_c \sigma_2} % chktex 1 + {\langle\sigma, \texttt{for} \texttt{(} c_1 \texttt{, } b \texttt{, } c_2 \texttt{)} \texttt{ do } c_3 \rangle \to_c \sigma_2} % chktex 1 chktex 9 + \end{center} + + but the implementation exploits the structure and doesn't simply rewrite the for loop as a while loop. + \end{subsection} + + \begin{subsection}{MiniFun Semantics} + The semantic of the MiniFun language is implemented in the \href{../lib/miniFun/Semantics.mli}{Semantics.mli} and \href{../lib/miniFun/Semantics.ml}{Semantics.ml} file. + A \texttt{reduce} function is provided that transforms the AST into the avluated value or an error. + The AST type is defined in \href{../lib/miniFun/Types.mli}{Types.mli} and in \href{../lib/miniFun/Types.ml}{Types.ml}. + + A program \texttt{t} is defined as follows: + \begin{grammar} + \(\defeq\) | | | `(' `,' `)' + \alt{} `fun' `:' `=>' | | | % chktex 38 + \alt{} `powmod' `(' `,' `,' `)' + \alt{} `rand' `(' `)' | + \alt{} `if' `then' `else' + \alt{} `let' `=' `in' + \alt{} `let' `rec' `: ' `=' `in' + + \(\defeq\) `not' | `fst' | `scn' + + \(\defeq\) `+' | `-' | `*' | `/' | `\%' | `^' | `\&\&' | `||' | `==' + \alt{} `<' | `<=' | `>' | `>=' + \end{grammar} + + As reflected in the grammar, tuples have been implemented and the unary functions fst and scn return respectively the first element of the tuple and the second. + \end{subsection} +\end{section} + + +\begin{section}{Types for MiniFun} + A type \(\tau\) is defined as either {\it int}, {\it bool}, a touple or a function. + + \begin{equation*} + \tau \defeq {\it int\/}\ \vert\ {\it bool\/}\ \vert\ (\tau,\tau)\ \vert\ \tau \to \tau + \end{equation*} + + The deduction rules regarding tuples are similar to those for functions: + + \begin{center} + \inference[\texttt{Tuple}] + {\Gamma \vdash t_1 \triangleright \tau_1 & \Gamma \vdash t_2 \triangleright \tau_2} % chktex 1 + {\Gamma \vdash (t_1, t_2) \triangleright \tau_1 * \tau_2} % chktex 1 + \end{center} + + \begin{center} + \inference[\texttt{Fst}] + {\Gamma \vdash t_1 \triangleright \tau_1 } % chktex 1 + {\Gamma \vdash \texttt{fst} (t_1, t_2) \triangleright \tau_1} % chktex 1 + \end{center} + + \begin{center} + \inference[\texttt{Snd}] + {\Gamma \vdash t_2 \triangleright \tau_2 } % chktex 1 + {\Gamma \vdash \texttt{snd} (t_1, t_2) \triangleright \tau_2} % chktex 1 + \end{center} + + The rules for function declaration with type annotations are thus: + + \begin{center} + \inference[\texttt{Fun}] + {\Gamma[x \mapsto \tau] \vdash t \triangleright \tau'} % chktex 1 + {\Gamma \vdash \texttt{fun} x \texttt{:} \tau \to \tau' \texttt{=>} t \triangleright \tau \to \tau'} % chktex 1 + \end{center} + + \begin{center} + \inference[\texttt{FunRec}] + {\Gamma[f \mapsto \tau \to \tau'; x \mapsto \tau] \vdash t_1 \triangleright \tau' & \Gamma[f \mapsto \tau \to \tau'] \vdash t_2 \triangleright \tau''} % chktex 1 + {\Gamma \vdash \texttt{let rec} f x \texttt{:} \tau \to \tau' \texttt{ = } t_1 \texttt{ in } t_2 \triangleright \tau''} % chktex 1 + \end{center} + + In the files \href{../lib/miniFun/TypeChecker.mli}{TypeChecker.mli} and \href{../lib/miniFun/TypeChecker.ml}{TypeChecker.ml} there is the implementation of the deduction rules, but returns either the valid type of the expression or an error instead of simply the required option type of the valid type. +\end{section} + +\begin{section}{Parsing} + \begin{subsection}{MiniImp} + Operators listed in order of precedence from highest to lowest: + + \begin{center} + \begin{tblr}{colspec={|c|c|}, rowspec={|Q|QQQQQQQ|}} + Operator & Associativity \\ + while & left \\ + \^{} & right \\ + * / mod & left \\ + not & {-} \\ + + {-} \(\vert\vert\) \&\& & left \\ + if & left \\ + {;} & left \\ + \end{tblr} + \end{center} + + The expressions \(c_1 \texttt{;} c_2\) and \(c_1 \texttt{;}\) are both recognized and give respectively \(\texttt{SEQUENCE(} c_1 \texttt{,} c_2 \texttt{)}\) % chktex 9 + and \(c_1\), such that semicolons can be placed always at the end of a command. + + Integers with a preceding minus sign can be interpreted as the opposite integer, with obviously lower precedence than the binary operator minus. + \end{subsection} + + + \begin{subsection}{MiniFun} + A decision was made to interpret \texttt{\textbackslash}, \texttt{lambda} and \texttt{fun} all as the start of the definition of a function just for ease of typing. They are associated to the same token \texttt{LAMBDA}. + + Operators listed in order of precedence from highest to lowest: + + \begin{center} + \begin{tblr}{colspec={|c|c|}, rowspec={|Q|QQQQQQQQQQQQ|}} + Operator & Associativity \\ + function application & right \\ + let & left \\ + fun & left \\ + fst snd & left \\ + not rand & {-} \\ + \^{} & right \\ + * / mod & left \\ + + {--} & left \\ + == {\(<\)} {\(\leq\)} {\(>\)} {\(\geq\)} & left \\ + \(\vert\vert\) \&\& & left \\ + powmod & left \\ + \(\lambda\) if let letrec & left \\ + \end{tblr} + \end{center} + + Tuples require parentesis in their definition, but the tuple type does not since there is no ambiguity. The symbol \texttt{->} that defines the function type is right associative and has lowest precedence. + \end{subsection} + + \begin{subsection}{Interpreters} + Both MiniImp and MiniFun have each an interpreter (\href{../bin/miniFunInterpreter.ml}{miniFunInterpreter.ml} and \href{../bin/miniFunInterpreter.ml}{miniFunInterpreter.ml}) that uses the package \href{https://opam.ocaml.org/packages/clap/}{Clap} to parse command line arguments and generate help pages. + + The input to the program can be supplied both in stdin or as a command parameter after \texttt{-v}. The MiniFun interpreter also check the types before computing the output of the program and returns an error in case the types mismatch. + \end{subsection} +\end{section} + + +\begin{section}{Control Flow Graph} + The control flow graph data structure is implemented in the analysis library in the files \href{../lib/analysis/Cfg.ml}{Cfg.ml} and \href{../lib/analysis/Cfg.mli}{Cfg.mli}. + + Each node contains only an id to distinguish from others. + + The control flow structure is composed of a flag to know if it is empty or contains nodes and the set of all contained nodes. + Since each node can only have at maximum 2 nodes as next nodes, the data structure contains a map from each node to a tuple of the two nodes or to a node. + The structure also contains the back edges of each node implemented as a map from each node to a list of nodes, the input value, the variables that are the input and ouput, the initial node and the terminal node. + Finally there is a map from each node to a list of generic elements that in our case are simple statements. + + \begin{subsection}{MiniImp Simple Statement} + MiniImp Simple Statements \(t\) is defined as follows: + + \begin{grammar} + \(\defeq\) skip | `:=' | `{?}' + + \(\defeq\) | `\&\&' | `||' | `not' + \alt{} `==' | `<' | `<=' | `>' | `>=' + + \(\defeq\) | | `+' | `-' | `*' | `/' + \alt{} `mod' | `^' | `rand' + \end{grammar} + + The implemented cfg is neither minimal nor maximal, but can be either or both for some programs. In particular each node as associated a list of statements and sequence of statements in the AST is put, if possible, in the same node. + + \texttt{?} is only allowed as the last element of the list of statemets associated with a node and a node has associated a \texttt{?} if and only if they have two next nodes. + + The for loop is translated as: + + \begin{center} + \begin{tikzpicture}[ + node/.style = {draw,rounded corners,blur shadow, fill=white,align=center}, + box/.style={rectangle,draw,inner sep=10pt} + ] + \node[node] at (0, 1.3) (b11) {$i_1^1$}; + \node[node] at (0, 0) (b12) {$f_1^1$}; + \node[box,fit = (b11) (b12)] (externalbox1) {}; + + \node[node, opacity=0] at (3, 1.3) (bb1) {$i_1^b$}; + \node[node, opacity=0] at (3, 0) (bb2) {$f_1^b$}; + \node[node] at (3, 0.65) (bball) {$i^b$}; + \node[box,fit = (bb1) (bb2)] (externalboxb) {}; + + \node[node] at (6, 1.3) (b21) {$i_1^2$}; + \node[node] at (6, 0) (b22) {$f_1^2$}; + \node[box,fit = (b21) (b22)] (externalbox2) {}; + + \node[node] at (9, 1.3) (b31) {$i_1^3$}; + \node[node] at (9, 0) (b32) {$f_1^3$}; + \node[box,fit = (b31) (b32)] (externalbox3) {}; + + \node[fit = (externalbox1) (externalbox2) (externalbox3) (externalboxb)] (boxall) {}; + + \begin{scope}[rounded corners,-latex] + \path (externalbox1) edge (b11.north); + \path[dashed] (b11) edge (b12); + \path (b12) edge (externalbox1); + + \path (externalboxb) edge (bball.north); + \path (bball) edge (externalboxb.south); + + \path (externalbox2) edge (b21.north); + \path[dashed] (b21) edge (b22); + \path (b22) edge (externalbox2); + + \path (externalbox3) edge (b31.north); + \path[dashed] (b31) edge (b32); + \path (b32) edge (externalbox3); + \end{scope} + + \node[above] at (boxall.north) {\texttt{for (}\(c_1\)\texttt{,} \(b\)\texttt{,} \(c_2\)\texttt{) do} \(c_3\)}; + \node[left] at (externalbox1.west) {\(c_1\):}; + \node[left] at (externalboxb.west) {\(b\):}; + \node[left] at (externalbox2.west) {\(c_2\):}; + \node[left] at (externalbox3.west) {\(c_3\):}; + + \node[node] at (4.5, -2.7) (b11) {$i_1^1$}; + \node[node] at (4.5, -4) (b12) {$f_1^1$}; + + \node[node] at (4.5, -5.3) (guard) {$i^b$}; + + \node[node] at (4.5, -6.6) (b31) {$i_1^3$}; + \node[node] at (4.5, -7.9) (b32) {$f_1^3$}; + + \node[node] at (4.5, -9.2) (b21) {$i_1^2$}; + \node[node] at (4.5, -10.5) (b22) {$f_1^2$}; + + \node[node] at (4.5, -11.8) (exitnode) {\texttt{skip}}; + + \node[box, fit = (b11) (b12) (guard) (b31) (b32) (b21) (b22) (exitnode), + inner sep=15pt] (externalboxall) {}; + + \begin{scope}[rounded corners,-latex] + \path[dashed] (b11) edge (b12); + \path[dashed] (b21) edge (b22); + \path[dashed] (b31) edge (b32); + + \path (b12) edge (guard); + \path (guard) edge (b31); + + \path (b32) edge (b21); + \path (b22.135) edge[bend left=20] (guard.220); + + \path (guard.-40) edge[bend left=15] (exitnode.35); + + \path (externalboxall.north) edge (b11.north); + \path (exitnode.south) edge (externalboxall.south); + \end{scope} + + \node[above] at (externalboxall.north) {becomes:}; + \end{tikzpicture} + \end{center} + + We highlight the fact that the operation powermod is absent in the grammar of simple statements. In fact all powermod are replaced in the AST before translating into CFG with the function \texttt{rewrite_instructions} in \href{../lib/miniImp/replacePowerMod.ml}{replacePowerMod.ml} and \href{../lib/miniImp/replacePowerMod.mli}{replacePowerMod.mli}. + + \texttt{powmod(}\(a_1\)\texttt{, }\(a_2\)\texttt{, }\(a_3\)\texttt{)} % chktex 9 chktex 36 + is translated into: + + \begin{lstlisting} +pow := £\(a_1\)£; +exp := £\(a_2\)£; +mod := £\(a_3\)£; +res := 1; +if exp < 0 then + exp := 0 - exp; +else + skip; +while exp > 0 do ( + if 1 = exp % 2 then + res := (res * pow) % mod; + else + skip; + + pow := (pow * pow) % mod; + exp := exp / 2; +) +\end{lstlisting} + + The variables \texttt{pow}, \texttt{exp}, \texttt{mod} and \texttt{res} are all fresh and the value of res is then substituted into powmod place. This might need some more scope than only the expression since \texttt{powmod} may be included in a \texttt{if} guard, thus it is placed before the \texttt{if}; in case it is in the guard of a \texttt{while} or a \texttt{for} loop it is also updated at the end of the body. + + The reason for substituting \texttt{powmod} in the AST is that we would need to add nodes to form the \texttt{if} and \texttt{while} and it would prove more difficult. + \end{subsection} +\end{section} + +\begin{section}{Intermediate Code Generation} + \begin{subsection}{MiniRISC CFG} + In the files \href{../lib/miniImp/CfgRISC.ml}{CfgRISC.ml} and \href{../lib/miniImp/CfgRISC.mli}{CfgRISC.mli} the CFG generated from the AST gets translated into intermediate code with the following MiniRISC simple statements: + + \begin{grammar}\label{grammar:MiniRISC} + \(\defeq\) Nop + \alt{} BRegOp \(\Rightarrow\) + \alt{} BImmOp \(\Rightarrow\) + \alt{} URegOp \(\Rightarrow\) + \alt{} Load \(\Rightarrow\) + \alt{} LoadI \(\Rightarrow\) + \alt{} Store \(\Rightarrow\) + + \(\defeq\) Add | Sub | Mult | Div | Mod | Pow | And | Or + \alt{} Eq | Less | LessEq | More | MoreEq + + \(\defeq\) AddI | SubI | MultI | DivI | ModI | PowI | AndI | OrI + \alt{} EqI | LessI | LessEqI | MoreI | MoreEqI + + \(\defeq\) Not | Copy | Rand + \end{grammar} + + Since we stride towards shorter code and less instructions, we would prefer to use the \texttt{biop} version of each operation whenever possible. So for some operations that are commutative if the first term is the immediate value we swap the terms and use the \texttt{biop} variant instead of loading the value into a register and using the register for the calculation. Also some operations like \texttt{>} and \texttt{<} are opposite, so to invert the order we need to use the other \texttt{biop} version. + The input variable and the output variable are also mapped to \texttt{in} and \texttt{out} registers, while all other variables are given fresh registers. + \end{subsection} + + \begin{subsection}{MiniRISC} + The MiniRISC CFG is finally tranlated into MiniRISC intermediate code by the function \texttt{convert} in the files \href{../lib/miniImp/RISC.ml}{RISC.ml} and \href{../lib/miniImp/RISC.mli}{RISC.mli}. + The grammar of MiniRISC is analogous to the one for \hyperref[grammar:MiniRISC]{MiniRISC Simple Statements}: + + \begin{grammar} + \(\defeq\) Nop + \alt{} BRegOp \(\Rightarrow\) + \alt{} BImmOp \(\Rightarrow\) + \alt{} URegOp \(\Rightarrow\) + \alt{} Load \(\Rightarrow\) + \alt{} LoadI \(\Rightarrow\) + \alt{} Store \(\Rightarrow\) + \alt{} Jump + \alt{} CJump + \alt{} Label + + \(\defeq\) Add | Sub | Mult | Div | Mod | Pow | And | Or + \alt{} Eq | Less | LessEq | More | MoreEq + + \(\defeq\) AddI | SubI | MultI | DivI | ModI | PowI | AndI | OrI + \alt{} EqI | LessI | LessEqI | MoreI | MoreEqI + + \(\defeq\) Not | Copy | Rand + \end{grammar} + + where \texttt{l} is a string that uniquely identifies a label. + \end{subsection} + + \begin{subsection}{RISC Semantics} + It is also implemented in the files \href{../lib/miniImp/RISCSemantics.ml}{RISCSemantics.ml} and \href{../lib/miniImp/RISCSemantics.mli}{RISCSemantics.mli} a reduce function, that evaluates MiniRISC code. + The labels are used as is and not replaced by offsets, so the code is translated into a map from labels to code blocks for ease of computation. + \end{subsection} +\end{section} + +\begin{section}{Dataflow Analysis} + A refined CFG structure used for analysis is defined in \href{../lib/analysis/Dataflow.ml}{Dataflow.ml} and \href{../lib/analysis/Dataflow.mli}{Dataflow.mli}. The CFG is supplemented with a map from each node to the support structure that stores the list of defined variables or live variables. Since the CFG is not minimal, there is also a list for each simple statement. A fixed point function then applies the input fuction until the map does not change. Simple structural equality is not appropriate since order in the lists should not matter; an internal function for equality is used. + + \begin{subsection}{Defined Variables} + In the files \href{../lib/miniImp/definedVariables.ml}{definedVariables.ml} and \href{../lib/miniImp/definedVariables.mli}{definedVariables.mli} three functions are defined: \texttt{compute_defined_variables}, \texttt{compute_cfg} and \texttt{check_undefined_variables}. + + \texttt{compute_defined_variables} creates the appropriate structure for the analysis and runs it. It returns the whole analysis structure. + \texttt{compute_cfg} returns the CFG from the analysis data structure; in the case of defined variables analysis the CFG returned is the same as the one in input of \texttt{compute_defined_variables}. + \texttt{check_undefined_variables} returns all variables that might be undefined at time of use. + + Since the greatest fixed point is computed, first all variables are retrived from all code, then assigned to each input and ouput list of variables for each line of code. + + Since it is an approximation some behaviour might not be intuitive. For example: + +\begin{lstlisting} +for (x := 0, x < 10, x := x + 1) do ( + y := rand(x); +); +output := y; +\end{lstlisting} + + will return the register associated with \texttt{y} as undefined since the guard of the for cycle might never be true. + \end{subsection} + + \begin{subsection}{Live Variables} + In the files \href{../lib/miniImp/liveVariables.ml}{liveVariables.ml} and \href{../lib/miniImp/liveVariables.mli}{liveVariables.mli} three functions are defined: \texttt{compute_live_variables}, \texttt{compute_cfg} and \texttt{optimize_cfg}. + + \texttt{compute_live_variables} creates the appropriate structure for the analysis and runs it. It returns the whole analysis structure. + \texttt{compute_cfg} returns the CFG from the analysis data structure. + \texttt{optimize_cfg} applies liveness analysis to reduce the number of registers used; returns the analysis structure (not the RISC CFG). + \end{subsection} +\end{section} + +\begin{section}{Target Code Generation} + In the files \href{../lib/miniImp/reduceRegisters.ml}{reduceRegisters.ml} and \href{../lib/miniImp/reduceRegisters.mli}{reduceRegisters.mli} the function \texttt{reduceregisters} reduces the number of used registers by counting the syntactic occurrence of each variable and partitioning the set keeping the most used as registers. All registers are either renamed or put into memory. It is allowed for the input or output registers to be put in memory, in the latter case some code is added at the end of the program to retrive the value and put into a register (register \texttt{2}). + + \begin{subsection}{MiniImp to MiniRISC compiler} + The file \href{../bin/miniImpInterpreterReg.ml}{miniImpInterpreterReg.ml} compiles from MiniImp to MiniRISC or execute the MiniRISC code. It uses the package \href{https://opam.ocaml.org/packages/clap/}{Clap} to parse command line arguments and generate help pages. + + The input to the program can be supplied both in stdin or as a command parameter after \texttt{-v}. The flags for disabling the check for undefined variables or liveness analysis optimization are \texttt{-u} and \texttt{-l} respectively. + \end{subsection} +\end{section} + +\begin{section}{Running the code} + The project uses the following packages: \href{https://dune.build/}{Dune}, \href{https://gallium.inria.fr/~fpottier/menhir/}{Menhir} and \href{https://github.com/rbardou/clap}{Clap}. They can be installed via \href{https://opam.ocaml.org/}{Opam} with the command \texttt{opam install dune menhir clap}. + To compile the project simply run \texttt{dune build}. To run the test run \texttt{dune runtest}. + In order to execute one of the interpreters run \texttt{dune exec {-}{-} }. To see a list of all options run \texttt{dune exec {-}{-} -h}. A binary version of the executables can also be found in \href{./_build/default/bin/}{./_build/default/bin/}. +\end{section} +%%% Local Variables: +%%% TeX-command-extra-options: "-shell-escape" +%%% TeX-master: "document.tex" +%%% End:

oPK6+gSchQqkrAf76ZXda(i7~F__KmMo%5D&%;& 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 N1L3osubsubsecition) +\setcounter{tocdepth}{3} +\setcounter{secnumdepth}{3} + +%% use bar instead of arrow for vectors +\renewcommand{\vec}[1]{\bar{#1}} +%% easy norm +\newcommand{\norm}[1]{\left\lvert#1\right\rvert} + +% argmin and argmax +\DeclareMathOperator*{\argmax}{argmax} +\DeclareMathOperator*{\argmin}{argmin} + +%% itemize use less vertical space (use olditemize for default behaviour) +\let\olditemize=\itemize%% old itemize +\let\endolditemize=\enditemize%% old end itemize +\renewenvironment{itemize}{\olditemize\itemsep-0.2em}{\endolditemize} + +%% items in itemize emph+box +%% usage: \ieb{Class:} for simple item +%% \ieb[4cm]{Class:} for specific size of box +\newcommand{\ieb}[2][2cm]{ + \makebox[#1][l]{\emph{#2}} +} %% TODO: replace with description environment (? maybe) + +% less vertical space around align & align* +\newcommand{\zerodisplayskips}{ + \setlength{\abovedisplayskip}{0pt} + \setlength{\belowdisplayskip}{0pt} + \setlength{\abovedisplayshortskip}{0pt} + \setlength{\belowdisplayshortskip}{0pt} +} + +% make dotfill use all the space available +\renewcommand{\dotfill}{ + \leavevmode\cleaders\hbox to 1.00em{\hss .\hss }\hfill\kern0pt } % chktex 1 chktex 26 + +\setlength{\fboxsep}{-\fboxrule} % for debugging + + +%% PACKAGE algorithm +\floatname{algorithm}{Algorithm} + + +%% PACKAGE tabularray +\UseTblrLibrary{amsmath} + + +%% PACKAGE color +\definecolor{red}{rgb}{1, 0.1, 0.1} +\definecolor{lightgreen}{rgb}{0.55, 0.87, 0.47} +\definecolor{gray}{rgb}{0.3, 0.3, 0.3} +\newcommand{\lgt}{\cellcolor{lightgreen}} %% light green in tables +\newcommand{\gry}{\textcolor{gray}} %% gray text +\newcommand{\rd}{\textcolor{red}} %% red text + +%% PACKAGE minipage +\newcommand{\thend}[1]{\begin{center} + \begin{minipage}[c][1em][c]{#1} + \dotfill{} + \end{minipage} +\end{center}} + + +%% PACKAGE thmtools + + +%% ......................................................................... %% +%% local changes +% \setcounter{secnumdepth}{0} + +\newcommand{\defeq}{\vcentcolon=} + +\lstdefinelanguage{miniimp}{ + keywords={if, then, else, skip, while, do, for, rand}, + keywordstyle=\color{blue}\bfseries, + identifierstyle=\color{black}, + sensitive=false, + morecomment=[s]{(*}{*)}, % chktex 9 + commentstyle=\color{gray}\ttfamily, + stringstyle=\color{red}\ttfamily, + escapeinside={£}{£}, + numbers=left, + stepnumber=1 +} + +\lstset{ + language=miniimp, + extendedchars=true, + basicstyle=\footnotesize\ttfamily, + showstringspaces=false, + showspaces=false, + tabsize=2, + breaklines=true, + showtabs=false +} + +%% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %% + +\title{Document} +\author{ + Elvis Rossi +} +\date{\today} + +%% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %% + +\begin{document} + +\input{report} + +\end{document} + +%% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %% + +%%% Local Variables: +%%% TeX-command-extra-options: "-shell-escape" +%%% End: diff --git a/report/report.tex b/report/report.tex new file mode 100644 index 0000000..d9b9fd2 --- /dev/null +++ b/report/report.tex @@ -0,0 +1,425 @@ +\begin{section}{Semantics} + \begin{subsection}{MiniImp} + The semantic of the MiniImp language is implemented in the \href{../lib/miniImp/Semantics.mli}{Semantics.mli} and \href{../lib/miniImp/Semantics.ml}{Semantics.ml} file. + A \texttt{reduce} function is provided that transforms an AST into the evaluated value or an error. + The AST type is defined in \href{../lib/miniImp/Types.mli}{Types.mli} and in \href{../lib/miniImp/Types.ml}{Types.ml}. + + A program \texttt{p} is defined as follows: + \begin{grammar} +