module Ltltree:sig
..end
typeident =
string
uniquement pour les fonctions
typeregister =
Register.t
typelabel =
Label.t
type
operand =
| |
Reg of |
| |
Spilled of |
une opérande est un registre physique (Reg) ou un emplacement de pile (Spilled)
type
instr =
| |
Eload of |
|||
| |
Estore of |
|||
| |
Egoto of |
|||
| |
Ereturn |
(* | les mêmes que dans ERTL, mais avec operand à la place de register | *) |
| |
Econst of |
|||
| |
Emunop of |
|||
| |
Embinop of |
|||
| |
Emubranch of |
|||
| |
Embbranch of |
|||
| |
Epush of |
(* | légèrement modifiée | *) |
| |
Ecall of |
(* | nouveau | *) |
| |
Epop of |
Les différentes instructions LTL
typecfg =
instr Label.map
Un graphe de flot de contrôle est un dictionnaire associant à des étiquettes des instructions LTL.
type
deffun = {
|
fun_name : |
|
fun_entry : |
|
fun_body : |
une fonction LTL
type
file = {
|
funs : |
un programme LTL
val succ : instr -> label list
val print_operand : Stdlib.Format.formatter -> operand -> unit
val print_instr : Stdlib.Format.formatter -> instr -> unit
val print_graph : Stdlib.Format.formatter -> cfg -> label -> unit
val print_deffun : Stdlib.Format.formatter -> deffun -> unit
val print_file : Stdlib.Format.formatter -> file -> unit