Autor Thema: .asm vs .S  (Gelesen 5168 mal)

Martin Erhardt

  • Beiträge: 165
    • Profil anzeigen
Gespeichert
« am: 01. February 2013, 13:46 »
Ich wollte einfach mal nachfragen ob der Linker oder Assembler irgendwas "anders macht" wenn man seine assembler Dateien auf .asm statt .S enden lässt.

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 01. February 2013, 14:16 »
Die Unterschiede liegen in den Konventionen welche Programme für welche Dateiendungen verwendet werden. Die Endung .asm wird häufig für Dateien verwendet, die Code in Intel Syntax enthalten, und .s/.S wird für Dateien, die Code in AT&T Syntax enthalten. Das heißt in der Regel, dass NASM/MASM/TASM für .asm-Dateien und GAS aus den Binutils für .s-Dateien verwendet wird. Der Unterschied zwischen .s und .S ist häufig, dass in .S-Dateien die Präprozessorkonstrukte aus C wie z. B. #include, #define, etc. verwendet werden, und dementsprechend vorverarbeitet werden müssen. Das wird zum Beispiel von den default-Regeln in make so unterstützt, welcher dann den C-Compiler aufruft, der das Preprocessing durchführt und dann den Assembler aufruft. Wer eigene Regeln in die Makefile baut, alternative Assembler oder andere Einstellungen verwendet, muss sich natürlich nicht unbedingt an diese Konventionen halten. Am Ende kommt aber bei allen eine Objektdatei heraus, die vom Linker egal, woher sie kommt, gleich verarbeitet wird.

« Letzte Änderung: 01. February 2013, 14:20 von Jidder »
Dieser Text wird unter jedem Beitrag angezeigt.

 

Einloggen