assembly - ICC 汇编输出中的所有这些数字意味着什么?

标签 assembly icc

使用 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
...

最佳答案

这是一条注释,包含原始源的行和列信息,以便您可以跟踪指令的来源。根据优化级别和诸如乱序执行之类的功能,行不得按自然顺序排列。

关于assembly - ICC 汇编输出中的所有这些数字意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28905885/

相关文章:

c++ - “lock cmpxchg”如何在汇编中工作?

c++ - 烤饼;汇编器的构造变量包含目录;

c++ - 为什么 icc 会为一个简单的 main 生成奇怪的程序集?

c++ - 为什么 gcc 和 icc 为 C++ 函数生成具有相同标签名称的 asm?

assembly - Neoverse N1 中 lsl >4 的 add 管道

c++ - 将文件链接到内核时出错

c++ - 让gcc在c操作之间调用特定函数

c++ - 编译过度对齐的动态分配变量时出现 icpc 错误

c++ - ICPC: "identifier "_Node_allocator"未定义"使用 std::map 和 icpc 编译 C++ 文件时

icc - 如何使用带有 intel c++ 编译器的编译指示禁用警告