.s文件的SIze大于.o文件linux

时间:2013-08-15 20:26:56

标签: c linux gcc object-files

我正在编译程序以找到数组中的最大数字。

被修改

我编译如下:

gcc --save-temps max.c -o max

然后继续

ls -l max*
输出是:

-rwxrwxr-x 1 tapan tapan  7296 Aug 16 01:45 max
-rw-rw-r-- 1 tapan tapan   233 Aug 16 01:45 max.c
-rw-rw-r-- 1 tapan tapan 17894 Aug 16 01:45 max.i
-rw-rw-r-- 1 tapan tapan  1308 Aug 16 01:45 max.o
-rw-rw-r-- 1 tapan tapan  1507 Aug 16 01:45 max.s

我的问题是:为什么.s程序集文件的大小大于.o二进制文件?

我认为.o文件有二进制字符串所以它会更大。

由于链接库,最终文件max的大小也与预期的一样大。但是.o文件的大小让我觉得.o文件没有二进制字符串而是其他东西。如果我错了,请纠正我。

1 个答案:

答案 0 :(得分:3)

如果用“二进制字符串”表示ASCII编码(即每个0或1是ASCII字符0x30和0x31),那么您可以在文本编辑器中打开该文件,然后查看0001011011111101011101100...,然后选择否。只需查看catod(如果您使用的是unix)或十六进制编辑器,它就会“直接”包含二进制数据。操作码01001010在二进制文件中占用一个字节,而不是每个占用1个字节的8个ASCII字符。