GCC Zwischensprache erzeugen?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
matze-ed7
Beiträge: 33
Registriert: 01.06.2006 09:02:53

GCC Zwischensprache erzeugen?

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

Code: Alles auswählen

gcc -save-temps
... 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

Code: Alles auswählen

g++ -o main main.cpp -dr
der funktioniert bei mir

aber der rest net?

wie muss ich denn die Befehle eingeben
ich hatte

Code: Alles auswählen

gcc -o main main.cpp -fdump-rtl
und

Code: Alles auswählen

g++ -o main main.cpp -fdump-rtl
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

Code: Alles auswählen

gcc -v
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

Code: Alles auswählen

./configure --preffix=.....
und dann

Code: Alles auswählen

make bootstraps
und dann

Code: Alles auswählen

install
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:

Code: Alles auswählen

--program-suffix=-4.1
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:

Code: Alles auswählen

--program-suffix=-4.1
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

Code: Alles auswählen

configure
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

Code: Alles auswählen

./configure --prefix=..... --program-suffix=-4.1
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

Code: Alles auswählen

make bootstrap
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.

Benutzeravatar
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

:evil:
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

Code: Alles auswählen

make bootstrap
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

Antworten