c++ Code to Arm Assembler

Gast #1112178
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.
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 #1112199
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.
Gast #1112270
Lesenswert?

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 #1112293
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.
Gast #1114639
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?
Gast #1114722
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren