Hallo, wie erzeuge ich mit avr-gcc (unter Linux) ein Listing, dass aussieht wie das am Ende des Postings? Ich hab mit avr-objdump schon so ein ähnliches Listing erzeugt, aber da fehlen die Kommentare, was die Assemblerbefehle denn jetzt für eine C-Zeile repräsentieren. MfG - C. Lechner ---> schnipp! <--- superFunc(); 148: 0e 94 f6 00 call 0x1ec ultraFunc(0x55); 14c: 85 e5 ldi r24, 0x55 ; 85 14e: 0e 94 fb 00 call 0x1f6 PORTD = gigaFunc(); 152: 0e 94 fd 00 call 0x1fa 156: 82 bb out 0x12, r24 ; 18 PORTA = (addFunc(0xF0, 0x11) & 0xff); 158: 61 e1 ldi r22, 0x11 ; 17 15a: 80 ef ldi r24, 0xF0 ; 240 15c: 0e 94 ff 00 call 0x1fe 160: 8b bb out 0x1b, r24 ; 27 PORTB = (addFunc(0xF0, 0x11) >> 8); 162: 61 e1 ldi r22, 0x11 ; 17 164: 80 ef ldi r24, 0xF0 ; 240 166: 0e 94 fc 00 call 0x1f8 16a: 89 2f mov r24, r25 16c: 99 27 eor r25, r25 16e: 88 bb out 0x18, r24 ; 24
Versuch mal das hier. Das ist über DJGPP (gcc für DOS), sollte aber eigentlich mit allen gcc Versionen funktionieren (wenn es denn funktioniert, probiert hab ichs nicht:): http://www.delorie.com/djgpp/v2faq/faq8_20.html
Hallo, das kommt dem, was ich zu erreichen suche schon sehr ähnlich allerdings hat der Linker da noch nicht zugeschlagen und daher enthalten alle Adressen immer noch 0x00. Außerdem ist mir aufgefallen, dass manchmal die Assembler-Befehle vor der C-Zeile im Listing kommen. Ich werd mal g00gle fragen, jetzt habe ich ja in Form der Argumente, die bei DJGPP vorkommen, neue Suchwörter. - C. Lechner
Also ich habs jetzt auch mal probiert, da kommen schon Adressen != 0, aber selbstverständlich sind das noch nicht die fertig aufgelösten Adressen, sondern der Programmzähler von gas während er das einzelne Modul assembliert. Kann sein dass die Assemblerzeilen und der C Code durcheinandergeworfen werden, das passiert scheinbar bei gcc, wenn man Debuginformationen und Optimierungen eingeschaltet hat (viele Compiler lassen es auch gar nicht erst zu, Code zu optimieren und mit Debuginfos zu versehen). Falls du -O, -O3 oder ähnlich angegeben hast, kannst du das ja mal weglassen, aber dann sieht der Code natürlich dann anders aus, was vermutlich nicht Sinn der Sache ist. Brauchst auch nicht unbedingt nach DJGPP zu suchen, lies doch einfach die Dokumentation von gcc und der binutils: http://www.gnu.org/software/binutils/manual/ http://gcc.gnu.org/onlinedocs/ Ansatzpunkt wären da die Optionen die auf der DJGPP Site angegeben sind...
Hallo, Die -O3, die ich tatsächlich im Makefile hatte, hab ich wieder rausgemacht, sollte auch nur ein Test sein. In der Entwicklungsphase tut man ja normalerweise erst dann auf Optimierung gehen, wenn man das Produkt fehlerfrei hat bzw. glaubt dass es so ist. Mit den "Adressen" meinte ich die Zieladressen von call, lds etc... Die Adressen der OP-Codes sind doch AFAIK nur relativ zum Anfang des Moduls, oder? Werde mal die Doku zu den binutils, speziell zum "as" lesen, weil der das Listing ja erzeugt. THNX - Christoph Lechner
>Mit den "Adressen" meinte ich die Zieladressen von call, lds etc... >Die Adressen der OP-Codes sind doch AFAIK nur relativ zum Anfang des >Moduls, oder? Jo, das ist richtig. Hab dich da falsch verstanden mit den Adressen.
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.