5.3.1 Program Memory Classes

The following linker classes are defined once you include <xc.inc> and represent program space memory. Not all classes will be present for each device.

CODE
Consists of ranges that map to the program memory pages on the target device and are used for psects containing executable code.
 On Baseline devices, it can only be used by code that is accessed via a jump table.
ENTRY
Is relevant for Baseline device psects containing executable code that is accessed via a call instruction. Calls can only be to the first half of a page on these devices. 
The class is defined in such a way that it spans a full page, but the psects it holds will be positioned so that they start in the first half of the page.
 This class is also used in Mid-range devices and will consist of many 0x100 word-long ranges, aligned on a 0x100 boundary.
STRING
Consists of ranges that are 0x100 words long and aligned on a 0x100 boundary. Thus, it is useful for psects whose contents cannot span a 0x100 word boundary.
STRCODE
Defines a single memory range that covers the entire program memory. It is useful for psects whose content can appear in any page and can cross page boundaries.
CONST
Consists of ranges that are 0x100 words long and aligned on a 0x100 boundary. Thus, it is useful for psects whose contents cannot span a 0x100 word boundary.