Forum: Compiler & IDEs EmBitz 1.1: Wie erzeugt man Assembler Listings?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Christian J. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

weiss das zufällig jemand? Nein, nicht mit dem Parameter -S unter den 
"Other compiler options", das erzeugt nur Fehlermeldungen. Im Netz ist 
auch nichts zu finden, außer dass mehrere das Problem schon hatten. Im 
obj Ordner sind zwar .s Files aber da drin steht nur .ascii .... und das 
seitenweise.

Gruss,
Christian

Seltsame Ausgabe....

  .ascii  "\243\331\200n1\276\225\240)E\267\014\337\312\321lDw"
  .ascii  "\023\232\012t7\243\331\202n%\232\255\350V\241\331\206"
  .ascii  "n5\232\000\272\333\321\324\240\033DS\213n\035\276\355"
  .ascii  "@S\217n\003\232Ft\233\3204\243\273\023\315.t[\320\354"
  .ascii  "Fw\017\276\355%\3526\020\211\364\312\362@\2119\340\352"
  .ascii  "\346\300\263_\265\255\370\327\273x\233\334\030\377e"
  .ascii  "f\341\216\324F\377\204\037hZw\3349u\343\260\365\353"
  .ascii  "\034\326t!\266\251{\374\024\374\271-j\255\207(\305&"
  .ascii  "\"\017\367\3116\255\271\211\265\010q-7\336d-b\025\271"
  .ascii  "(\367ve\302\230g\310i\350eg\275\325\347\035\312\362"
  .ascii  "\3466\351\271f\314d\003!v\022e6\340\313Z\223\305h4q"
  .ascii  "\264CTO\312V\014\224\210\013\031\237\017\2377\206\227"
  .ascii  "\270\270vu\002j\036_\342\320N\364\214\371\230\314\001"
  .ascii  "J\235\327\251\215xk\326a\016*t\321\252\247\347\303U"
  .ascii  "L\345\324\366B\035\255\317\200sA\203\272\0074f\345Z"
  .ascii  "_h\326\306\231\233\017\007\230\302\3156\177\212\374"
  .ascii  "\370G\227\303\250V\211\314g\263\025\343\"\252t\271\254"
  .ascii  "\227\207AL\221\336\277\272\216\031\325\

von Christian J. (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Irgendwo hier vermute ich muss was geändert werden....

von Heinz V. (heinz_v)


Bewertung
0 lesenswert
nicht lesenswert
"Dont delete intermediate Files"

von N. G. (newgeneration) Benutzerseite


Bewertung
1 lesenswert
nicht lesenswert
Hallo,

das sind schon die richtigen Files, aber es sieht so aus, als ob du 
-flto aktiviert hättest.
Also entweder das abschalten, oder, was immer geht, ein komplettes 
Disassembly erstellen:
objdump -d [-S] inputfile > outputfile.lss

Mit freundlichen Grüßen,
N.G.

von Christian J. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ok,

un wo trägt man das ein? Das soll ja automatisch passieren...... und 
aktiviert habe ich nichts, das macht ja die IDE,. diesen String zusammen 
setzen.

von Christian J. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Heinz V. schrieb:
> "Dont delete intermediate Files"

Nein das ist es leider nicht allein.... das habe ich schon.

von Bernd K. (prof7bit)


Bewertung
0 lesenswert
nicht lesenswert
Christian J. schrieb:
> Ok,
>
> un wo trägt man das ein? Das soll ja automatisch passieren...... und
> aktiviert habe ich nichts, das macht ja die IDE,. diesen String zusammen
> setzen.

Vielleicht bei post-build steps wie schon der Name suggeriert?

von Johann L. (gjlayde) Benutzerseite


Bewertung
1 lesenswert
nicht lesenswert
1) Übersetze mit -save-temps -v

2) Suche in den Console-Ausgaben nach *.ltrans*.s

3) Suche in den ltrans, welche zur Quelle gehört.  Eine 1:1 Zuirdnung
   gibt es nicht.

-ffat-lto-objects ist NICHT was du willst, denn die s-Files enthalten 
dann nur Makulature.  Das einzige, was -ffat-lto-objects bewirkt, ist, 
den Build-Vorgang zu verlangsamen :-)

von Johann L. (gjlayde) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
... bei mir funktioniert folgendes (avr-gcc)

1) Übersetzen mit -v -save-temps

2) Ausgabe filtern nach "[Leaving LTRANS", das sind Zeilen, die z.B. so
   aussehen:
1
[Leaving LTRANS /tmp/ccTUojfO.ltrans.out]
2
[Leaving LTRANS /tmp/ccTUojfO.ltrans0.o]

3) Die Dateinamen der Assembler-Dumps ergeben sich aus den *.o Zeilen:
   Im Beispiel ist es nur ein Modul, und das Dump in ccTUojfO.ltrans0.s,
   d.h. ohne den führenden Pfadname.

was auch geht, die Ausgabe nach Aufrufen von as zu durchsuchen, da wird 
dann das asm-File explizit genannt.  Beispiel:
1
/srv/local/gnu/install/gcc-7/bin/../lib/gcc/avr/7.0.1/../../../../avr/bin/as -v -mmcu=avr4 -mno-skip-bug -o /tmp/ccTUojfO.ltrans0.ltrans.o ccTUojfO.ltrans0.s

Die asm-Datei ist also ccTUojfO.ltrans0.s.

p.s. -dumpbase scheint nicht wie gewünscht zu funktionieren.

: Bearbeitet durch User
von Christian J. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

