let load_mem mem te loc =
match te with
| C_pointer ty ->
let cv = Ctypes.object_of ty in
V_pointer(cv, Addr(addr_of_data (F.e_access mem (addr loc)),cv))
| C_int i ->
V_int(i,int_of_data i (F.e_access mem (addr loc)))
| C_float f ->
V_float(f, float_of_data f (F.e_access mem (addr loc)) )
| C_comp comp ->
if comp.cstruct then
let z = zrange loc (sizeof te) in
let d = model_access_range mem z in
V_record(comp,s_of_data comp d)
else Wp_parameters.not_yet_implemented "load of union"
| C_array arr ->
let z = zrange loc (sizeof te) in
let d = model_access_range mem z in
V_array(arr,a_of_data arr d)