Was ist das S-Dateiformat?
Eine .s-Datei ist eine reine Textdatei mit Assembly-Quellcode, die in Unix, Linux, macOS und eingebetteten Toolchains verwendet wird. Sie enthält für Menschen lesbare CPU-Befehle - Mnemonics, Operanden, Assembler-Direktiven und Labels -, die ein Assembler direkt in Objektcode übersetzt.
Die Dateiendung .s ist eine Konvention der Unix-C-Compiler-Pipeline, die bis in die 1970er Jahre zurückreicht. Das Ausführen von gcc -S auf einer C-Quelldatei stoppt die Kompilierung nach der Codegenerierung und schreibt eine .s-Datei, sodass Sie die Ausgabe des Compilers prüfen oder manuell optimieren können, bevor sie assembliert wird. Diese Datei wird dann an as (den GNU-Assembler) übergeben, um eine .o-Objektdatei für das Linking zu erstellen.
Eine subtile, aber wichtige Konvention unterscheidet das kleingeschriebene .s vom großgeschriebenen .S: .s-Dateien gehen direkt an den Assembler, während .S-Dateien zuerst den C-Präprozessor durchlaufen, was Direktiven wie #include, #define und #ifdef ermöglicht - eine Unterscheidung, auf die Kernel- und Firmware-Codebasen stark angewiesen sind.
Die Syntax variiert je nach Toolchain. GNU as verwendet standardmäßig die AT&T-Syntax auf x86; Windows-Assembler wie MASM und NASM im Intel-Stil nutzen die Intel-Syntax. Das Layout der .s-Datei ist unabhängig von der Ziel-ISA - x86-64, ARM/AArch64, RISC-V, MIPS und andere - gleich, weshalb die Endung selbst keine Informationen über die Architektur vermittelt.
.s-Dateien enthalten keine Magic Bytes und haben den MIME-Typ text/x-asm. Jeder Texteditor kann sie öffnen; Editoren mit Assembly-Syntax-Highlighting wie VS Code, Vim und Emacs werden für größere Dateien bevorzugt. Die eng verwandte Endung .asm dient in vielen Nicht-Unix-Toolchains demselben Zweck.
Sicherheit
RISIKO: LOWEine .s-Datei ist reiner Text und tut von sich aus nichts - sie kann nicht ausgeführt werden, bis Sie sie bewusst assemblieren und starten. Das Risiko ist dasselbe wie bei jedem Quellcode, den Sie bauen: Assembly kann Befehle enthalten, die alles tun, was die CPU erlaubt. Assemblieren und führen Sie daher nur .s-Dateien aus Quellen aus, denen Sie vertrauen, und lesen Sie unbekannten Code vor dem Bauen. Das Öffnen einer .s-Datei in einem Texteditor zur Ansicht ist völlig sicher.
Formatdetails
kurz gefasst- S-Programmiersprache Quellcode - Quellcode für die Statistiksprache S (Vorgänger von R); heute selten, noch in altem Statistik-Code zu finden.
- Scheme-Quellcode (unüblich) - Gelegentlich eine Scheme/Lisp-Quelldatei, obwohl .scm die übliche Endung ist.
Programme zum Öffnen von S-Dateien
Technische Details
technische Spezifikation| Dateityp | Assembly-Quellcode in Klartext |
| MIME-Typ | text/x-asm (auch akzeptiert: text/x-assembly, text/plain) |
| Kodierung | ASCII / UTF-8 |
| Dateisignatur (Magic Bytes) | Keine - Klartext ohne festen Header; beginnt typischerweise mit einem Kommentar (#, ;), einem Label (endet auf :) oder einer Direktive wie .text oder .global |
| Zeilenstruktur | Optionales Label, Assembler-Direktive oder CPU-Mnemonic mit Operanden, Inline-Kommentar - eine logische Operation pro Zeile |
| Groß-/Kleinschreibung | Kleingeschriebenes .s wird direkt assembliert; großgeschriebenes .S wird zuerst durch den C-Präprozessor geleitet (unterstützt #include, #define, #ifdef) |
| Compiler-Ausgabe | gcc -S oder clang -S gibt eine .s-Datei aus C/C++-Quellcode aus und stoppt die Build-Pipeline nach der Codegenerierung und vor der Assemblierung |
| Unterstützte ISAs | x86-64, ARM/AArch64, RISC-V, MIPS, POWER/PowerPC, AVR und andere - die Endung ist ISA-neutral |
| Syntax-Varianten | AT&T-Syntax (Standard bei GNU as auf x86), Intel-Syntax (MASM, NASM), ARM Unified Assembly Language (UAL) |
| Gängige Assembler-Direktiven | .text, .data, .bss, .global, .section, .align, .byte, .word, .long, .string |
| Toolchains | GNU Binutils (as), LLVM/Clang integrierter Assembler, Microsoft MASM, NASM, yasm, armasm |
| Rolle in der Build-Pipeline | Zwischenstadium im Textformat zwischen der Codegenerierung des Compilers und der Erstellung der Objektdatei; assembliert durch as oder Äquivalente zur Erzeugung einer .o-Datei |
| Präprozessor-Unterstützung | Die .S-Variante (großgeschrieben) wird vor der Assemblierung durch cpp geleitet, was bedingte Kompilierung und Makro-Expansion im Quellcode ermöglicht |
| Typische Dateigröße | 1 KB - 500 KB |
| Zugehörige Umgebungen | Linux, Unix, macOS, Windows, Embedded/Bare-Metal (Mikrocontroller, Kernel-Startup-Code, Bootloader) |
| Veröffentlicht | 1970s (Unix C compiler toolchain convention) |
| Neueste Version | N/A (no versioned spec; depends on target CPU ISA and assembler) |
| Offener Standard | Ja · lizenzgebührenfrei |
| Spezifikation | sourceware.org |
S-Konvertierungen
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu S-Dateien.