let print_element (e: element) (out: out_channel) = match e with
Reg(r,DInt) -> output_string out ("\t\treg["^(string_of_int r)^"].i")
| Reg(r,DFloat) -> output_string out ("\t\treg["^(string_of_int r)^"].f")
| Off(o,DInt,_) -> output_string out ("\t\toffset "^(string_of_int o))
| Off(o,DFloat,_) -> output_string out ("\t\toffset "^(string_of_int o))
| Label(l) -> output_string out ("\t\tLabel number "^(string_of_int l))
| Val(v) -> output_string out ("\t\tVal "^(string_of_value v))
| Subr(s) -> output_string out ("\t\tSubr "^s)
| Null -> output_string out "\t\tNULL\t"
| _ -> raise (CONFIRM_RULE "This happens when a register or an offset has type bool, which means never")