| |||
| Home > The Code and Replay Views > The disassembly panel > Disassembly panel column headers | |||
This section provides an explanation of each of the column headers present in the disassembly panel.
CC - Just like in the source panel, CC is shorthand for code coverage. A green box indicates the instruction was executed during the profiling, a red circles means it was not, while a yellow triangle indicates it was only partially executed. An instruction is said to be partially covered when it is conditionally executed and only one of the conditions is ever executed. For instance, an ADDEQ instruction is partially covered when the equality condition is always true or always false.
Time - Time, as shown in the ARM Profiler, is a relative measure and is not measured in actual execution time. The displayed unit of measure depends on the method used to gather profiling data. For more information on time, samples and estimated cycles, see Chapter 5 The Table Reports: Function, File, Class, and Call Chain.
Count - The number of times the instruction was executed.
Address - The memory address where this instruction is located. This number appears in green if the instruction was inlined due to code optimization. Inlining is most likely to occur when using the highest level of compiler optimizations (-o3). You can easily identify the instructions that were inlined as a result of this process by their green addresses in the Address column. Hover over the address column to get a tooltip, or scroll to the Disassembly column for details about the function’s inline destination.
Opcode - The machine code instruction as it is executed by the microprocessor.
Branches - The branches column shows you where the instruction was called from and shows all its calling locations. It is essentially split into two halves. The left side of the branches column shows every instruction that calls or is called by another function. What follows is a brief description of each of the arrow types that appear in the left half of this column:
-
This arrow appears if the instruction is called by an instruction contained
in another function. Hover over the arrow to show a tooltip that lists
each of the calling instructions and the call percentage of each. Right-click
on the instruction to open a contextual menu that contains the same
information. Each calling location here is a menu option that takes you
to the calling instruction in the disassembly panel.
-
This arrow appears if the instruction calls an instruction contained
in another function. The tooltip and contextual menu behavior is
the same as the left arrow, only they list the call destinations
for the instruction.
The right hand side of the column shows branching behavior within the function. Here, too, there are two types of arrows that can appear:
-
This arrow shows that the instruction performs one or more local branches
within the function. To see which instructions a branch comes from
or leads to, hover the mouse over the small arrow icon in the right
side of the column and a connecting line appears. The line stays
after you have moved the cursor off the icon, so that you can follow
its path to its connecting locations. Hovering over a branch arrow
produces a tooltip that displays each of the local and cross-function
calls to and from this line. To select any of these call destinations,
right click on the branch item and choose the instruction you want
from the resulting contextual menu.
-
This arrow shows that the instruction is a local branch destination.
Its functionality is identical to the
arrow,
only the tooltip and contextual menu lists the instructions from
which it branches.
It is important to note that a single instruction can be both a branching instruction and a branching destination, and, if this is true, both arrows show up in the right hand side of the branches column.
CPI - CPI stands for cycles per instruction and it measures how many cycles, on average, it took the instruction to execute. If data was collected using hardware, the CPI column only reports a value if the sample rate for an instruction is less than the amount of pass/fails. In cases where insufficient executions were reported to make the CPI meaningful, this column shows a '-'. This number is highlighted in pink if the CPI value is higher than expected. An instruction's expected execution time is observed under ideal conditions. This assumes the instruction opcode is located in L1 cache and any data accessed by the instruction is also fetched directly from the cache.
Interlock - A mark in the interlock column indicates the associated instruction caused an interlock because of resource contention in the processor's pipeline. Hovering over the Interlock bullet produces a tooltip that tells you which register caused the interlock and highlights the references to the register that led to the interlock in the Disassembly column.
Disassembly - The disassembly column shows you the
opcode mnemonic side-by-side with the registers and any immediates
used in the instruction. If the instruction calls another function,
the function name is given here along with its hexadecimal address.
Calls within a function reports their target address along with
a function name and offset. For example, ICON SUBNE pc,r7,r3 indicates
that the subtraction never took place because the zero flag was
not set.
File - Gives the file name and row location of the code that contains this instruction.