"a.out"がオブジェクトコード(バイナリ)を表すために使用されるファイル形式であり、アセンブラ出力の短い形式であることはすべて知っているので、バイナリも提供する必要がありますが、cat a.out
なぜこれが起こらないのでしょうか?
私は出力が純粋なバイナリであると期待しています。つまり、1と0のみを意味します。
ベストアンサー1
コンパイルされたコードは(通常はかなり長い)バイトシーケンスです。これらのファイルを使用すると、cat
端末はASCII / UTF8 / UTF16内で同じバイト値を持つ文字を表示しようとします。ほとんどのバイトの組み合わせでは失敗するため、結果はcat a.out
横説説のように見えます。
16進数として使用されるバイナリ値の表示
$ od -x a.out
0000000 facf feed 0007 0100 0003 8000 0002 0000
0000020 000f 0000 04b0 0000 0085 0020 0000 0000
0000040 0019 0000 0048 0000 5f5f 4150 4547 455a
0000060 4f52 0000 0000 0000 0000 0000 0000 0000
0000100 0000 0000 0001 0000 0000 0000 0000 0000
...
またはシステムにいる場合
$ hexdump -C a.out
00000000 cf fa ed fe 07 00 00 01 03 00 00 80 02 00 00 00 |................|
00000010 0f 00 00 00 b0 04 00 00 85 00 20 00 00 00 00 00 |.......... .....|
00000020 19 00 00 00 48 00 00 00 5f 5f 50 41 47 45 5a 45 |....H...__PAGEZE|
00000030 52 4f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |RO..............|
00000040 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 |................|
...
00000f90 00 00 00 41 53 ff 25 65 00 00 00 90 68 00 00 00 |...AS.%e....h...|
00000fa0 00 e9 e6 ff ff ff 48 65 6c 6c 6f 2c 20 57 6f 72 |......Hello, Wor|
00000fb0 6c 64 21 0a 00 00 00 00 01 00 00 00 1c 00 00 00 |ld!.............|
00000fc0 00 00 00 00 1c 00 00 00 00 00 00 00 1c 00 00 00 |................|
...