【发布时间】:2020-05-04 00:26:31
【问题描述】:
我有一个简单的 C 语言函数,在单独的文件 string.c 中:
void var_init(){
char *hello = "Hello";
}
编译:
gcc -ffreestanding -c string.c -o string.o
然后我使用命令
objdump -d string.o
查看反汇编列表。我得到的是:
string.o: file format elf64-x86-64
Disassembly of section .text:
0000000000000000 <var_init>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # b <var_init+0xb>
b: 48 89 45 f8 mov %rax,-0x8(%rbp)
f: 90 nop
10: 5d pop %rbp
11: c3 retq
我无法理解这个列表。 “从头开始编写操作系统”一书讲述了旧的反汇编并稍微揭示了其中的奥秘,但它们的列表完全不同,我什至没有看到作者所说的数据被解释为我的代码。
【问题讨论】:
标签: c x86-64 disassembly