The following diagram shows the default VisUAL memory map:
The exact distribution of memory between resources is hardware-specific. For example, in the ARM Cortex M3, the lower 512MB of memory addresses are reserved as code memory.
Since VisUAL does not emulate external device configuration, the memory model for VisUAL is a lot simpler: the lower memory addresses are reserved for saving instructions. As a result the program counter starts with instruction 1 at address 0x0
.
During execution, this instruction space memory is not available for read or write access. The addresses can still be used to manually invoke a branch, such as returning from a subroutine using the instruction MOV PC, LR
.
By default, VisUAL sets the instruction memory size to 0x10000, which allows emulation of up to 16,384 lines of code.
The instruction memory size can be customised via the Settings Panel, as seen in the following screenshot.