6.3.3 Function Information
For each C function, printed before the function’s assembly label (search
for the function’s name that is immediately followed by a colon :
), is
general information relating to the resources used by that function. A typical printout is
shown in the diagram below. Most of the information is self-explanatory, but special
comments follow.
The locations shown use the format
offset[space]
. For example, an indicated location of
42[BANK0]
means that the variable was located in the bank 0 memory
space and that it appears at an offset of 42 bytes into the compiled stack component in
this space (see 5.7.2.1 Compiled Stack Operation). It
does mean the variable was assigned address 42. Any other object with the address
42[BANK0]
is at the same address.
Whenever pointer variables are shown, they are often accompanied by the
targets that the pointer can reference, these targets appear after the arrow
->
(see 6.3.5 Pointer Reference Graph). The auto and parameter section of
this information is especially useful because the size of pointers is dynamic (see 5.3.6 Pointer Types). This
information shows the actual number of bytes assigned to each pointer variable.
The tracked objects information is generally of no concern to programmers. It indicates the known state of the currently selected RAM bank on entry to the function and at its exit points. It also indicates the bank selection bits that did, or did not, change in the function.
The hardware stack information shows how many stack levels were taken up by this function alone, and the total levels used by this function and any functions it calls. Note that this is only valid for functions that are have not been inlined.
Functions that use a non-reentrant model are those that allocate auto and parameter variables to a compiled stack and which are, as a result, not reentrant. If a function is marked as being reentrant, it allocates stack-based variables to the software stack and can be reentrantly called.