SDCC selbst mitentwickeln.

Gast #1096649
Lesenswert?

Ich habe mir vorgenommen etwas in die Entwicklung von SDCC 
reinzuschauen.  Als Werkzeug dazu möchte ich C++Builder verwenden. Ich 
hoffe das auch das Debugen von C-Programmen auch dabei möglich wird. 
Mein erster Schritt in diese Richtung ist der Versuch dir 
snapshots/sdd-src zu kompilieren.
Später werde ich mich nur auf zwei für mich interessanten Prozessoren
AVR und PIC konzentrieren.

Meine erste Schritte:

1. http://totato.com/  : EOL Konverter ermöglicht Wandlung von 
Textdateien  Linux <->
 Windows

2. http://particle.teco.edu/software/sdcc/sdcc-archiv.html : SDCC_MinGW 
laden und installieren (Z.B. auf dem Laufwerk C:) .
 Vom  Verzeichnis C:\SDCC_MinGW\msys\1.0\bin  gawk.exe  in
  das Verzeichnis C:\SDCC_MinGW\MinGW\bin kopieren.
 PATH ändern: Start -> Systemsteuerung -> Sytem -> Erweitert ->
 Umgebungsvariablen -> Path -> Bearbeiten.  Am Ende einfügen:
  ;C:\SDCC_MinGW\MinGW\bin


3. 
http://www.koders.com/c/fid4E21E60DED227318812EA3BE4582C011C303524B.aspx
    Files: aslex.c und asm.h laden.
    C++Builder öffnen und dann: Neue->Anwendung->Weitere->C-Datei.
    Weiter dem Projekt   beide Dateien  aspex.c und asm.h hinzufügen.
    Menue Sart->Start  (oder F9) wählen.
    So wurde aslex.obj erstellt.

4. http://sdcc.sourceforge.net/snap.php
    Aktuelle SDCC Source Code (sdcc-src)
  (Z.B. 
http://sdcc.sourceforge.net/snapshots/sdcc-src/sdcc-src-20090101-5312.tar.bz2) 
laden.
    Das gepackte File entpacken in C:\. Dann entsteht Verzeichnis
    C:\sdcc\...

5. Jetzt habe ich das aslex.obj in alle Unterverzeichnisse kopiert:
  C:\sdcc\as\asxxsrc
  C:\sdcc\as\hc08
  C:\sdcc\as\mcs51
C:\sdcc\as\xa51
C:\sdcc\as\z80

6. Jetzt:  Start->Alle Programme_>Zubehör->Eingabeanforderung.
  Dann über bekannte Dos-Befehle (cd \, cd sdcc) in das Verzeichnis 
c:\sdcc.
  Jetzt in der Kommandozeile tippen: make –fMakefile.bcc >meldungen.txt

7. Alle Meldungen wurden in das File meldungen.txt geschrieben.
   Es sind 4 Fehler aufgetreten:

Fehler E2468 ralloc.c 1399: Ein Wert vom Typ void ist nicht zulässig in 
Funktion createStackSpil
Fehler E2468 ralloc.c 1483: Ein Wert vom Typ void ist nicht zulässig in 
Funktion isSpiltOnStack
Fehler E2468 ralloc.c 1512: Ein Wert vom Typ void ist nicht zulässig in 
Funktion spillThis
Fehler E2468 ralloc.c 1562: Ein Wert vom Typ void ist nicht zulässig in 
Funktion selectSpil

Alle Fehler (in C:\sdcc\src\pic\ ralloc.c) haben Verbindung zum Makro:
#define FENTRY2                 1 ? (void)0 : printf


Ein Anruf:
 FENTRY2("called.");
führt zum  Fehler;

“C” gibt es grenzlose Möglichkeiten. Manche führen jedoch zum „Absurdum“
Was bezweckte der Entwickler bei dem Makro?
Vorläufig habe ich  das Makro geändert:
#define FENTRY2                 printf

In der Kommandozeile getippt: make –fMakefile.bcc >meldungen.txt
Jetzt wird einen  Fehler gemeldet:
Fehler E2063 glue.c 142: Unzulässige Initialisierung in Funktion 
pic14_constructAbsMap.
Die  Zeile 142 im File c:\sdcc\src\pic\glue.c:
  memmap *maps[] = { data, sfr, NULL };

Vielleicht weiß schon jemand etwas dazu…
Gast #1096660
Lesenswert?

Hi,

ich würde dir raten, erstmal den Compiler zu benutzen, den das Projekt 
nutzt.

Von der Webseite:
---snip---
What Platforms are Supported?

Linux - x86, Microsoft Windows - x86 and Mac OS X are the primary, so 
called "officially supported" platforms.

SDCC compiles natively on Linux and Mac OS X using using gcc. Windows 
release and snapshot builds are made by cross compiling to mingw32 on a 
Linux host.

Windows 9x/NT/2000/XP users are recommended to use Cygwin 
(http://sources.redhat.com/cygwin/) or may try the unsupported Borland C 
compiler or Microsoft Visual C++ build scripts.
---snip---

Wenn das läuft, kannst du immer noch versuchen, das ganze auf andere 
Compiler
zu portieren.

Boris

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren