ICC 程序集输出中的所有这些数字是啥意思?
Posted
技术标签:
【中文标题】ICC 程序集输出中的所有这些数字是啥意思?【英文标题】:What do all those numbers in ICC assembly output mean?ICC 程序集输出中的所有这些数字是什么意思? 【发布时间】:2015-03-06 19:06:33 【问题描述】:使用 ICC 编译时,每条指令后面都是 2 个点分隔的数字,前缀为井号。这是什么意思?
For example:
L__routine_start__Z12testFunctionPii_0:
testFunction(int*, int):
push rbp #1.42
mov rbp, rsp #1.42
sub rsp, 32 #1.42
mov QWORD PTR [-24+rbp], rdi #1.42
mov DWORD PTR [-16+rbp], esi #1.42
mov DWORD PTR [-32+rbp], 0 #2.11
mov DWORD PTR [-28+rbp], 0 #3.14
..B1.2: # Preds ..B1.3 ..B1.1
mov eax, DWORD PTR [-28+rbp] #3.19
mov edx, DWORD PTR [-16+rbp] #3.23
cmp eax, edx #3.23
jge ..B1.4 # Prob 50% #3.23
...
【问题讨论】:
点前的数字似乎是源行号。井号当然是注释分隔符,所以汇编器会忽略这些东西,仅供参考。 ...调试器的信息,我猜。 【参考方案1】:这是一个注释,包含源代码的行和列信息,因此您可以按照说明的来源进行操作。根据优化级别和 out-of-order execution
等功能,这些行不能按自然顺序排列。
【讨论】:
以上是关于ICC 程序集输出中的所有这些数字是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章