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
#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).
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?
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
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
Leider weiß ich nicht wie das geht... Danke für die Antworten. mfg
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
> 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
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!
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)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.