在MIPS模拟器“QTSpim”中,接受三种类型的文件:
.a
.s
.asm
.a
是静态库的通常扩展名(多个.o
文件的归档,使用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中包含这些文件,以获取类似于__NR_write
系统调用号的定义,例如。在x86中,有两个独立的汇编语法版本:AT&T(由Unix编译器如gcc使用)和Intel/NASM(带有一些方言,如MASM vs. NASM自身)。
.S
适用于GNU as
语法的asm,无论是否使用任何C预处理器功能。
在x86中,.asm
更常与Intel语法NASM/YASM或MASM源代码相关联。在x86之外,如果它使用不同于GNU as
的指令,则这可能是一个良好的选择来汇编源文件。
具有gcc背景的人可能会将其MIPS asm放入.S
或.s
文件中,而具有更多NASM/YASM经验(或Windows)的人可能会选择.asm
。
我建议不要使用.s
文件,因为很容易通过gcc -S foo.c
意外覆盖它。
ranlib
生成的库/归档文件的名称。从我25年前的记忆中得知,它实际上是指“归档文件”。 - David Hoelzer