GCC assembler output ändern?

OP #2279409
Lesenswert?

Guten Tag,

gibt es eine einfache möglichkeit den Assembler der vom GCC ausgespuckt 
wird zu modifizieren? Habe ihn im Moment auf o3 stehen aber beim stöbern 
gerade ein paar super Zeilen gefunden.

Z.B.:
1
        cmp r1, #0
2
        str r2, [r3, #8]
3
        mvn r2, #0x7F
4
        strb r2, [r3, #4]
5
        ldrne r2, 0x00000A64
6
        ldreq r2, 0x00000A64
7
        ldrne r1, [r2]
8
        ldreq r1, [r2]
9
        orrne r1, r1, #1
10
        biceq r1, r1, #1
11
        strne r1, [r2]
12
        streq r1, [r2]

Na wer sieht was da gemacht wird? ;)

MfG
#2279467
Lesenswert?

Johannes V. schrieb:
> gibt es eine einfache möglichkeit den Assembler der vom GCC ausgespuckt
> wird zu modifizieren?

Ja, nimm nen Editor.

Im Ernst: Was soll "Assembler modifizieren" hier heissen? Willst du den 
Compiler ändern?

Johannes V. schrieb:
> Na wer sieht was da gemacht wird? ;)

Falls r1 gleich 0 ist, wird Bit 0 vom Wert an Adresse 0xa64 gelöscht, 
anderenfalls gesetzt. Daneben werden noch zwei Werte an Offsets von r3 
(zeigt wohl auf ein struct) geschrieben. Was hab ich gewonnen?

Tja, außer dem orr und bic hätte der Rest nicht in zwei Pfade aufgeteilt 
werden müssen. Ist das der aktuellste GCC?
Persönliche Seite #2279527
Lesenswert?

Evtl. die Ausgane des Compilers anschauen anstatt ein Disassembly:

Als Compileroptionen
1
   -fsave-temps -fverbose-asm
hinzufügen und -pipe weglassen (falls überhaupt verwendet).

Die s-Datei wird dann nicht temporär angelegt und direkt wieder 
gelöscht, sondern bleibt erhalten; i- bzw. ii-Datei natürlich auch.

Und die s-Datei liest sich deutlich besser ohne Debug-Info, d.h. -g 
auch weglassen, das braucht man eh nicht.
OP #2280040
Lesenswert?

> Tja, außer dem orr und bic hätte der Rest nicht in zwei Pfade aufgeteilt
> werden müssen. Ist das der aktuellste GCC?

Das kann ich ehrlich gesagt nicht genauer sagen. Es ist zumindest die 
neuste Version von Crossworks. Konnte auf deren Webseite oder in den 
Programmdateien keine Versionsnummer zum GCC entdecken.

Bzw, eben mal Kopf eingeschaltet.. Aufruf über die Console mit --version 
sagt 4.4.5

Aber ja, 100 punkte für dich. Ist zwar keine struct sondern ein Objekt 
aber heute wollen wir mal nicht so sein ;).
Was ich mit Assembler modifiezieren meine? Vermutlich Assembly 
modifizieren.
Also im Endeffect mit Notepad in die file.o und hoffen das er mir die am 
nächsen Tag nicht neu kompiliert

Ich habe eben die Compiler flags mal ausprobiert, -fsave-temps mag der 
compiler nicht, finde ich hier auch nicht 
http://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html

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