11.07.2015 Views

PicC 9.50 dsPIC Manual.pdf

PicC 9.50 dsPIC Manual.pdf

PicC 9.50 dsPIC Manual.pdf

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Program SectionsLinker and Utilitiesthe file is said to be relocatable. Relocation may take two basic forms; relocation by name, i.e.relocation by the ultimate value of a global symbol, or relocation by psect, i.e. relocation by thebase address of a particular section of code, for example the section of code containing the actualexecutable instructions.5.3 Program SectionsAny object file may contain bytes to be stored in memory in one or more program sections, whichwill be referred to as psects. These psects represent logical groupings of certain types of code bytes inthe program. In general the compiler will produce code in three basic types of psects, although therewill be several different types of each. The three basic kinds are text psects, containing executablecode, data psects, containing initialised data, and bss psects, containing uninitialised but reserveddata.The difference between the data and bss psects may be illustrated by considering two externalvariables; one is initialised to the value 1, and the other is not initialised. The first will be placed intothe data psect, and the second in the bss psect. The bss psect is always cleared to zeros on startup ofthe program, thus the second variable will be initialised at run time to zero. The first will howeveroccupy space in the program file, and will maintain its initialised value of 1 at startup. It is quitepossible to modify the value of a variable in the data psect during execution, however it is betterpractice not to do so, since this leads to more consistent use of variables, and allows for restartableand ROMable programs.For more information on the particular psects used in a specific compiler, refer to the appropriatemachine-specific chapter.5.4 Local PsectsMost psects are global, i.e. they are referred to by the same name in all modules, and any referencein any module to a global psect will refer to the same psect as any other reference. Some psectsare local, which means that they are local to only one module, and will be considered as separatefrom any other psect even of the same name in another module. Local psects can only be referredto at link time by a class name, which is a name associated with one or more psects via the PSECTdirective class= in assembler code. See Section 4.3.8.3 for more information on PSECT options.5.5 Global SymbolsThe linker handles only symbols which have been declared as GLOBAL to the assembler. The codegenerator generates these assembler directives whenever it encounters global C objects. At the C90

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!