【发布时间】:2021-08-23 04:01:30
【问题描述】:
在编译过程中,链接器将我们的代码文本内容映射到代码内存部分的 .text 中。我想知道文本内容是什么意思,是指文本中的实际代码还是汇编中的代码?
非常感谢!
【问题讨论】:
标签: compilation linker
在编译过程中,链接器将我们的代码文本内容映射到代码内存部分的 .text 中。我想知道文本内容是什么意思,是指文本中的实际代码还是汇编中的代码?
非常感谢!
【问题讨论】:
标签: compilation linker
是指文本中的实际代码还是汇编中的实际代码?
两者都不是:它是机器指令中的实际代码。
例如:
$ 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
更新:
说它包含转换成机器可读二进制格式的汇编代码对吗?
你可以这么说,但不是很清楚。
也许“包含机器可读的二进制指令,通过编译和汇编程序源代码以及应用重定位产生”。 (最后一部分是链接器所做的,在上面的示例中没有演示。)
【讨论】: