10.8 Memory Models
MPLAB XC32 C/C++ Compiler does not use fixed memory models to alter allocation of variables to memory.
The -G
option (see 5.7.1 Options Specific to PIC32M Devices),
which controls the gp-relative addressing threshold, is similar to the
small-data/large-data/scalar-data memory models offered by the Microchip compilers for
the 8- and 16-bit architectures. The value specified with this option indicates the
maximum size of objects that will be allocated to the small data sections, for example,
sbss
, sdata
, etc. Variables allocated to the
small-data sections require fewer instructions to access than variables allocated to the
other data sections. For example:
xc32-gcc -G128 -mprocessor=32MX795F512L main.c
In this example, data objects up to 128 bytes in size will be located in the efficient small-data or small-bss section.
In general larger -G
values result in more efficient code. However,
gp-relative addressing is limited to 64-KB of small data.