Forum: Compiler & IDEs [AVR] GCC: Assembler & Linker


von Martin (Gast)


Lesenswert?

Ist es möglich mit dem GCC einen Assemblertext (ohne C-Quellen) zu 
übersetzen und zu linken? Wenn ja, wo finde ich dazu Informationen?

von Rolf Magnus (Gast)


Lesenswert?

> Ist es möglich mit dem GCC einen Assemblertext (ohne C-Quellen) zu
> übersetzen und zu linken?

Ja.

> Wenn ja, wo finde ich dazu Informationen?

Im Handbuch von GCC.

von Sven P. (Gast)


Lesenswert?


von J. V. (janvi)


Lesenswert?

Falls es kein AVR ist:

für der Assembler in
http://sourceware.org/binutils/docs/as/index.html

und für den Linker in

http://sourceware.org/binutils/docs/ld/index.html


Der Trick ist, nicht dem Hinweis von unserem freundlichen Rolf Magnus zu 
folgen und eben nicht bei GCC sondern bei binutils zu suchen. Darinnen 
sind auch noch andere nützliche Dinge hierzu wie etwa das Make zu 
finden.

von Martin (Gast)


Lesenswert?

@J. V. Es ist ein AVR (siehe Betreff).

@Sven Ohne C-Quellen (siehe meine Frage).

@Rolf Unbrauchbare Antwort.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Martin schrieb:

> @Rolf Unbrauchbare Antwort.

Hast du auch geguckt?

http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Overall-Options.html#Overall-Options
(Insbesondere file.s und file.S hier)

http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Assembler-Options.html#Assembler-Options

Es ist nämlich in der Tat gar keine so schlechte Idee, den Assembler
vom Compiler aus zu rufen.  Man hat dann ein einheitliches Aufruf-
Interface sowohl für Assembler- als auch für C-Quellen, und kann auch
die Interruptvektortabelle des C-Frameworks gleich mit nutzen.

von ... .. (docean) Benutzerseite


Lesenswert?

http://www.mikrocontroller.net/articles/Beispiel_Makefile
1
# List Assembler source files here.
2
#     Make them always end in a capital .S.  Files ending in a lowercase .s
3
#     will not be considered source files but generated files (assembler
4
#     output from the compiler), and will be deleted upon "make clean"!
5
#     Even though the DOS/Win* filesystem matches both .s and .S the same,
6
#     it will preserve the spelling of the filenames, and gcc itself does
7
#     care about how the name is spelled on its command-line.
8
ASRC =

von P. S. (Gast)


Lesenswert?

Martin schrieb:
> Ist es möglich mit dem GCC einen Assemblertext (ohne C-Quellen) zu
> übersetzen und zu linken? Wenn ja, wo finde ich dazu Informationen?

Macht aber keinen Spass. Das ist kein sehr komfortabler Assembler...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Peter Stegemann schrieb:

> Das ist kein sehr komfortabler Assembler...

Ach?  Was genau fehlt dir eigentlich?

Komfortabler als der billige Atmel-Absolut-Assembler ist er allemal...

von P. S. (Gast)


Lesenswert?

Jörg Wunsch schrieb:
> Peter Stegemann schrieb:
>
>> Das ist kein sehr komfortabler Assembler...
> Ach?  Was genau fehlt dir eigentlich?

Ich habe den einmal ausprobiert und keine Liste gefuehrt, sorry. Es hat 
mich auch nicht weiter gekuemmert. Ich ging davon aus, dass dessen 
Hauptjob die Uebersetzung von gcc-Output ist, nicht von 
handgeschriebenem Code.

> Komfortabler als der billige Atmel-Absolut-Assembler ist er allemal...

Naja, es gibt fast immer ein Tool, das noch unkomfortabler ist...

von degufan (Gast)


Lesenswert?

hey, ich habe dieselbe frage nur andersherum:

ich hab das AVR studio 4, kann damit auch wunderbar assembler 
programmieren, c lässt sich zwar zu beginn einstellen, dann aber nicht 
kompilieren.. was tun?
danke!

von Gast (Gast)


Lesenswert?

@degufan: WinAVR installieren

von degufan (Gast)


Lesenswert?

danke!
ja, runterladen allein genügt nicht. hatte es mal installiert und auf 
hinweis meiner prof neuistallieren wollen, das dann aber vergessen. habs 
jetzt getan, da ändert sich aber nichts.

fehlermeldung:
make: Interrupt/Exception caught (code = 0xc00000fd, addr = 0x4217b3)
Build failed with 1 errors and 0 warnings...

ist also nicht sonderlich aufschlussreich, sagt ja nicht, wo der fehler 
liegt(kann auch nicht wie bei VisualStudio drauf doppelklicken). dabei 
frage ich mich, was daran falsch sein soll:

#include  <stdint.h>

main()
{

uint8_t c;

}

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

degufan schrieb:

> ist also nicht sonderlich aufschlussreich, sagt ja nicht, wo der fehler
> liegt

Im Binary selbst.  Es stürzt schlicht und ergreifend ab.

von Oliver (Gast)


Lesenswert?

>frage ich mich, was daran falsch sein soll:

An deinem Code? Ist völlig egal.

Der Fehler liegt ganz woanders, WinAVR will nicht, make stürzt ab. Was 
vermutlich daran liegt, daß da mehrere verschiedene Versionen von make 
auf deinem Computer existieren, die Pfade nicht stimmen, und jetzt die 
falsche aufgerufen wird.

Oliver

von degufan (Gast)


Lesenswert?

was ist mit dem make? hab ich noch nie gehört. wie kann ich das ändern?
danke =)

von Oliver (Gast)


Lesenswert?

Bascom wäre eine Möglichkeit.

Ansonsten mach mal ein Kommandofenster auf, wechsel in den Ordner 
"default" deines Projektes, und tipp da mal "make". Wenn das wieder 
abstürzt, tipp "which make.exe", und berichte, was dann da steht.

Oliver

von Hermann (Gast)


Lesenswert?

> Bascom wäre eine Möglichkeit.

Quatschkopp...

von Karl H. (kbuchegg)


Lesenswert?

Alles deinstallieren.

Händisch das Dateisystem aufräumen, falls bei der Deinstallation noch 
irgendetwas übrig geblieben sein sollte.

Händisch die Registry aufräumen

Alles noch einmal neu installieren.

Geht oft schneller als da stundenlang nach dem einen fehlerhaftem 
Eintrag zu fahnden, der bei der vorhergehenden Deinstallation übrig 
blieb.

von degufan (Gast)


Lesenswert?

hmm okay, daran hab ich auch schon gedacht.. werd ich später dann mal 
tun. danke.

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.