-3

我正在编译一个程序来查找数组中的最大数字。

已编辑

我编译如下:

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 文件具有二进制字符串,因此它会更大。

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

4

1 回答 1

3

如果“二进制字符串”是指 ASCII 编码(即每个 0 或 1 是 ASCII 字符 0x30 和 0x31),那么您可以在文本编辑器中打开文件并查看0001011011111101011101100...,那么没有。只需使用cator od(如果您在 unix 上)或十六进制编辑器查看,它“直接”包含二进制数据。操作码在二进制文件中01001010占用一个字节,而不是 8 个 ASCII 字符,每个字符占用 1 个字节。

于 2013-08-15T20:37:30.887 回答