bitte nicht falsch verstehen aber diese Antworten enthalten alle etwas 
anderes, letzte Beitrag verstehe ich überhaupt nicht.

"Ausgabe filtern nach..."

Wie filtert man welche Ausgabe? Mit den Augen durchsuchen? Das läuft 
vollautomatisch ab der Compiler+Link Vorgang. Und das Manual von Embitz 
ist grottenschlecht, ein typisches Nerd Produkt was für Normalbenutzer 
nahezu unverständlich ist.

Und leider ist es genauso bei vielen engl. Beiträgen. -save-temps -v 
bewirkt nur, dass der Kompiliervorgang mit etlichen Erros endet. Und man 
auch nicht nachvolziehen kann was da nicht stimmt. Ich arbeite mit dem 
STM32 Cortex M3.

Daher bitte nur jener antworten, wer dieses Tool wirklich benutzt und 
den gewünschten Effekt schon erreicht hat. Vielleicht mit einem 
Screenshot dabei wo was eingetragen wird. Es gibt unendlich viele 
Dialogfenster, die teilweise tief geschachtelt sind.

von Johann L. (gjlayde) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Christian J. schrieb:
> letzte Beitrag verstehe ich überhaupt nicht.

Ist aber das, was du brauchst, um an die Assembler-Ausgabe von GCC 
ranzukommen.

Das Problem ist, dass der Compiliervorgang mit LTO deutlich 
komplizierter ist als ein "normaler", also nicht-LTO-compile.  Das erste 
Compile enthält nur Bytecode, der hier nicht wirklich hilfreich ist. 
Bytecode ist das, was du in deinem 1. Beitrag gepostet hast.

> "Ausgabe filtern nach..."
>
> Wie filtert man welche Ausgabe?

Kommt auf deine Umgebung an.  Ich kann dir Hilfestellung für die Tools 
(Compiler, Linker, etc.) geben. aber wenn das ...

> Daher bitte nur jener antworten, wer dieses Tool wirklich benutzt

...nicht gewünscht ist, dann gerne :-)

von Christian J. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Johann,

Du hast sicher ne Menge Ahnung, viel mehr als ich :-) Aber ich weiss 
weder was LTO ist noch bin ich mit den Interna eines Compilers + Linkers 
vertraut. Typischer Anwender. Ich überlasse das einfach der IDE und dass 
die mein Projekt richtig verarbeitet, genau wie die Jungs nebenan in der 
Entwicklung, die Keil verwenden und dafür viel Geld ausgeben. Bisher 
ganz gut damit gefahren seit ca 20 Jahren, auch ohne zu wissen wie ein 
make File funktioniert, maximal ein Linker Script verstehe ich, bzw kann 
es anpassen.
Im cmd fenster von Windows lässt sich aus dem .o File mit objdump auch 
ein Asm File erzeugen, wenn man es manuell macht.

Falls die Dateien als zb typische Linux Temp Namen haben fällt die Chose 
flach. Mir fehlt der Nerv dazu diese Schritte nach jedem Komplilat zu 
machen. Entweder ich hole mir so ein .s File direkt in den Editor und 
sehe nach jedem Durchgang was bei rauskommt oder ich muss es lassen. 
Dass sich Embitz auch durch Scripte steuern lässt weiss ich aber da gibt 
es keine gescheiten Tutorials zu. So gut die IDE ist, die auf EmBlocks 
basiert, so schlecht ist ihre Akzeptanz wegen der grottenschlechten bzw 
gar nicht vorhandenen Doku.

von Bernd K. (prof7bit)


Bewertung
0 lesenswert
nicht lesenswert
Christian J. schrieb:
> noch bin ich mit den Interna eines Compilers + Linkers
> vertraut. Typischer Anwender.

Als "Anwender" kommt man doch gar nicht in die Verlegenheit eine IDE zu 
benutzen und C zu programmieren, als Anwender wendet man fertige 
Produkte an!

Von einem C Programmierer jedoch erwartet man daß er weiß wie man mit 
seinen Hauptwerkzeugen (nämlich Compiler und Linker) umgeht, was die für 
Optionen haben und was die bewirken.

Christian J. schrieb:
> Mir fehlt der Nerv dazu diese Schritte nach jedem Komplilat zu
> machen.

Dann trags doch einfach in die Post build steps ein, fertig.

von Christian J. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich probiers :-(

Hat ja bisher alles auch nicht funktioniert, da ich zb nicht mal den GCC 
Parameterstring kontrollieren kann.

Übrigens mal bei google nach "embitz generate assembly listing" suchen. 
was ihr da findet ist komplett anders als alles was hier steht, auch die 
Parameter sind andere als hier vorgeschlagen. Daher die 
Riesenverwirrung.

von Johann L. (gjlayde) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Am einfachsten wird es für dich sein, LTO zu deaktivieren, so dass 
main.s wieder den Assembler Code enthält so wie du es gewohnt bist.

Und nein, wie man in der komischen GUI -flto entfernt, das weiß ich auch 
nicht ;-)

von Christian J. (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Die einfachste Kiste ist die, beim Debuggen "Assembler View" anzuzeigen 
und Mixed Mode zu wählen. Irgendwie erzeugt die IDE schon intern alles 
ganz richtig und beim Debuggen kann man sich anschauen wie alles 
aussieht und hat noch den C-Text dazu. Ganz ohne Verrenkungen...

von Johann L. (gjlayde) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Ok, also nur ein DISassembly.  Das macht's natürlich einfach...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.