这是 D 中的一个非常小的源文件:
void main()
{
}
这里是 objdump 对 .o 文件的反汇编:
Disassembly of section .text._Dmain:
0000000000000000 <_Dmain>:
void main()
0: 55 push %rbp
1: 48 8b ec mov %rsp,%rbp
4: 31 c0 xor %eax,%eax
{
6: 5d pop %rbp
7: c3 retq
编译器是在 x86_64 Linux 机器上运行的 DMD64 D Compiler v2.056。
我想知道为什么只清除 32 位 EAX 而不是整个 64 位 RAX?我假设这是一个返回值,就像在 C 程序中一样,即使在 D 源代码中没有确认也是如此。