Gibt es eine Möglichkeit, GNU as nur .macro-Direktiven in einer .S-Datei zu erweitern und eine andere .S-Datei ohne sie zu erstellen? Ähnlich wie gcc -E mit C-Code.
Beachten Sie, dass es sich um die Assembler-.macro-Direktive handelt, wie im folgenden Code, nicht über C-style #define-Makros, die über cpp erweitert werden können.
%Vor% Der Vorprozessor von GNU as verarbeitet nicht .include
und .macro
, wie alles, was damit beginnt Ein Punkt ist in der Tat eine Assembler-Anweisung; Daher wird die Makroerweiterung zusammen mit der Programmzusammenstellung ausgeführt und kann nicht separat ausgeführt werden, zumindest nicht nach.
Sie haben folgende Optionen:
Die C-Style-Makroverarbeitung wird standardmäßig ausgeführt, wenn Sie die Erweiterung .S
(capital s) für Assembly-Dateien verwenden, die Sie zum Einspeisen von Gas verwenden. Der C-Präprozessor kann auch eigenständig mit dem Befehl cpp
Vielleicht könnten Sie ' cpp
' verwenden, um stattdessen die Makros auszuwerten:
> cpp -P file.S
oder Assemblieren nach Makroerweiterung:
> cpp -P file.S | as -o file.o