Forum: Compiler & IDEs Was bedeutet _GNU_ASSEMBLER_ ?


von andi (Gast)


Lesenswert?

Hallo Leute,

ich beschäftige mich gerade mit gcc und MSP430 und bin im Netz und in 
diversen Makefiles auf "-D_GNU_ASSEMBLER_" gestoßen.

Z.b.

msp430-gcc -x assembler-with-cpp -D_GNU_ASSEMBLER_ -mmcu=msp430x1121 -c 
file.s -o file.o

Mir ist klar, das es sich hier expliziet um "_GNU_ASSEMBLER_" handelt, 
selbst dazu gibts keine Beschreibung im GCC. Weiss jemand, was diese 
Anweisung bedeutet bzw. wo ich was drüber lesen kann?

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Schau mal in file.s. Da werden wohl Unterschiede gemacht in Befehlen, 
Direktiven, etc. anhängig davon, ab der GNU-Assembler (msp430-as) am 
Werke ist oder nicht.

Johann

von andi (Gast)


Lesenswert?

eben nicht, da taucht nix auf. Das sieht so aus, als würde man das 
"-D_GNU_ASSEMBLER_" provesorisch einfügen, nach dem Motto "sicher ist 
sicher". Ich würde aber erstmal wissen, was der Ausdruck bewirkt.

von LTC3813 (Gast)


Lesenswert?

Du rufst den GCC (msp430-gcc) mit einem Assembler File file.s wesshalb 
du das _GNU_ASSEMBLER brauchst. Alternativ kannst du anstelle des GCC 
direkt den Assembler aufrufen msp430-as ...

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

andi wrote:
> eben nicht, da taucht nix auf. Das sieht so aus, als würde man das
> "-D_GNU_ASSEMBLER_" provesorisch einfügen, nach dem Motto "sicher ist
> sicher". Ich würde aber erstmal wissen, was der Ausdruck bewirkt.

-D findest du in der gcc-Doku.
   http://gcc.gnu.org/onlinedocs/gcc-4.3.3/gcc/Preprocessor-Options.html#Preprocessor-Options

 Es Definiert das Makro GNU_ASSEMBLER, d.h. es kann mit
1
#ifdef _GNU_ASSEMBLER_
2
// resp.
3
#if defined (_GNU_ASSEMBLER_)
abgetestet werden.

foo-gcc delegiert .s-Dateien automatisch an den Assembler (foo-as), die 
Dateien werden allerdings nicht präprzessiert.
   http://gcc.gnu.org/onlinedocs/gcc-4.3.3/gcc/Overall-Options.html#Overall-Options
 Präprozesst werden nur .S Dateien, was aber je nach OS Verwirrung wegen 
Groß/Kleinschreibung gibt.

Mit -x kann man explizit angeben, wie eine Datei zu handhaben ist. Man 
kann damit auch eine C++ Datei .text nennen oder eine Assembler-Datei 
.c++; oder eben eine Assebler-Datei, wo erst der Präprozessor drüber 
soll, nach -x assembler-with-cpp (cpp="C pre processor", nicht "C++" 
;-)) angeben.

Johann

von andi (Gast)


Lesenswert?

danke Johann, jetzt habe ich die Stelle in der gcc-Doku gefunden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.