Habe irgendwo mal gelesen das, wenn man in Atmel Studio (Version 6 oder höher) in C Programmiert und das ganze dann Kompiliert, Atmel Studio aus dem C-Code einen Assembler Code und aus dem Assembler Code dann das HEX-File was in den ATmega/tiny rein kommt erzeugt. Ist das so richtig? Und wenn ja, wie oder wo kann ich mir in Atmel Studio das erzeugte Assembler File ansehen? Bzw. was muss ich in Atmel Studio eventuell einstellen, um das erzeugte Assemblerfile zu Gesicht zu bekommen? Oder wo und mit welcher File-Extension wird denn das erzeugte Assemblerfile dann abgelegt?
:
Gesperrt durch Moderator
Dietrich L. schrieb: > Vielleicht hilft das weiter: > Beitrag "Interpretation AVR-GCC *.lss File" DANKE hat geholfen. Nachdem ich auf "Build Solution" im Atmel Studio klicke, wird in dem Projektverzeichnis des C-Code Programms ein File mit der Extension "LSS" erzeugt. Da steht dann der Assembler Code drin. ...mmhh sehr interessante Sache. Da kann man sich öfters mal ansehen, was Atmel Studio so aus C-Code macht. Speziell wenn es sich um Rechenintensive Gleichungen im Programmcode handelt. Danke nochmals für den Link.
sten schrieb: > Da kann man sich öfters mal ansehen, > was Atmel Studio so aus C-Code macht. Speziell wenn es sich um > Rechenintensive Gleichungen im Programmcode handelt. Ich bin mir sicher dass du als versierter Programmierer noch einiges an Codeoptimierung dazbringen können wirst. Insbesondere weil dir klar ist dass Atmel Studio den Code erzeugt (genau genommen ist es ja Visual Studio) und nicht irgend so ein dahergelaufener Compiler.
sten schrieb: > Habe irgendwo mal gelesen das, wenn man in Atmel Studio (Version 6 oder > höher) in C Programmiert und das ganze dann Kompiliert, Atmel Studio aus > dem C-Code einen Assembler Code und aus dem Assembler Code dann das > HEX-File was in den ATmega/tiny rein kommt erzeugt. > > Ist das so richtig? Das ist nicht nur bei Atmel Studio (Version 6 oder höher) so, sondern bei allem, was gcc verwendet, da der gcc das (wie die meisten C-Compiler) so macht. > Und wenn ja, wie oder wo kann ich mir in Atmel Studio das erzeugte > Assembler File ansehen? Wenn du dem Compiler die Option --save-temps mitgibst, werden alle Dateien, die zwischendrin so erzeugt werden, behalten und nicht nach dem Compilerlauf wieder gelöscht. Dazu gehört auch die generierte Assembler-Datei. Man kann auch den Compiler mit der Option -S aufrufen. Dann hört er nach der Erzeugung des Assembler-Codes auf und speichert den ab, statt noch ein Object-File draus zu erzeugen. > Oder wo und mit welcher File-Extension wird denn das erzeugte > Assemblerfile dann abgelegt? .s
Ich würde gerne klar stellen das das Atmel Studio nur die Entwicklungsumgebung ist. Das Atmel Studio ist lediglich ein besserer Text Editor und eine grafische Bedien-Oberfläche für den Debugger. Was du da gerade entdeckt hast, ist eine Eigenschaft des Compilers, und der wird vom Atmel Studio lediglich als Unterprogramm aufgerufen. Mein Buch Band 3 erklärt, was da passiert und wie man den Compiler ohne Atmel Studio benutzen kann. http://stefanfrings.de/mikrocontroller_buch/index.html
Fach Mann schrieb: > > Ich bin mir sicher dass du als versierter Programmierer noch > einiges an Codeoptimierung dazbringen können wirst. > > Insbesondere weil dir klar ist dass Atmel Studio den Code > erzeugt (genau genommen ist es ja Visual Studio) und nicht > irgend so ein dahergelaufener Compiler. Ich muß Dir als "Fach Mann" dazu ganz einfach sagen, das Atmel Studio für mich das "Eingangstor" ist, wo ich meinen C-Konformen Quellcode eingeben kann und am Ende ist ein Mikrocontroller der das macht was er soll. Was alles dazwischen von Atmel Studio an Software oder Hardware verwendet wird, ist mir letztendlich eigentlich egal! Nur Funktionieren muss es! Da ich nur Anwender und kein Entwickler von Atmel Studio bin, interessiert es mich auch nicht wie oder womit mein eingegebener C-Quellcode in ein Assembler Code übersetzt wird. Es interessiert mich auch nicht, womit dann der Assembler Code in ein HEX -File umgesetzt wird. Es interessiert mich auch nicht, wie das HEX-File über eine PC-Schnittstelle in den ISP oder JTAG Programmer kommt und es interessiert mich auch nicht, welche Software im Programmer läuft, der die Daten MC passend in dessen Flash speichert! Das einzige was mich interessiert ist, das es funktioniert! Das mein MC auch genau das macht was ich ihm durch meinen Quellcode vorgegeben habe und nichts anderes. Wenn ich ein Text ausgedruckt auf einem Stück Papier haben möchte, interessiert es mich ja auch nicht welches Betriebssystem und welcher Texteditor auf welcher PC Hardware läuft und welcher Drucker angeschlossen ist. Es müssen einfach nur am Ende die Buchstaben so auf dem Papier stehen wie ich diese eingetippt habe. Und es mag sein, das GCC das non plus Ultra bei den C-Compilern ist. ...hmm...von mir aus..., aber es stellt sich für mich jetzt nur die Frage, wenn doch der GCC aus C-Code ein Assembler Code erzeugt, warum programmiert man dann nicht gleich in Assembler? Aber bitte! Dies ist nur eine Feststellung und keine Aufforderung zur nicht endenden Diskussion ob Assembler oder C besser sei! Denn davon ist das Forum schon überfüllt!
sten schrieb: > Ich muß Dir als "Fach Mann" dazu ganz einfach sagen, das Atmel Studio > für mich das "Eingangstor" ist, wo ich meinen C-Konformen Quellcode > eingeben kann und am Ende ist ein Mikrocontroller der das macht was er > soll. > Was alles dazwischen von Atmel Studio an Software oder Hardware > verwendet wird, ist mir letztendlich eigentlich egal! Nur Funktionieren > muss es! Das klingt nach "wasch mich, aber mach mich nicht nass". Du musst dich entscheiden: Willst du nur Code reinkippen und Programm rauskriegen, dann brauchen dich die Details (wie z.B. die des Assemblers) nicht interessieren. Willst du mehr, hilft es ungemein, wenn man versteht, was hinter den Kulissen abgeht. Wenn du nur Auto fahren willst, brauchst du nicht zu wissen, was in so einem Auto alles verbaut ist. Wenn du aber selber den Motor tunen willst, solltest du schon eine gewisse Vorstellung davon haben, wie so ein Motor denn funktioniert. > Das einzige was mich interessiert ist, das es funktioniert! Das mein MC > auch genau das macht was ich ihm durch meinen Quellcode vorgegeben habe > und nichts anderes. Dann ist doch alles gut. Warum fragst du dann überhaupt?
sten schrieb: > wenn doch der GCC aus C-Code ein Assembler Code erzeugt, warum > programmiert man dann nicht gleich in Assembler? Probier es aus, du wirst es merken.
Md M. schrieb: > Probier es aus, du wirst es merken. Ja, mach das. Du wirst sehen: Es geht schneller, es ist übersichtlicher und da Du selbst den Assembler-Quelltext schreibst, weisst Du auch genau, was passiert. Ein C-Compiler kann Dir alles Mögliche weg-optimieren. 2 verschiedene Compiler erzeugen aus dem gleichen Quelltext unterschiedlichste Resultate. Das geht so weit, daß der 1. kiloweise Fehlermeldungen bringt, der 2. aber klaglos compiliert.
sten schrieb: > Dietrich L. schrieb: >> Vielleicht hilft das weiter: >> Beitrag "Interpretation AVR-GCC *.lss File" > > DANKE hat geholfen. Wobei in einem "lss" oder "lst" KEIN Assembler-Code steht. Es handelt sich dabei lediglich um Disassembly Dumps, das nicht weiter zur Codeerzeugung verwendet wird. Der von GCC erzeugte Assembler-Code landet in einer temporären Datei, die nach dem Lauf wieder automatisch entfern wird — oder es wird garkeine temporäre Datei erzeugt wie mit -pipe (was bei großer Projekten die Generierung becshleunigen kann). Mit -save-temps als gcc-Option wird der asm-Code nicht gelöscht und i.d.R bei den anderen generierten Dateien wie .o abgelegt, mit Endung .s.
Pittiplatsch, der liebe schrieb: > > Ja, mach das. Du wirst sehen: Es geht schneller, es ist übersichtlicher > und da Du selbst den Assembler-Quelltext schreibst, weisst Du auch > genau, was passiert. Ein C-Compiler kann Dir alles Mögliche > weg-optimieren. 2 verschiedene Compiler erzeugen aus dem gleichen > Quelltext unterschiedlichste Resultate. Das geht so weit, daß der 1. > kiloweise Fehlermeldungen bringt, der 2. aber klaglos compiliert. Da kann ich absolut nur zustimmen! Programmiere ja auch schon seit Jahrzehnten in Assembler und wollte nur mal sehen was GCC so drauf hat und letztendlich ausspuckt. Eventuell hätte man ja noch was lernen können... Aber so wie es aussieht und was ich bis jetzt gesehen habe, kann das GCC es auch nicht besser! Ok, dann wollen wir es hier mal gut sein lassen und meine Frage hat sich ja auch durch die gute Antwort von Johann L. bestens Beantwortet.
sten schrieb: > 2 verschiedene Compiler erzeugen aus dem gleichen Quelltext > unterschiedlichste Resultate. 2 unterschiedliche Assembler-Programmierer erzeugen für die gleiche Aufgebenstellung 2 unterschiedliche Resultate. Und jetzt? Evtl. erzeugt sogar der gleiche Programmierer für die gleiche Aufgabe ein /anderes7 Resultat!
sten schrieb: > Da ich nur Anwender und kein Entwickler von Atmel Studio bin, > interessiert es mich auch nicht wie oder womit [...] Es interessiert mich > auch nicht [...] Es interessiert mich auch nicht [...] und es > interessiert mich auch nicht [...]! > > Das einzige was mich interessiert ist, das es funktioniert! Kauf Dir ein fertiges Produkt oder geb die Entwicklung irgendwo in Auftrag.
sten schrieb: > Programmiere ja auch schon seit Jahrzehnten in Assembler und wollte nur > mal sehen was GCC so drauf hat und letztendlich ausspuckt. Na dann, schön, daß man mal drüber gesprochen hat. Ansonsten wenig neuer Erkenntnisgewinn... Oliver
sten schrieb: > Aber so wie es aussieht und was > ich bis jetzt gesehen habe, kann das GCC es auch nicht besser! Niemand erwartet, daß der C-Compiler was besser kann. Aber er macht seine Aufgabe sauschnell und erlaubt auch dem Programmierer ein Problem viel schneller zu implementieren und das ist sein eigentlicher Vorteil. Wenn man in Assembler das gleiche Problem in der 10-fachen Zeit gegenüber C lösen kann, ist das schon sehr gut.
Beitrag #5226981 wurde von einem Moderator gelöscht.
Beitrag #5230459 wurde von einem Moderator gelöscht.
Beitrag #5230480 wurde von einem Moderator gelöscht.
Beitrag #5230482 wurde von einem Moderator gelöscht.
Beitrag #5230498 wurde von einem Moderator gelöscht.
sten schrieb: > Das mein MC auch genau das macht was ich ihm durch meinen Quellcode > vorgegeben habe und nichts anderes. Was genau der µC macht, kannst du ihm nur in Assembler vorgeben. Sobald irgendein Compiler ins Spiel kommt, musst du dich damit abfinden, dass der das so macht, wie andere es für gut befanden. Du bist dann allenfalls Zuschauer im LSS-File. Schon wenn du die Tuning-Möglichkeiten nützen möchtest, musst du dich mit dem Compiler und dessen Bedienung intensiver auseinandersetzen.
Beitrag #5230685 wurde von einem Moderator gelöscht.
Beitrag #5231012 wurde von einem Moderator gelöscht.
c-hater schrieb im Beitrag #5231012:
> wegzensierten
Du machst dich einfach nur lächerlich und unmöglich. Worte wie
"Wichser", "Hirni" oder "Arsch" mögen in deiner Familie, an deinem
Arbeitsplatz und in deinem Freundeskreis — falls überhaupt noch existent
— zum guten Umgangston gehören.
Dass das hier nicht der Fall ist, das finde ich gut.
Wenn du nicht in der Lage bist, Argumente zu bringen und diese auch
mit Anstand vorzutragen, dann ist es einfach lächerlich, das als
"Zensur" zu bezeichnen. Wenn du nicht in der Lage bist, ohne
Fäkalsprache zu argumentieren, dann landen eben auch deine Argumente in
der Tonne. So einfach ist das.
:
Bearbeitet durch User
Beitrag #5231035 wurde von einem Moderator gelöscht.
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.