Dans le simulateur MIPS "QTSpim", trois types de fichiers sont acceptés:
.a
.s
.asm
Y a-t-il une différence entre ces types de fichiers et si oui, quelle est la différence?
Dans les systèmes Unix/Linux:
.a
Est l'extension habituelle pour les bibliothèques statiques (alias Archives de plusieurs fichiers .o
, Faites avec ar(1)
). Les bibliothèques dynamiques, alias objets partagés, utilisent .so
..s
Est utilisé pour la sortie du compilateur asm. (gcc -S foo.c
Produit une sortie asm, avec un nom de fichier par défaut de foo.s
).S
Est utilisé pour les fichiers source asm écrits à la main . gcc -c foo.S
L'exécute via le préprocesseur C (vous pouvez donc utiliser #include<>
, #if
, #define
Et les commentaires de style C.) Certains en-têtes C, comme asm/unistd.h
N'a que #define
Et peut donc être inclus dans un .S pour obtenir des définitions comme __NR_write
Les numéros d'appel système, par exemple.Dans x86, il existe deux versions distinctes de la syntaxe asm: AT&T (utilisé par les compilateurs Unix comme gcc) et Intel/NASM (avec quelques dialectes, comme MASM vs NASM lui-même).
.S
Convient à asm dans la syntaxe GNU as
, que vous utilisiez ou non des fonctionnalités du préprocesseur C).
En x86, .asm
Est plus souvent associé au code source NASM/YASM, ou MASM, de syntaxe Intel. En dehors de x86, c'est probablement un bon choix pour les fichiers source asm qui pourraient être assemblés par l'assembleur spécifique à la plate-forme, s'il utilise directives différentes de GNU as
.
l'arborescence source de la glibc utilise .S
Pour tous les fichiers source asm .
Les personnes ayant une expérience gcc peuvent mettre leur asm MIPS dans des fichiers .S
Ou .s
, Tandis que les personnes ayant plus d'expérience NASM/YASM (ou Windows), peuvent opter pour .asm
.
Je recommanderais contre les fichiers .s
, Car il est facile de remplacer accidentellement avec gcc -S foo.c
.