mikrocontroller.net

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


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: J. V. (janvi)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@J. V. Es ist ein AVR (siehe Betreff).

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

@Rolf Unbrauchbare Antwort.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin schrieb:

> @Rolf Unbrauchbare Antwort.

Hast du auch geguckt?

http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Overal...
(Insbesondere file.s und file.S hier)

http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Assemb...

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.

Autor: ... ... (docean) Benutzerseite
Datum:

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

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: degufan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@degufan: WinAVR installieren

Autor: degufan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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;

}

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: degufan (Gast)
Datum:

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

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hermann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Bascom wäre eine Möglichkeit.

Quatschkopp...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: degufan (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.