MIPSシミュレータ「QTSpim」では、3種類のファイルが受け入れられます。
.a
.s
.asm
それらのファイルタイプの間に違いはありますか?ある場合、違いは何ですか?
Unix/Linuxシステムの場合:
.a
は、静的ライブラリの通常の拡張機能です(別名ar(1)
で作成された複数の.o
ファイルのアーカイブ)。動的ライブラリ、つまり共有オブジェクトは.so
を使用します。.s
は、asmコンパイラの出力に使用されます。 (gcc -S foo.c
は、デフォルトのファイル名がfoo.s
のasm出力を生成します).S
は、手書きのasmソースファイルに使用されます。 gcc -c foo.S
は、Cプリプロセッサーを介してそれを実行します(そのため、#include<>
、#if
、#define
、およびCスタイルのコメントを使用できます。)asm/unistd.h
などの一部のCヘッダーは、#define
sのみを持っているため、_Sに含めて、__NR_write
システムのような定義を取得できます。たとえば、電話番号。X86には、2つの異なるバージョンのasm構文があります。AT&T(gccのようなUnixコンパイラーによって使用されます)とIntel/NASM(MASMとNASM自体のような2つの方言があります)。
.S
は、Cプリプロセッサ機能を使用するかどうかに関係なく、GNU as
構文のasmに適しています。
X86では、.asm
はIntel-syntax NASM/YASM、またはMASMのソースコードに関連付けられることがよくあります。 x86以外では、プラットフォーム固有のアセンブラーによってアセンブルされる可能性のあるasmソースファイルには、おそらく GNU as
。
glibcソースツリーはすべてのasmソースファイルに対して.S
を使用します 。
Gccの背景を持つ人々はMIPS asmを.S
または.s
ファイルに入れるかもしれませんが、NASM/YASM経験(またはWindows)の経験がある人は.asm
を選ぶかもしれません。
誤って.s
で上書きしてしまう可能性があるため、gcc -S foo.c
ファイルは使用しないことをお勧めします。