1. A method of recognizing a subroutine call, comprising: detecting a non-sequential change in program flow; retrieving a next sequential address after the detected non-sequential change in program flow; and comparing the next sequential address with the contents of a register to determine whether the non-sequential change is a subroutine call.