assembly - 为什么生成的二进制静态 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 机器)?
解决方案
推荐阅读
- mysql - 在 MyISAM 中使用或不使用附加条件可以更快地更新哪个?
- google-colaboratory - 即使我不在 TAB 上,有没有办法让我的 Google Colab 永远运行?
- sql-server - 是否可以在从 Power BI 中的 SQL 数据库直接查询之前过滤数据
- javascript - 池连接上的nodejs mysql错误:连接丢失:服务器关闭了连接
- go - 在自动收报机内使用睡眠
- javascript - 在支持负数的同时,以非破坏性方式按属性对对象进行数字排序
- unity3d - Unity 的 .h 库在哪里?
- scala - scala play-json 中动态 json 的读取器和写入器
- hpc - 使用 condor 时如何从环境变量中获取交互式作业的作业 ID?
- javascript - 在定义函数时访问实例的属性