首页 > 解决方案 > 为什么生成的二进制静态 ELF 可执行文件对于直接使用系统调用的 asm Hello World 来说如此之大?

问题描述

这是 AT&T 汇编中的 hello world 程序:

.global _start

.text
_start:
        movl  $4, %eax
        movl  $1, %ebx
        movl  $msg, %ecx
        movl  $len, %edx
        int   $0x80

        movl  $1, %eax
        movl  $0, %ebx
        int   $0x80
.data
msg:
        .ascii  "Hello, world!\n"
        len =   . - msg

在我组装并用这些命令链接它之后:as hello.S -o hello.o && ld hello.o -o hello,我看到hello二进制文件几乎有 9 kB 大!当我查看它的 hexadump 时,它几乎只有 0。为什么会这样(我有一台 x86_64 机器)?

标签: assemblylinkerexecutableldelf

解决方案


推荐阅读