【问题标题】:What is the format of the content in the .text generated by the linker?链接器生成的 .text 中内容的格式是什么?
【发布时间】:2021-08-23 04:01:30
【问题描述】:

在编译过程中,链接器将我们的代码文本内容映射到代码内存部分的 .text 中。我想知道文本内容是什么意思,是指文本中的实际代码还是汇编中的代码?

非常感谢!

【问题讨论】:

    标签: compilation linker


    【解决方案1】:

    是指文本中的实际代码还是汇编中的实际代码?

    两者都不是:它是机器指令中的实际代码。

    例如:

    $ cat > t.c
    int foo() { return 42; }
    $ gcc -c t.c
    $ objdump -d t.o
    
    t.o:     file format elf64-x86-64
    
    
    Disassembly of section .text:
    
    0000000000000000 <foo>:
       0:   55                      push   %rbp
       1:   48 89 e5                mov    %rsp,%rbp
       4:   b8 2a 00 00 00          mov    $0x2a,%eax
       9:   5d                      pop    %rbp
       a:   c3                      retq   
    

    .text部分的内容如下11个字节:

    554889e5b82a0000005dc3
    

    更新:

    说它包含转换成机器可读二进制格式的汇编代码对吗?

    你可以这么说,但不是很清楚。

    也许“包含机器可读的二进制指令,通过编译和汇编程序源代码以及应用重定位产生”。 (最后一部分是链接器所做的,在上面的示例中没有演示。)

    【讨论】:

    • 您好,感谢您提供的信息。那么说它包含转换为机器可读二进制格式的汇编代码是否正确?
    • 您好,感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 2011-10-07
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    相关资源
    最近更新 更多