使用 ICC 编译时,每条指令后面都是 2 个点分隔的数字,并以哈希符号为前缀。这是什么意思?
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
...
最佳答案
这是一条注释,包含原始源的行和列信息,以便您可以跟踪指令的来源。根据优化级别和诸如乱序执行
之类的功能,行不得按自然顺序排列。
关于assembly - ICC 汇编输出中的所有这些数字意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28905885/