let rec sizeof = function
| Pointer _
| Integer -> 4
| Boolean -> 1
| Record r -> List.fold_left (fun s (_, t) -> s + (sizeof t)) 0 r
| Array(t, d, f) -> (sizeof t) * ((eval_expr_int f) - (eval_expr_int d) + 1)
| t ->
Log.debug (string_of_type t);
raise (Asm_error "internal error in sizeof function")