В симуляторе MIPS "QTSpim" принимаются три типа файлов:
.a
.s
.asm
Есть ли разница между этими файловыми типами, и если да, в чем разница?
Ответ 1
В системах Unix/Linux:
.a - это обычное расширение для статических библиотек (aka Archives of multiple .o files, сделанное с помощью ar(1)). Динамические библиотеки, а также общие объекты, используйте .so.
.s используется для вывода компилятора asm. (gcc -S foo.c производит выход asm с именем файла по умолчанию foo.s)
.s используется для рукописных исходных файлов asm. gcc -c foo.S запускает его через препроцессор C (поэтому вы можете использовать #include<>, #if, #define и комментарии в стиле C). Некоторые заголовки C, такие как asm/unistd.h, имеют только #define s, и поэтому могут быть включены в .S для получения определений типа __NR_write номеров системных вызовов, например.
В x86 существуют две отдельные версии синтаксиса asm: AT & T (используется компиляторами Unix, такими как gcc) и Intel/NASM (с несколькими диалектами, такими как MASM и NASM).
.s подходит для asm в синтаксисе GNU as, независимо от того, используете ли вы какие-либо функции препроцессора C или нет.
В x86 .asm чаще всего ассоциируется с исходным кодом Intel-синтаксиса NASM/YASM или MASM. Вне x86 это, вероятно, хороший выбор для исходных файлов asm, которые могут быть собраны ассемблером для конкретной платформы, если он использует разные директивы, чем GNU as.