c++ Code to Arm Assembler

Gast #1112178
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.
1
#include <string>
2
using namespace std;
3

4
int searchStringInString(const string& s, const string& suchen)
5
{
6

7
int pos = s.find(suchen);
8
return pos;
9
}
10

11
int    main (void)
12
{
13
    int    Adresse;
14
    char* Text="0111112";
15
    char* Suchstring="112";
16
    char* leerstring="";
17

18
    Adresse = searchStringInString(Text, Suchstring);
19
    Adresse = searchStringInString(leerstring, Suchstring);
20
    Adresse = searchStringInString(Text, leerstring);
21
    Adresse = searchStringInString(leerstring, leerstring);
22
    Adresse = searchStringInString(Text, Text);
23
    Adresse = searchStringInString(Suchstring, Suchstring);
24
    Adresse = searchStringInString(Suchstring, Text);
25
    return 0;    
26
}
Gast
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.
Gast
Stimmt du hast ja recht.
Daher hier die reine C Funktion.
1
int searchStringInString(char *string, char *substring)
2
   {
3
       register char *a, *b;
4
   
5
       b = substring;
6
       if (*b == 0) {
7
           //return string;
8
      return 0;
9
       }
10
       for ( ; *string != 0; string += 1) {
11
           if (*string != *b) {
12
               continue;
13
          }
14
           a = string;
15
           while (1) {
16
               if (*b == 0) {
17
                   return (int)(a-string);
18
          //return string;
19
               }
20
               if (*a++ != *b++) {
21
                   break;
22
               }
23
           }
24
           b = substring;
25
       }
26
       return 0;
27
}
Gast
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.
Gast
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?
Gast
Ach du liebe Zeit... wird wenigstens GCC verwendet? Dann:
1
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.