Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
matze-ed7
- Beiträge: 33
- Registriert: 01.06.2006 09:02:53
Beitrag
von matze-ed7 » 22.06.2006 08:49:32
Hallo,
ich versuche zZ dem GCC seine Zwischensprache RTL(Register transfer language) zu
generieren. Da er ja unter anderem auf die Zwischenprache RTL abbildet muss es doch möglich sein die erzeugten RTL files zu generieren bzw sich anzeigen zu lassen
Mit dem Assemblercode ist die ja auch möglich.
Ein alternative ist auch der SSA-TREE aber auch hier kann ich den nicht generieren
Die Option
... hatte mich auchnet weiter gebracht
am besten ist natürlich die nichtoptimierte version der Zwischensprache!
Danke Matze
Edit by Snoopy:
Code-Tags für die Leserlichkeit eingefügt.
-
gms
- Beiträge: 7798
- Registriert: 26.11.2004 20:08:38
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von gms » 22.06.2006 10:21:04
dafür ist die Option -dr ( -fdump-rtl-expand ) verantwortlich:
Code: Alles auswählen
gms@gms4:~# g++ -o x x.cpp -dr
gms@gms4:~# cat x.cpp.00.expand
;; Function int main() (main)
;; Generating RTL for tree basic block 0
....
Gruß
gms
-
matze-ed7
- Beiträge: 33
- Registriert: 01.06.2006 09:02:53
Beitrag
von matze-ed7 » 22.06.2006 12:03:02
der befehl
der funktioniert bei mir
aber der rest net?
wie muss ich denn die Befehle eingeben
ich hatte
und
und
Code: Alles auswählen
gcc -o main main.cpp -fdump-rtl-expand
g++ -o main main.cpp -fdump-rtl-expand
getestet...
Edit by Snoopy:
Code-Tags für die Leserlichkeit eingefügt.
-
gms
- Beiträge: 7798
- Registriert: 26.11.2004 20:08:38
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von gms » 22.06.2006 12:15:04
bei mir funkts:
Code: Alles auswählen
gms@gms4:~# ls -l *.expand
ls: *.expand: Datei oder Verzeichnis nicht gefunden
gms@gms4:~# g++ -o x x.cpp -fdump-rtl-expand
gms@gms4:~# ls -l *.expand
-rw-r--r-- 1 gms gms 4015 2006-06-22 12:11 x.cpp.00.expand
-
matze-ed7
- Beiträge: 33
- Registriert: 01.06.2006 09:02:53
Beitrag
von matze-ed7 » 22.06.2006 12:17:48
was ist denn deine gcc version also
Edit by Snoopy:
Code-Tags für die Leserlichkeit eingefügt.
-
gms
- Beiträge: 7798
- Registriert: 26.11.2004 20:08:38
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von gms » 22.06.2006 13:00:41
habe 4.0 und 4.1 installiert und es funktioniert bei beiden
-
matze-ed7
- Beiträge: 33
- Registriert: 01.06.2006 09:02:53
Beitrag
von matze-ed7 » 22.06.2006 13:10:36
ich habe folgende version
Code: Alles auswählen
linux:~/gcc_rtl_test # gcc -v
Reading specs from /usr/lib/gcc-lib/i586-suse-linux/3.3.3/specs
Configured with: ../configure --enable-threads=posix --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --enable-languages=c,c++,f77,objc,java,ada --disable-checking --libdir=/usr/lib --enable-libgcj --with-gxx-include-dir=/usr/include/g++ --with-slibdir=/lib --with-system-zlib --enable-shared --enable-__cxa_atexit i586-suse-linux
Thread model: posix
gcc version 3.3.3 (SuSE Linux)
und zum testen hatte ich
Code: Alles auswählen
linux:~/gcc_rtl_test # g++ -o main main.cpp -fdump-rtl-expand
cc1plus: error: unrecognized option `-fdump-rtl-expand'
eingegeben...laut man pages müsste es aber funktionieren
wie hattest du die 4.0 version des gcc istalliert, also ich meine
einfach
und dann
und dann
oder muss ich da noch was beachten?
Edit by Snoopy:
Code-Tags für die Leserlichkeit eingefügt.
-
gms
- Beiträge: 7798
- Registriert: 26.11.2004 20:08:38
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von gms » 22.06.2006 14:18:38
diese Option finde ich auch noch sehr nützlich:
damit wird dann ein Binary "gcc-4.1" erzeugt, welches du, wenn du möchtest, immer noch auf "gcc" verlinken kannst.
Gruß
gms
-
matze-ed7
- Beiträge: 33
- Registriert: 01.06.2006 09:02:53
Beitrag
von matze-ed7 » 22.06.2006 14:22:23
gms hat geschrieben:diese Option finde ich auch noch sehr nützlich:
damit wird dann ein Binary "gcc-4.1" erzeugt, welches du, wenn du möchtest, immer noch auf "gcc" verlinken kannst.
Gruß
gms
verstehe ich nicht? wie du das meinst!
-
gms
- Beiträge: 7798
- Registriert: 26.11.2004 20:08:38
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von gms » 22.06.2006 14:32:35
damit wird so etwas möglich:
Code: Alles auswählen
gms@gms4:~# ls -l /usr/local/bin/gcc*
lrwxrwxrwx 1 root root 7 2006-06-13 09:57 /usr/local/bin/gcc -> gcc-4.0
-rwxr-xr-x 1 root root 93712 2006-06-11 20:25 /usr/local/bin/gcc-4.0
-rwxr-xr-x 1 root root 181956 2006-06-11 10:01 /usr/local/bin/gcc-4.1
-
matze-ed7
- Beiträge: 33
- Registriert: 01.06.2006 09:02:53
Beitrag
von matze-ed7 » 22.06.2006 14:35:38
sorry ich meite jedoch, wie ich es denn,bzw bei welchem installationsschritt ich das mit angeben muss
-
gms
- Beiträge: 7798
- Registriert: 26.11.2004 20:08:38
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von gms » 22.06.2006 14:37:41
kannst du gleich beim
mit angeben, ob es später auch geht, habe ich noch nie probiert
Edit by Snoopy:
Code-Tags für die Leserlichkeit eingefügt.
-
matze-ed7
- Beiträge: 33
- Registriert: 01.06.2006 09:02:53
Beitrag
von matze-ed7 » 22.06.2006 14:39:47
also so oder wie
und was erhalte ich denn dann nach dem install....
Edit by Snoopy:
Code-Tags für die Leserlichkeit eingefügt.
-
matze-ed7
- Beiträge: 33
- Registriert: 01.06.2006 09:02:53
Beitrag
von matze-ed7 » 23.06.2006 08:57:59
also die installation des gcc4.0.0 geht bei mir net so richtig
ich hatte
Code: Alles auswählen
./configure --prefix=/root/gcc-4.0.0/ --enable-languages=c,c++ --program-suffix=-4.0
und dann
und dann kommt die fehlermeldung
Code: Alles auswählen
configure: creating ./config.status
config.status: creating Makefile
config.status: creating testsuite/Makefile
config.status: creating config.h
config.status: executing default commands
make[1]: Entering directory `/root/gcc__4.0.0_source/gcc-4.0.0/build-i686-pc-lin ux-gnu/libiberty'
if [ x"" != x ] && [ ! -d pic ]; then \
mkdir pic; \
else true; fi
touch stamp-picdir
make[1]: *** No rule to make target `../include/ansidecl.h', needed by `regex.o' . Stop.
make[1]: Leaving directory `/root/gcc__4.0.0_source/gcc-4.0.0/build-i686-pc-linu x-gnu/libiberty'
make: *** [all-build-libiberty] Error 2
und der vorgang bricht ab?
kann mir da wer weiterhelfen
Edit by Snoopy:
Code-Tags für die Leserlichkeit eingefügt.
-
Snoopy
- Beiträge: 4297
- Registriert: 17.11.2003 18:26:56
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Rh.- Pflz.
Beitrag
von Snoopy » 23.06.2006 11:17:48
Snoopy hat geschrieben:Edit by Snoopy:
Code-Tags für die Leserlichkeit eingefügt.
Und das ganze 7 Mal !
Gewöhnt Euch das doch endlich mal an...
-
matze-ed7
- Beiträge: 33
- Registriert: 01.06.2006 09:02:53
Beitrag
von matze-ed7 » 23.06.2006 11:21:34
ja danke muss ich mir merken wusste nicht das es so etwas gibt
Danke noch mal
-
matze-ed7
- Beiträge: 33
- Registriert: 01.06.2006 09:02:53
Beitrag
von matze-ed7 » 23.06.2006 13:40:31
matze-ed7 hat geschrieben:also die installation des gcc4.0.0 geht bei mir net so richtig
ich hatte
Code: Alles auswählen
./configure --prefix=/root/gcc-4.0.0/ --enable-languages=c,c++ --program-suffix=-4.0
und dann
und dann kommt die fehlermeldung
Code: Alles auswählen
configure: creating ./config.status
config.status: creating Makefile
config.status: creating testsuite/Makefile
config.status: creating config.h
config.status: executing default commands
make[1]: Entering directory `/root/gcc__4.0.0_source/gcc-4.0.0/build-i686-pc-lin ux-gnu/libiberty'
if [ x"" != x ] && [ ! -d pic ]; then \
mkdir pic; \
else true; fi
touch stamp-picdir
make[1]: *** No rule to make target `../include/ansidecl.h', needed by `regex.o' . Stop.
make[1]: Leaving directory `/root/gcc__4.0.0_source/gcc-4.0.0/build-i686-pc-linu x-gnu/libiberty'
make: *** [all-build-libiberty] Error 2
und der vorgang bricht ab?
kann mir da wer weiterhelfen
Edit by Snoopy:
Code-Tags für die Leserlichkeit eingefügt.
Mein Fehler lag darin, dass ich dir install Anleitung nicht richtig gelesen hatte, da stand nämlich
Code: Alles auswählen
% mkdir objdir
% cd objdir
% srcdir/configure [options] [target]
ich hatte übersehehen, dass man in das objdir wechseln soll und net das ganze aus dem srcdir starten