我正在编译程序以找到数组中的最大数字。
被修改
我编译如下:
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文件没有二进制字符串而是其他东西。如果我错了,请纠正我。
答案 0 :(得分:3)
如果用“二进制字符串”表示ASCII编码(即每个0或1是ASCII字符0x30和0x31),那么您可以在文本编辑器中打开该文件,然后查看0001011011111101011101100...
,然后选择否。只需查看cat
或od
(如果您使用的是unix)或十六进制编辑器,它就会“直接”包含二进制数据。操作码01001010
在二进制文件中占用一个字节,而不是每个占用1个字节的8个ASCII字符。