gpt4 book ai didi

file - 汇编文件 : Difference between . a .s .asm

转载 作者:行者123 更新时间:2023-12-03 13:29:26 28 4
gpt4 key购买 nike

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

  • .a
  • .s
  • .asm

  • 这些文件类型之间是否有区别,如果有,有什么区别?

    最佳答案

    在 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,因此可以包含在 .S 中以获得类似 __NR_write 的定义例如,系统调用号。

  • 在 x86 中,有两个独立的 asm 语法版本:AT&T(由 Unix 编译器使用,如 gcc)和 Intel/NASM(有几种方言,如 MASM 与 NASM 本身)。
    .S适用于 GNU 中的 asm as语法,无论您是否使用任何 C 预处理器功能。

    在 x86 中, .asm更常与英特尔语法 NASM/YASM 或 MASM 源代码相关联。在 x86 之外,如果它使用 different directives than GNU as ,对于可以由特定平台的汇编器汇编的 asm 源文件,它可能是一个不错的选择。 .

    glibc source tree uses .S for all asm source files .

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

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

    关于file - 汇编文件 : Difference between . a .s .asm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34098596/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com