汇编文件扩展名,.s79、.s82、s90、.asm、.s等等……它们之间有什么区别?

12

刚看到一些平台中有汇编扩展,但不确定它们有何不同。谢谢。

3个回答

12

.sNN用于IAR Embedded Workbench版本4及以下版本。其中NN根据处理器而异:

.s12  NXP HCS12
.s18  Samsung SAM8
.s26  Renesas 78K
.s34  Renesas M16C/R8C
.s37  Renesas H8
.s43  TI MSP430
.s45  National CR16C
.s48  Renesas M32C
.s51  8051
.s53  Renesas R32C
.s66  Maxim MAXQ
.s68  NXP Coldfire
.s78  NXP S08
.s79  ARM
.s82  Atmel AVR32
.s85  Renesas V850
.s90  Atmel AVR

来源: https://www.iar.com/support/user-guides/#!?tab=userGuides

.asm 是汇编语言的一种常见扩展名。

.s.S 由GNU工具用于汇编语言。它们之间的区别在于,gcc 前端会对扩展名为.S的文件应用C预处理器,但不会对扩展名为.s的文件应用。

有趣的是:IAR汇编器还接受扩展名为.msa的文件(在研究上述内容时发现)。


不仅是GNU工具,其他Unix也以相同的方式使用.s / .S,这就是为什么GNU工具使用它们的原因。我甚至可以说.S用于手写汇编源代码,.s用于编译器生成的代码。即使您不需要gcc在汇编之前运行文件通过CPP,我建议使用.S来指示给其他人它是手写的。此外,没有像gcc -S foo.c或其他工具(如默认文件名的反汇编器)会破坏它的东西。 - Peter Cordes

0

文件扩展名(如果我理解你的意思正确)只是一种约定,某些机制可以识别该文件。

例如,.ASM被一些人用来表示用某种汇编语言编写的源文件。

在Windows上,.EXE是可执行程序的约定。 .Dll是另一个可执行文件可以执行的代码的扩展名。

就其本身而言,文件扩展名通常没有固有的含义,但它们确实帮助人们提供命名标准,从而帮助其他人了解它们的用途。


我的理解是,对于汇编文件来说,一个扩展名,例如.asm就足够了,就像所有可执行文件的exe/com一样。为什么会有这么多汇编扩展名,我认为肯定有一些原因,但我却不明白。 - super newbie

0
我注意到有时候文件扩展名与代码所编写的微处理器类型有关。例如,如果是针对8051编写的代码,可能会使用.s51作为扩展名。但我真的不认为这是普遍适用的规则。我猜测制造工具的人只是随意选择一个扩展名。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接