sig
  type t
  type value = int64
  type ptr = int64
  val word_size : int
  val zero : Machine.value
  val one : Machine.value
  exception Error of string
  val create : ?words:int -> unit -> Machine.t
  val malloc : Machine.t -> int -> Machine.ptr
  val get : Machine.t -> Register.t -> Machine.value
  val set : Machine.t -> Register.t -> Machine.value -> unit
  val load : Machine.t -> Machine.ptr -> ofs:int -> Machine.value
  val store : Machine.t -> Machine.ptr -> ofs:int -> Machine.value -> unit
  val push : Machine.t -> Machine.value -> unit
  val push_register : Machine.t -> Register.t -> unit
  val pop : Machine.t -> Machine.value
  val pop_in_register : Machine.t -> Register.t -> unit
  val fresh_registers : Machine.t -> Machine.t
end