let string_of_register = function
| Reg_int (-2) -> "%esp"
| Reg_int (-1) -> "%ebp"
| Reg_int 0 -> "%eax"
| Reg_int 1 -> "%ebx"
| Reg_int 2 -> "%ecx"
| Reg_int 3 -> "%edx"
| Reg_int 4 -> "%esi"
| Reg_int 5 -> "%edi"
| Reg_flag _ -> raise (Asm_error "trying to use flags as register")
| _ -> raise (Asm_error "trying to use a register > %edx!")