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 listval 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