Vad är filformatet S?
En .s-fil är en källkodsfil i klartext för assemblerspråk som används i Unix, Linux, macOS och inbäddade verktygskedjor. Den innehåller läsbara CPU-instruktioner - mnemonics, operander, assemblerdirektiv och etiketter - som en assembler översätter direkt till objektkod.
Filsuffixet .s är en konvention i Unix C-kompilatorer som går tillbaka till 1970-talet. Om man kör gcc -S på en C-källkodsfil avbryts kompileringen efter kodgenereringen och en .s-fil skrivs, vilket låter dig inspektera eller finjustera kompilatorns utdata innan assemblering. Den filen skickas sedan till as (GNU-assemblern) för att skapa en .o-objektfil redo för länkning.
En subtil men viktig konvention skiljer gement .s från versalt .S: .s-filer går direkt till assemblern, medan .S-filer först passerar genom C-preprocessorn, vilket tillåter direktiv som #include, #define och #ifdef - en distinktion som kärn- och firmware-kodbaser förlitar sig tungt på.
Syntaxen varierar beroende på verktygskedja. GNU as använder som standard AT&T-syntax på x86; Windows-assemblers som MASM och Intel-baserade NASM använder Intel-syntax. Samma .s-filstruktur används oavsett mål-ISA - x86-64, ARM/AArch64, RISC-V, MIPS med flera - så själva filändelsen förmedlar ingen information om arkitekturen.
.s-filer har inga magic bytes och har MIME-typen text/x-asm. Alla textredigerare kan öppna dem; redigerare med syntaxmarkeringsstöd för assembler som VS Code, Vim och Emacs föredras för större filer. Den nära besläktade filändelsen .asm tjänar samma syfte i många icke-Unix-verktygskedjor.
Säkerhet & trygghet
RISK: LOWEn .s-fil är klartext och gör ingenting i sig själv - den kan inte köras förrän du medvetet assemblerar och exekverar den. Risken är densamma som för all källkod du väljer att bygga: assembler kan innehålla instruktioner som gör vad som helst som CPU:n tillåter, så assemblera och kör endast .s-filer från källor du litar på, och läs igenom okänd assembler innan du bygger den. Att öppna en .s i en textredigerare för att titta på den är helt säkert.
Formatdetaljer
i ett nötskal- S-programmeringsspråk källkod - Källkod för det statistiska språket S (föregångare till R); sällsynt idag, men förekommer fortfarande i äldre statistikkod.
- Scheme-källkod (ovanligt) - Ibland en källkodsfil för Scheme/Lisp, även om .scm är den vanliga filändelsen.
Program som öppnar S-filer
Tekniska detaljer
djup specifikation| Filtyp | Källkod för assemblerspråk i klartext |
| MIME-typ | text/x-asm (även accepterat: text/x-assembly, text/plain) |
| Kodning | ASCII / UTF-8 |
| Filsignatur (magic bytes) | Ingen - klartext utan fast header; börjar vanligtvis med en kommentar (#, ;), en etikett (slutar med :) eller ett direktiv som .text eller .global |
| Radstruktur | Valfri etikett, assemblerdirektiv eller CPU-mnemonic med operander, inline-kommentar - en logisk operation per rad |
| Skiftlägeskonvention | Gement .s assembleras direkt; versalt .S körs först genom C-preprocessorn (stöder #include, #define, #ifdef) |
| Kompilatorgenerering | gcc -S eller clang -S skapar en .s-fil från C/C++-källkod, och avbryter byggprocessen efter kodgenerering men före assemblering |
| Stödda ISA:er | x86-64, ARM/AArch64, RISC-V, MIPS, POWER/PowerPC, AVR med flera - filändelsen är ISA-neutral |
| Syntaxvarianter | AT&T-syntax (standard för GNU as på x86), Intel-syntax (MASM, NASM), ARM Unified Assembly Language (UAL) |
| Vanliga assemblerdirektiv | .text, .data, .bss, .global, .section, .align, .byte, .word, .long, .string |
| Verktygskedjor | GNU Binutils (as), LLVM/Clang integrerad assembler, Microsoft MASM, NASM, yasm, armasm |
| Roll i byggprocessen | Mellanliggande textsteg mellan kompilatorns kodgenerering och skapandet av objektfil; assembleras av as eller motsvarande för att producera en .o-fil |
| Stöd för preprocessering | .S-varianten (versalt) skickas genom cpp före assemblering, vilket möjliggör villkorlig kompilering och makroexpansion inuti assembler-källkoden |
| Typisk filstorlek | 1 KB - 500 KB |
| Associerade miljöer | Linux, Unix, macOS, Windows, inbäddade system (mikrokontroller, operativsystemskärnor, bootloaders) |
| Släppt | 1970s (Unix C compiler toolchain convention) |
| Senaste version | N/A (no versioned spec; depends on target CPU ISA and assembler) |
| Öppen standard | Ja · royaltyfri |
| Specifikation | sourceware.org |
S-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om S-filer.