Read a value from the given memory location.
Note that the peek and poke functions might require properly aligned
addresses to function correctly. This is architecture dependent; thus,
portable code should ensure that when peeking or poking values of some
type a, the alignment constraint for a, as given by
the function alignment is fulfilled.
Read a value from a memory area regarded as an array of values of the
same kind. The first argument specifies the start address of the array
and the second the index into the array (the first element of the
array has index 0). The following equality holds,