Salve a tutti, in alcuni sorgenti oltre ai tradizionali file .c e .h ho trovato anche dei file .S contenenti un mix di macro e assembly, cosa sono questi file e soprattutto a cosa servono?
Telegraficamente, tali file sono la "traduzione" in assembly del sorgente C, e normalmente riportano riga per riga le istruzioni di tale sorgente, come commento in testa ai gruppi di istruzioni assembly corrispondenti.
Sovente codesti files risultano direttamente assemblabili, per un eventuale processo manuale in due o tre passi (compilazione, microottimizzazione manuale e assemblaggio, eventuale linking); in altri casi sono creati per puro riferimento. Importante sottolineare come spesso i debugger usino direttamente tale file come sorgente mostrato durante lo step debugging, con possibilità di collocare breakpoint (temporanei e non) a livello di singola istruzione assembly, anziché limitarsi alla corrispondente riga del sorgente originale in C.
Si noti anche che alcuni cross-assembler (particolarmente arcaici o low cost) usano direttamente l'estensione .s per i propri sorgenti, o possono essere forzati a farlo - per evitare sovrapposizioni con le associazioni di default relative ai file .asm della propria piattaforma Intel, in genere.