刚看到一些平台中有汇编扩展,但不确定它们有何不同。谢谢。
.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
的文件(在研究上述内容时发现)。
文件扩展名(如果我理解你的意思正确)只是一种约定,某些机制可以识别该文件。
例如,.ASM被一些人用来表示用某种汇编语言编写的源文件。
在Windows上,.EXE是可执行程序的约定。 .Dll是另一个可执行文件可以执行的代码的扩展名。
就其本身而言,文件扩展名通常没有固有的含义,但它们确实帮助人们提供命名标准,从而帮助其他人了解它们的用途。
.s
/.S
,这就是为什么GNU工具使用它们的原因。我甚至可以说.S
用于手写汇编源代码,.s
用于编译器生成的代码。即使您不需要gcc在汇编之前运行文件通过CPP,我建议使用.S
来指示给其他人它是手写的。此外,没有像gcc -S foo.c
或其他工具(如默认文件名的反汇编器)会破坏它的东西。 - Peter Cordes