Single-Machine Trigger Examples
To store and time the execution of a subroutine
To store and time the execution of a subroutine
Most system software of any kind is composed of a hierarchy of functions and
procedures. During integration, testing, and performance evaluation, you
want to look at specific procedures to verify that they are executing correctly
and that the implementation is efficient. The analyzer allows you to do this by
triggering on entry to the address range of the subroutine and counting the
elapsed time since the trigger state.
Go to the state analyzer's Trigger menu.
1
Set Count to Time.
2
Define a range term, such as Range1, to represent the address range
3
of the particular subroutine.
You may need to examine the structure of your code to help determine this.
If your subroutine calls are really procedure calls, then there is likely to be
some code at the beginning of the routine that adjusts the stack for local
variable allocation. This will precede the address of the first statement in the
procedure. If your subroutine has no local storage and is called by a jump or
branch, then the first statement will also be the entry address.
Under State Sequence Levels, enter the following sequence
4
specification:
•
While storing "no state" TRIGGER on "In_Range1" Occurs 1 Else on "no
state" go to level 1
•
While storing "In_Range1" Then find "Out_Range1" Occurs 1 Else on "no
state" go to level 2
•
Store "no state" on "no state" go to level 1
For processors that prefetch instructions or have pipelined architectures, you
may want to add part or all of the depth of the pipeline to the start address for
In_Range1 to ensure that the analyzer does not trigger on a prefetched but
unexecuted state.
5-4