「アセンブリファイル ~~~.sの中身が完全にあってるのに動かない。ふざけんじ
ゃねえ」とか思ってる初心者のためにメモを残す。
低レイヤを知りたい人のためのCコンパイラ作成入門
俺は上のサイトでこの症状にかかった。一時間は暴言吐いてた。
tmp.sの中身[
.intel_syntax noprefix
.globl main
main:
mov rax, 123
ret
]
このファイルをターミナルで[gcc -o tmp tmp.s]とすると長文で毎文字ごとにerror
吐く。意味が分からなかった。
しゃあないので、いろいろこねくり回すことにした。
15分時点で別のファイル sakana.sに中身コピペして、[gcc -o sakana sakana.s]
するとなんか動いた。意味わからんわ。暴言吐いた。
45分ぐらいこねくり回してたらsakana.sとtmp.sのファイルの大きさが違うことに気
づいた。片方が倍近い大きさだった。
中身が同じなはずなのに大きさ違うのはなんかもう不条理だろ。
「ファイルの裏に表面上書かれてない情報でもあんのか?」とか若干陰謀論に目覚め
かけながら、こねくり回し続けた。
「sakana.s」を「sakana.txt」に、「tmp.s」を「tmp.txt」にして見比べることにし
た。
なんか右下見ると、「sakana.txt」にはUTF-8と書かれていて、「tmp.txt」には
UTF-16LTと書かれていた。
これが原因だった。倍近い容量にも合点がいった。4ねえええええええええええ
今後は書式にも目を配るようにしようね。表面上の見た目同じなの反則だろ...