当前位置:  开发笔记 > 运维 > 正文

汇编文件:.a .s .asm之间的差异

如何解决《汇编文件:.a.s.asm之间的差异》经验,为你挑选了1个好方法。

在MIPS模拟器"QTSpim"中,接受三种类型的文件:

.a

.s

.asm

这些文件类型之间是否存在差异,如果是,那有什么区别?



1> Peter Cordes..:

在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只有#defineS,因此可以被包含在一个.S得到像定义__NR_write系统调用号,例如.

在x86中,有两个独立版本的asm语法:AT&T(由Unix编译器如gcc使用)和Intel/NASM(有几种方言,如MASM与NASM本身).

.S适用于GNU as语法中的asm ,无论您是否使用任何C预处理器功能.

在x86中,.asm更常与英特尔语法NASM/YASM或MASM源代码相关联.在x86之外,如果它使用与GNU不同的指令as,它可能是特定于平台的汇编程序可以汇编的asm源文件的一个很好的选择.

在glibc的源代码树中使用.S的所有ASM源文件.


具有gcc背景的人可能将他们的MIPS asm放入文件.S.s文件中,而具有更多NASM/YASM经验(或Windows)的人可能会选择.asm.

我建议不要使用.s文件,因为它很容易被覆盖gcc -S foo.c.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有