Ich habe .S
Dateien in verschiedenen Projekten gesehen, beispielsweise im Linux-Kernel, im FreeBSD-Kernel oder in einigen anderen Projekten. Was machen diese Dateien und warum können wir .c
stattdessen keine Dateien haben ?
75
.S
Dateien sind Quellcodedateien, die in Assembly geschrieben wurden. Die Montage ist eine extrem einfache Form der Programmierung. Die Dateien enthalten Montageanweisungen für den Prozessor in sequentieller Reihenfolge und werden normalerweise basierend auf einer ausgewählten Architektur kompiliert. Beispiele für solche Dateien finden sich häufig im Linux-Kernel für bestimmte Architekturen, z. B. x86, sparc, ARM usw.
Weitere Informationen zur Assemblersprache:
.asm
?.s
.Das
.S
ist Assemblersprache. Normalerweise ist das soEtwas, das niemand erwähnt hat, ist warum Kapital S?
.S
(Großbuchstabe S) steht für Assemblycode , der noch einen Vorprozessor durchlaufen muss. Das heißt, es kann#include
und#define
unter anderem Makros haben. Es kann auch als Erweiterung angesehen werden.sx
.s
(unteres s) ist reiner Assembler-Code, der zu einem Objekt kompiliert werden kann.Warum nicht benutzen
.c
? Nun, als Betriebssystem ist es unmöglich, alles in C zu schreiben . Eigentlich wäre das ideal, und die C-Sprache selbst verfügt über einen Hintergrundverlauf, der zum Erstellen von Betriebssystemen und zum Verringern des zum Codieren erforderlichen Assemblys erforderlich ist. Viele Operationen auf niedriger Ebene sind jedoch zu abhängig von der Maschine.Hier ist ein schönes Beispiel für einen Speicher kopiert Routine für das Linux - Boot , dass Anwendungen
#include <linux/linkage.h>
quelle
* .S-Dateien sind Assembly-Dateien.
Dies liegt daran, dass maschinenabhängige Dinge / frühe Initialisierung wie das Einrichten von Cache und Speicher nur Anweisungen auf Baugruppenebene wie E / A-Anweisungen ausführen können.
Der Kernel verfügt nicht über den Luxus einer libc-Bibliothek, um die anfängliche Einrichtung verschiedener Ressourcen zu übernehmen. Und Hardwareressourcen rufen zu jedem Zeitpunkt auch während der Anwendungsausführung Systemaufrufe auf, die in Assemblersprache codierte E / A-Routinen aufrufen.
quelle
Die
.S
Erweiterung gibt eine Assemblersprachendatei an .Weil der rohe Quellcode - sei es vom Menschen eingegeben oder vom Compiler generiert - Assembly ist, nicht C.
quelle
Sie sind Assembler- Codedateien:
Daher sind diese Dateien nicht mit C-Code-Dateien identisch.
Beachten Sie, dass C-Dateien mit Montageanweisungen eingefügt werden können .
quelle
.S-Dateien sind Assemblersprachendateien. Sie sind eine Form von Maschinencode. Es ist auf einem niedrigen Programmierniveau. Der gesamte maschinenabhängige Code wird in Assemblersprache geschrieben. Die Assemblersprache ist für verschiedene Prozessoren unterschiedlich.
quelle
.S-Dateien sind Code, der in Assemblersprache geschrieben ist, dh auf einem niedrigen Programmierniveau. Im Linux-Kernel-Quellcode sind .S im Allgemeinen die Startdateien, die der Kernel ausführt, wenn der Linux-Kernel mit dem Booten beginnt (z. B. :- head.S). Wir schreiben dies in .S und nicht in .C, da wir derzeit nicht bereit sind, die .C-kompilierte .O-Datei auszuführen. Wir müssen mit architekturabhängigen Registern arbeiten und den Kernel starten.
quelle