.. index:: pair: ANSI fake VM; design .. _design-vman: ANSI fake VM ============ .. mps:prefix:: design.mps.vman :mps:tag:`intro` The ANSI fake VM is an implementation of the MPS VM interface (see `design.mps.vm`_) using only services provided by the ANSI C Library (standard.ansic.7). .. _design.mps.vm: vm :mps:tag:`page.size` The VM uses a fake page size, given by the constant :c:macro:`VMAN_PAGE_SIZE` in ``config.h``. :mps:tag:`align` The VM is aligned to the arena grain size by adding the grain size to the requested size, allocating a block that large using :c:func:`malloc()`, then rounding the pointer to the block up to a multiple of the grain size and storing the result in ``vm->base``. The block is stored in ``vm->block``, which is passed to :c:func:`free()` in :c:func:`VMFinish()`.