Hallo, gibt es einen "Assembler zu C"-Übersetzer (aus asm C machen) für PICs? Gruß Willi
@ Willi Lich (wilials)
>gibt es einen "Assembler zu C"-Übersetzer (aus asm C machen) für PICs?
Ja, nennt sich Programmierer mit C + ASM Kenntnissen ;-)
Als automatische Software, nein.
1 | while ( ! eof(File)) { |
2 | String s = getLine(File); |
3 | putLine(File, " __asm(\"" + s + "\");"); |
4 | } |
um in Assembler geschriebene Programme besser zu verstehen, da ich ASM nicht kann. Willi
Willi Lich schrieb: > um in Assembler geschriebene Programme besser zu verstehen, da ich ASM > nicht kann. Nein. Du musst Dir das vorstellen wie Hackfleisch (das Assemblerprogramm) und eine Kuh (das C-Programm). Die Transformation Kuh -> Hackfleisch ist recht unkompliziert, aber die Rekonstruktion Hackfleisch -> Kuh ist bislang noch keinem geglückt.
Solche Programme heissen Decompiler (in dem Fall von einem Maschinencode eines bestimmten Prozessors in C), aber die Qualität ihrer Ausgabe ist sehr mies, sie werden nicht dazu geschaffen einem, der Assembler nicht versteht, das in übersichtliches C umzuwandeln, sondern dazu daß es nach dem kompilieren wieder den Originalcode ergibt. Die helfen dir also nicht weiter, zudem kosten die besseren davon Geld, schliesslich erlauben sie es "Geheimnisse zu stehlen" weil sie nicht nur auf den Assemblercode, sondern auf den Maschinencode angesetzt werden können. Lern den Assembler des entsprechenden Prozessors.
Einerseits schade, dass es solche erschwinglichen Übersetzer nicht gibt, andererseits verständlich, dass der Maschinencode nicht für Jeden entschlüsselbar ist. Ich hatte etwas über "Relogix" als ASM to C Translator gelesen und dachte, dass das nur ein Stückchen vom großen Kuchen ist. Sicher wäre es die Lösung, Assembler zu lernen. Aber irgendwo muß man mal einen Strich ziehen. Es gibt auch noch andere Dinge außer Programmiersprachen für die man seine grauen Zellen aktivieren muß. Vielleicht gibt es doch in absehbarer Zukunft "Softwaretranslator", die den Maschinencode schützen. Danke für Eure Hilfe. Willi
Schreibe doch ein einfaches C-Programm und schau dir den assembler code an. dazu noch die instruction set vom microcontroller kennen, und schon hat man den zusammenhang verstanden. meine meinung nach ist das programmieren in assembler einfach nur ätzend, insbesondere die wartbarkeit matrix-feeling. im allgemeinen reicht es, wenn du das unstruction set sowie die dazugehörigen cycles kennst (code begutachten->Effizienz schlecht?->codedesign bzw. algorithmus ändern)... was sind eure gründe in asm zu proggen?
Ich möchte nicht wissen was so ein "Hackfleisch zu Kuh-Konverter", der Vergleich von Rufus ist Spitze, macht, wenn im Assemblerprogramm (willkürlich) Tabellen mitten im Code stehen. Selbst ein normaler Disassembler kommt da schon ins Schleudern. Ich würde halt das Programm händisch in C umsetzen, sollte machbar sein, wenn es gut kommentiert ist wird es noch einfacher.
Hi >meine meinung nach ist das programmieren in assembler einfach nur >ätzend, insbesondere die wartbarkeit matrix-feeling. Nur wenn man keine Ahnung davon hat. MfG Spess P.S. Deine Shift-Taste klemmt.
Das Problem bei diesem Translator ist halt, dass es nicht "ein" C gibt, sondern dass jeder Compiler (und dabei auch jede Version und jede Konfiguration) einen anderen Assembler-Code erzeugt. Oft wird danach noch optimiert, so dass aus dem Assembler-Code nicht direkt ein C-Code erstellt werden kann. Auch werden dabei alle Funktions- und Variablennamen durch automatische Konstrukte ersetzt (zB "f002002009378784(v77367367,v7727272)" nicht wirklich einfacher zu lesen). Wenn schon ein Mensch Probleme dabei hat einen Assembler-Code in C umzusetzen, wie soll es denn eine Maschine schaffen?
@spess53 Ahnung schon... Die Flexibilität (Funktion in C in Kombination mit Makros) und Übersichtlichkeit, insbesondere die Wiederverwertbarkeit des Codes (Bibliothek) sind wesentliche Vorteile von C gegenüber ASM... MfG Thomas
Thomas schrieb: > insbesondere die Wiederverwertbarkeit des Codes > (Bibliothek) sind wesentliche Vorteile von C gegenüber ASM. warum sollen funktionen die in ASM geschrieben sind nicht Wiederverwendet werden könnn? Da jede Funktion in ASM umgewandlet werden kann, ist sie genau so verwendbar wie die C funktion. auch gibt es ausreichend Makro assembler die einem viel arbeit abnehmen.
Hi >warum sollen funktionen die in ASM geschrieben sind nicht >Wiederverwendet werden könnn? .... Manche können das nicht verstehen. MfG Spess
spess53 schrieb: >>meine meinung nach ist das programmieren in assembler einfach nur >>ätzend, insbesondere die wartbarkeit matrix-feeling. > > Nur wenn man keine Ahnung davon hat. 99% ACK Auch wenn ich es (aus Vernunft- und Zeitgründen) immer öfter sein lasse, ich liebe es auch in Assembler zu programmieren. Vor allem seit ich Kenntnisse höherer Programmiersprachen erlangen konnte macht es mir noch mehr Spaß. Muß natürlich nicht jeder so sehen, keine Frage.
Peter schrieb: > warum sollen funktionen die in ASM geschrieben sind nicht > Wiederverwendet werden könnn? Schon mal x86-Assembler auf einem AVR wiederverwendet? :)
Mark Brandis schrieb: > Schon mal x86-Assembler auf einem AVR wiederverwendet? :) nein, aber meine C quellen mit threads liefen auf dem AVR auch nicht.
Peter schrieb: > nein, aber meine C quellen mit threads liefen auf dem AVR auch nicht. Auf einem ARM9 mit einem posixartigen Betriebssystem würden sie aber durchaus laufen ...
Jörg Wunsch schrieb: > Auf einem ARM9 mit einem posixartigen Betriebssystem würden sie > aber durchaus laufen ... nur mit aufwand, es sind windows threads ...
Peter schrieb: > nein, aber meine C quellen mit threads liefen auf dem AVR auch nicht. Na sag bloß. Wieso kennt die Hardware keine Threads :)
Peter schrieb: > Jörg Wunsch schrieb: >> Auf einem ARM9 mit einem posixartigen Betriebssystem würden sie >> aber durchaus laufen ... > > nur mit aufwand, es sind windows threads ... Dann isses natürlich egal, in welcher Programmiersprache du nicht portable Programme geschrieben hast. :-) SCNR ...
Mark Brandis schrieb: > Schon mal x86-Assembler auf einem AVR wiederverwendet? :) Das spricht aber eher die Portierbarkeit, als die Wiederverwendbarkeit an. Außerdem war nicht die Frage asm oder c, um hier mal den (gefühlt) einemillionundersten c vs. asm thread einzubremsen ;-) frank
@Willi: Seh' es einfach so: Man kann auf 2 Weisen ein bestimmtes Formteil aus Eisen herstellen. 1. Auf der einen Seite mit verschiedenen Feilen, Schraubstock, Bohrständer mit Koordinatentisch, Schieblehre und Mikrometerschraube, Winkel und Lineal, Gewindeschneider, etc.. 2. Auf der anderen Seite kann man die Form des Objektes in einem CAD-Programm erfassen und eine CNC-Maschine damit füttern. Was denkst Du, muss ein Schlosser/Metallbauer zuerst lernen? Ich will nicht sagen, dass Du irgendetwas musst, aber Du kannst Dir überlegen, wie ernsthaft Du Dich mit der Materie beschäftigen willst, und ob ein C-Compiler, der für größere Projekte sicher gute Chancen hat, für den größeren Code-Anteil das Mittel der Wahl zu sein, das richtige Lernmittel ist, um zu verstehen, was tatsächlich in den Tiefen deines Controllers passiert.
>warum sollen funktionen die in ASM geschrieben sind nicht >Wiederverwendet werden könnn? Da jede Funktion in ASM umgewandlet werden >kann, ist sie genau so verwendbar wie die C funktion. auch gibt es >ausreichend Makro assembler die einem viel arbeit abnehmen. In diesem Fall haben wir uns missverstanden. Klar können ASM-Funktionen wieder verwendet werden. Ich meine Funktionen, die Strukturen oder Enums (führt zu besserem Verständnis des Codes) in Kombination von Makros (Zeigeränderungen) beinhalten, so dass einem eine möglichst große Flexibilität sowie die Möglichkeit eröffnet, Änderungen ohne großen Aufwand zu betreiben. Hierzu ist die Intuivität der Sprache C - was ja nicht umsonst als Hochsprache bezeichnet wird - von großer Bedeutung, da man sein ganzes Hirn für die Problemösung einsetzen kann. Meine Erfahrungen mit ASM-Progs waren, dass man nach einigen Programmierstunden (ab 6Std. Nonstopp) das Nachvollziehen und Abspielen des Codes im Kopf im Vergleich zu C erheblich schwerer war. Btw. ich will niemanden zu C bekehren. Früher oder später wird die Person die Sprache C lieben. Ein Rat für die Umsteiger von ASM zu C: Bitte, verwendet C nicht als Assmelberersatz (im Assembler-Denken verhaftet->Assembler Codestyle im C-Gewand).
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.