| |||
| Home > Directives Reference > Frame directives | |||
This section describes the following directives:
Correct use of these directives:
enables
the armlink --callgraph option
to calculate stack usage of assembler functions.
The following rules are used to determine stack usage:
If a function is not marked with PROC or ENDP,
stack usage is unknown.
If a function is marked with PROC or ENDP but
with no FRAME PUSH or FRAME POP, stack
usage is assumed to be zero. This means that there is no requirement
to manually add FRAME PUSH 0 or FRAME POP 0.
If a function is marked with PROC or ENDP and
with FRAME PUSH n or FRAME POP n, stack
usage is assumed to be n bytes.
helps you to avoid errors in function construction, particularly when you are modifying existing code
enables the assembler to alert you to errors in function construction
enables backtracing of function calls during debugging
enables the debugger to profile assembler functions.
If you require profiling of assembler functions, but do not need frame description directives for other purposes:
you must use the FUNCTION and ENDFUNC,
or PROC and ENDP, directives
you can omit the other FRAME directives
you only need to use the FUNCTION and ENDFUNC directives
for the functions you want to profile.
In DWARF, the canonical frame address is an address on the stack specifying where the call frame of an interrupted function is located.