An approach of analyzing software performance without requiring hardware
is presented. A timing description generator logs instruction performance
characteristics for each of the assembly code's instructions. The
performance characteristics identify whether an instruction issued or
stalled during particular instruction cycles. Once the timing description
generator cycles through the instructions and logs performance
characteristics for each instruction, the timing description generator
generates a performance graph. For each page line, the performance graph
includes 1) dual-issue information if applicable, 2) instruction cycle
counter values/stalled instruction identifier's that are positioned at
corresponding line location values, and 3) the instruction. A developer
may analyze the performance graph and identify code locations that
require optimization in order to increase performance.