7.1.4 D: Define Class Delta Value

The -Dclass=delta option defines the delta value for the address ranges specified for a class.

The delta value should be a number. It represents the number of bytes per addressable unit of objects within the psects. The default value is 1, which is the correct value for most classes needed by PIC devices. The delta value assigned to a class should match that assigned to the psects that are linked in the class (see 6.1.9.39.4 Delta Flag).

PIC Baseline and Mid-range devices have word-accessed program memory, thus the delta value associated with any psects linked into this memory should be set to 2. Such a value means that two bytes of data are needed to program a single address location in this space. The data memory on these devices is byte addressable, so a delta value of 1 is appropriate for classes representing such memory. The compiler automatically specifies the -D linker option for any linker classes it defines and that need a non-unity delta value. If you define your own linker classes and those classes will be used to represent program memory addresses, you will need to use this option with each of those classes. For example, the following linker options define a program memory class called MYCODE and set a delta value of 2 for that class.
-AMYCODE=0h-07FFhx4  -DMYCODE=2