質問: Cのソースにアセンブリを入れるメリットは何かありますか
回答: プログラムを作成した本人以外がコンパイルを行う場合があります。ソースコード一式を渡して、そして、コンパイルの仕方(というか、環境の整え方)を教える形になります。 C言語の(C++の)ソースコードに加えてアセンブリ言語のソースコードもある場合、コンパイルとアセンブルの仕方、リンクの仕方、等々について、プログラム作成者と全く同じことを別の人が行えるかどうか心配になる面があります。 この点、 「Cのソースにアセンブリを入れる」 これが出来ると何も心配要らなくなります。実際の話としては Windows 3.1 の時代にですね、かなりアセンブリ言語を使用する場面がありました。それで C++ のコードにインラインアセンブラでコードを仕込んでおくと、ソースコードとして完結していますので、単純にそれを他の人に渡せば良いわけです。Visual C++ 1.0、1.5 でコンパイルするだけの話です。別途アセンブラ( masm )を用意する必要が無いのです。 そしてまた、Windows 95 の時代になりましてから、16 ビットと 32 ビットの両方で使用するコードというものがありましてね。その方がラクだからです。保守の面で。この場合、16 ビット用のアセンブリ言語のコードと、32 ビット用のアセンブリ言語のコードの両方を仕込んでおいて、#ifdef _WIN32 で条件コンパイルできていましたので、非常に楽でした。やはりソースコードをそのまま渡すだけです。masm の準備は要らないわけです。 《参考》 64ビットの時代になりましてからは事情が変わりました。インラインアセンブラは使えなくなりましたので。 でも、Visual Studio だけでアセンブリ言語が使えてしまうので、実際にはあまり困りません。16 ビットのコードと共存させる必要もだいぶ前に無くなりましたし。 現状を考えますと、 「Cのソースにアセンブリを入れるメリット」 これは消えた感があります。64ビット版では出来ないのでメリットとかの考え方をしないのと、また、その必要性もほぼ無くなったのではないかと。