6.3.6 Call Graph

The other important information in the assembly list file is the call graph. This is produced for all 8-bit devices, which can use a compiled stack to facilitate stack-based variables (function parameters, auto and temporary variables). See 5.7.2.1 Compiled Stack Operation, for more detailed information on compiled stack operation.

Call graph tables, showing call information on a function-by-function basis, are presented in the map file, followed by more traditional call graphs for the entire program. The call graphs are built by the code generator, and are used to allow overlapping of functions’ auto-parameter blocks (APBs) in the compiled stack. The call graphs are not used when functions use the software stack. You can obtain the following information from studying the call graph.

  • The functions in the program that are “root” nodes marking the top of a call tree, and that are called spontaneously.
  • The functions that the linker deemed were called, or can have been called, during program execution (and those which were called indirectly via a pointer).
  • The program’s hierarchy of function calls.
  • The size of the auto and parameter areas within each function’s APB.
  • The offset of each function’s APB within the compiled stack.
  • The estimated call tree depth.

These features are discussed in sections that follow.