mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Übersetzer für asm zu c


Autor: Willi Lich (wilials)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

gibt es einen "Assembler zu C"-Übersetzer (aus asm C machen) für PICs?

Gruß
Willi

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wozu?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  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.

Autor: ziza (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
while ( ! eof(File)) {
  String s = getLine(File);
  putLine(File, " __asm(\"" + s + "\");");
}

Autor: Willi Lich (wilials)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
um in Assembler geschriebene Programme besser zu verstehen, da ich ASM 
nicht kann.

Willi

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: MaWin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Willi Lich (wilials)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Sepp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Pieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
moin moin,

mit etwas Übung hilft das weiter:

http://www.hex-rays.com/idapro/


Mit Gruß
Pieter

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>warum sollen funktionen die in ASM geschrieben sind nicht
>Wiederverwendet werden könnn? ....

Manche können das nicht verstehen.

MfG Spess

Autor: Loonix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:
> warum sollen funktionen die in ASM geschrieben sind nicht
> Wiederverwendet werden könnn?

Schon mal x86-Assembler auf einem AVR wiederverwendet? :)

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mark Brandis schrieb:
> Schon mal x86-Assembler auf einem AVR wiederverwendet? :)

nein, aber meine C quellen mit threads  liefen auf dem AVR auch nicht.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ...

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg Wunsch schrieb:
> Auf einem ARM9 mit einem posixartigen Betriebssystem würden sie
> aber durchaus laufen ...

nur mit aufwand, es sind windows threads ...

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:
> nein, aber meine C quellen mit threads  liefen auf dem AVR auch nicht.

Na sag bloß. Wieso kennt die Hardware keine Threads :)

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ...

Autor: Frank P. (mauz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: bitte löschen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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).

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.