mikrocontroller.net

Forum: Compiler & IDEs c++ Code to Arm Assembler


Autor: dabudai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

könnte mir einer meinen c++ Code in Arm Assembler übersetzen lassen.
Die main-Funktion ist nicht von Nöten.
Ich brauche nur die Funktion.
Da ich die Funktion nicht in Assembler hinbekomme, will ich mir so ein 
paar Endrücke holen.
#include <string>
using namespace std;

int searchStringInString(const string& s, const string& suchen)
{

int pos = s.find(suchen);
return pos;
}

int    main (void)
{
    int    Adresse;
    char* Text="0111112";
    char* Suchstring="112";
    char* leerstring="";

    Adresse = searchStringInString(Text, Suchstring);
    Adresse = searchStringInString(leerstring, Suchstring);
    Adresse = searchStringInString(Text, leerstring);
    Adresse = searchStringInString(leerstring, leerstring);
    Adresse = searchStringInString(Text, Text);
    Adresse = searchStringInString(Suchstring, Suchstring);
    Adresse = searchStringInString(Suchstring, Text);
    return 0;    
}  

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube kaum das jemand mal schnell ebend von C++ in ASM umsetzt. 
Fang doch erstmal Selber an und Setze es auf C ohne externe 
Funktionsaufrufe um. (keine String-Funktion)
Wenn das dann gemacht ist, sollte die umwandlung zum ASM nicht mehr so 
schwer sein.

Autor: dabudai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt du hast ja recht.
Daher hier die reine C Funktion.
int searchStringInString(char *string, char *substring)
   {
       register char *a, *b;
   
       b = substring;
       if (*b == 0) {
           //return string;
      return 0;
       }
       for ( ; *string != 0; string += 1) {
           if (*string != *b) {
               continue;
          }
           a = string;
           while (1) {
               if (*b == 0) {
                   return (int)(a-string);
          //return string;
               }
               if (*a++ != *b++) {
                   break;
               }
           }
           b = substring;
       }
       return 0;
}

Autor: Ralf Schwarz (spacedog) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin jetzt nicht mehr zu 100% sicher, aber ich glaube ich hab mal von 
so nem Programm gehört, das automatisch C in Assembler umwandeln kann. 
Das hiess glaube ich Kompeiler oder so. Weiss aber nicht, wo man das 
herunterladen kann und ob's das überhaupt noch gibt.

Autor: dabudai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In Arm-Code bekomme ich meinen Code nun.
Habes rausbekommen.
Allerdings habe ich in der Funktion einen Fehler drin.
Diese gibt mir nicht die Position des Suchstrings wieder,(es müsste 4 
herauskommen, da der Suchstring an 4 STelle im Hauptstring steht) 
sondern, er gibt mir die Größe des Suchstrings aus.

Autor: dabudai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Moin,

habe noch eine kleine Frage an die Experten.
Besteht beim gcc die Möglichkeit, die Assemblyausgabe mit C-Quellcode zu 
bekommen?
Beim Visual Express besteht die Möglichkeit.
Wie schauts da beim gcc aus?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich per JTAG mit Eclipse debugge, habe ich zwei Fenster: Links den 
C-Code und rechts den dazugehörigen Assemblercode. Es gibt also eine 
Möglichkeit.

Autor: Jörg G. (joergderxte)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gcc -S <source>.c
Bzw. die .lst (oder auch .lss) Datei?

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach du liebe Zeit... wird wenigstens GCC verwendet? Dann:
gcc -S

Der ganz klassische Ablauf ist:
- Quelltext in Hochsprache (C, C++) schreiben
- Quelltext übersetzen (compilieren), dabei entsteht Assemblercode
- Assemblercode assemblieren, dabei entstehen Maschinencodemodule
- Maschinencodemodule binden (linken), es entsteht das ausführbare 
Objekt
- brennen/ausführen/...

Achso, nochwas gleich vorweg: GCC ist nicht der GNU-C-Compiler...

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.