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


von mando (Gast)


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

von Stefan B. (stefan) Benutzerseite


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).

von Karl H. (kbuchegg)


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?

von mando (Gast)


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

von Karl H. (kbuchegg)


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_hab_da_mehrere_.2A.c_und_.2A.h_Dateien._Was_mache_ich_damit.3F

von mando (Gast)


Lesenswert?

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

mfg

von Timo S. (kaffeetas)


Lesenswert?

poste doch mal dein makefile

Grüße
 Timo

von mando (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
die makefile befindet sich im Anhang.

mfg

von Route_66 (Gast)


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

von Phantomix X. (phantomix)


Lesenswert?

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

Und ich mit im kopf disassemblieren...
1
3E 55     LD A, 55
2
21 00 10  LD HL, 00 10
3
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

von Route_66 (Gast)


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!

von Phantomix X. (phantomix)


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)

von kaffeetas (Gast)


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

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.