在MIPS模拟器"QTSpim“中,接受三种类型的文件:
.a
.s
.asm
这些文件类型之间是否有区别,如果有,有什么区别?
发布于 2015-12-04 22:52:23
在Unix/Linux系统中:
.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中,有两个独立的asm语法版本: AT&T (由gcc这样的Unix编译器使用)和Intel/NASM (有几种方言,比如MASM与NASM本身)。
.S
适用于GNU as
语法中的asm,无论您是否使用任何C预处理功能。
在x86中,.asm
更多地与Intel语法NASM/YASM或MASM源代码相关联。在x86之外,如果使用as
,则可能是一个很好的选择,可以由平台特定的汇编程序组装asm源文件。
具有gcc背景的人可能会将他们的MIPS放入.S
或.s
文件中,而拥有更多NASM/YASM经验(或Windows)的人可能会选择.asm
。
我建议不要使用.s
文件,因为很容易意外地用gcc -S foo.c
覆盖。
https://stackoverflow.com/questions/34098596
复制相似问题