www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik assembler datei ind c-code einbinden


Autor: mando (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin noch Programmier Neuling und hänge an folgendem Problem fest:

Ich will in meinen C-Code eine .S assemblerdatei einbinden, leider 
interpretiert der compiler die Datei als C, wenn ich schreibe #inlcude 
"blabla.S". Wie kann ich es einstellen, dass er die Datei als Assembler 
interpretiert?


mfg

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#include "blabla.S" macht man nicht. Man übersetzt die Assembler-Sourcen 
als eigene Module und bindet mit dem Linker die entstehenden 
Objektdateien mit den Objektdateien aus C-Sourcen zusammen.

Beim GCC ist es so, dass .S (S Gross) Dateien zuerst durch den CPP 
(Präprozessor) laufen. Das ist normal und so gewollt. Wenn du keine 
Behandlung durch den CPP willst, ändere die Dateikennung in .s (s 
klein).

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

Bewertung
0 lesenswert
nicht lesenswert
mando schrieb:

> ich bin noch Programmier Neuling
               *******************

> Ich will in meinen C-Code eine .S assemblerdatei einbinden,
                                    ************************


Das beisst sich.
Was willst du machen, von dem du glaubst dafür unbedingt Assembler zu 
benötigen?

Autor: mando (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich will eine Art Nachbau von der Radig USB Relaiskarte machen, dazu 
will der code eine Funktion (CRC 16bit) die in assembler geschrieben ist 
( ich benutze auch die v-usb lib von www.obdev.at) haben, und hierfür 
muss ich eine Datei namens usbdrvavr.S einbinden, weiß aber nicht wie. 
Ich arbeite mit avr studio.

mfg

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

Bewertung
0 lesenswert
nicht lesenswert
Du weisst aber schon, dass du mit dem AVR-gcc eine perfekte crc16 
Funktion mitbekommst?

> muss ich eine Datei namens usbdrvavr.S einbinden, weiß aber nicht wie.

Du fügst die .S Datei ganz einfach zum Projekt dazu, so wie du eine *.c 
auch hinzufügen würdest.

http://www.mikrocontroller.net/articles/FAQ#Ich_ha...

Autor: mando (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leider weiß ich nicht wie das geht...
Danke für die Antworten.

mfg

Autor: Timo S. (kaffeetas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
poste doch mal dein makefile

Grüße
 Timo

Autor: mando (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
die makefile befindet sich im Anhang.

mfg

Autor: Route_66 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kbuchegg schrieb:

>> ich bin noch Programmier Neuling
               *******************

>> Ich will in meinen C-Code eine .S assemblerdatei einbinden,
                                    ************************


>Das beisst sich.

Stimmt! Ich habe als Programmier-Neuling mit Z80 Maschinensprache 
angefangen: 3E 55 21 00 10 C9

Autor: Phantomix Ximotnahp (phantomix) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Stimmt! Ich habe als Programmier-Neuling mit
> Z80 Maschinensprache angefangen: 3E 55 21 00 10 C9

Und ich mit im kopf disassemblieren...
3E 55     LD A, 55
21 00 10  LD HL, 00 10
C9        RET

Naja, Z80 Assembler ist eigentlich ziemlich cool, hab bisher aber nur 
paar Sega ROMs angeguckt und einen memtest (ASM 29 Bytes) geschrieben. 
Wollte mal ne z80 Platine machen, bin dann aber vor den ~ 28 
Busleitungen (16x Adresse, 8x Daten, Steuerleitungen) zurückgeschreckt

Autor: Route_66 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
fast: LD HL, 1000h

Wollte nur sagen, Programmieren findet im Kopf statt, die Umsetzung kann 
dann unterschiedlich erfolgen. Wer nicht wie ein Programmierer denken 
kann ist nicht nur mit Assembler überfordert, sondern auch mit jeder 
"höheren" Programmiersprache!

Autor: Phantomix Ximotnahp (phantomix) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
achja, der z80 war ja auch little endian...
Wo du aber Recht hast, hast du Recht. Es kommt nicht darauf an, WOMIT 
man programmiert, sondern nur wie gut man Probleme zerlegen kann um sie 
dann atomar zu lösen (für fortgeschrittene: zu vereinheitlichen, damit 
man nicht mehrfach das selbe für ähnliche Probleme macht)

Autor: kaffeetas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so zurück zum Thema. Mit obigem Makefile ist es nicht trivial die 
Assembler Datei zu linken.
Es ging ja weder um Maschinencode vom Z80 noch um 
assemblerprogrammierung an sich, sondern "lediglich" darum wie eine 
Assemblerdatei in ein GCC Project eingfügt wird.

Versuch mal ein bestehendes Projekt auf das Beispiel Makefile von AVRGCC 
anzupassen.
Ich arbeite immer damit, man muss dann nur die Assembler Dateien bei 
ASRC eintragen und ansonsten nur den Header einbinden.

Schau Dir hierzu mal das Tutorial an!
Wenn Du lernst ein Makefile auf deine Bedürfnisse anzupassen ist Dir 
mehr geholfen als hier was vorzukauen.

Grüße
 Timo

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.