model explicitly assumes that the RAM for an executing program is divided
into three regions as illustrated in Figure 2.5. The data in RAM are allocated
during the link process and initialized by startup code at reset (see Chapter 3).
The (optional) heap is managed at runtime by library code implementing functions
such as the malloc and free which are part of the standard C library.
The stack is managed at runtime by compiler generated code which generates
per-procedure-call stack frames containing local variables and saved registers