アセンブリ作業中でエラーになる?!

久しぶりにアセンブラをいじってみたが、半年前とは振る舞いが異なってしまっていて、すぐにエラーが出てきてしまうのにはちょっと驚いた。nasmでのアセンブラはきちんとできて、リンクまでは正常にできるらしいのだが、コンパイル作業がなかなか上手く行かないらしい。

ちょっと考えたら、cl.exeではソースコードから生成されたオブジェクトコードはファイルとして自動的に生成される。すると同じファイルどうしがあったら上書きされてしまうということで、アセンブリコードとC言語コードを同じファイル名にするとどちらかが上書きされてしまって消されてしまうということになってしまう。

> nasmw -f win32 code.asm
これで code.obj ができる

> cl code.c code.obj
これで code.c 由来の code.obj が code.asm 由来の code.obj が
上書きされて消されてしまい、リンクエラーになる。

この問題を解決するには単にファイル名を変えるだけである。そうすると生成されるオブジェクトコードの上書きによるファイル消失問題が発生せずに、リンクエラーが回避される。まあ、ここまでの問題解決でかなり時間がかかってしまった。