www.mikrocontroller.net

Forum: Compiler & IDEs GCC ARM Infos über differenzen Architektur-Versionen


Autor: Erik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich suche eine genaue Liste welche ARM32-Befehle der GCC bei welcher 
gewünschten ARM-Architektur "-march=???" unterstützt (auch für 
Inline-Assembler) und bei welcher CPU-Wahl "-mcpu=???" welche 
Architektur gewählt wird.

Google hat mir leider nichts genaues gebracht.
Muss ich mich etwa durch den GCC-Source kämpfen? (das würde ich gerne 
vermeiden)

Danke für alle Antworten

Erik

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ich suche eine genaue Liste welche ARM32-Befehle der GCC bei welcher
> gewünschten ARM-Architektur "-march=???" unterstützt

Wozu?

> (auch für Inline-Assembler)

Interessiert den Compiler nicht, der reicht sie nur an den Assembler 
durch.

> Muss ich mich etwa durch den GCC-Source kämpfen?

Ich fürchte schon. Kannst dich aber auf den Teil für ARM beschränken, 
also den Inhalt von gcc/config/arm.

Autor: Erik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

> Wozu?
Weil ich einen "ARM-Clone" programmieren muss und demzufolge rauskriegen 
möchte welche CPU-Version ich im GCC auswählen muss.

> Interessiert den Compiler nicht,
> der reicht sie nur an den Assembler durch.
Auch die Architektur-Auswahl-Parameter?

> Ich fürchte schon.
Ich habs befürchtet.

> ... also den Inhalt von gcc/config/arm.
Danke

Erik

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Weil ich einen "ARM-Clone" programmieren muss

Genauer weißt du es nicht?

>> Interessiert den Compiler nicht,
>> der reicht sie nur an den Assembler durch.
> Auch die Architektur-Auswahl-Parameter?

Natürlich reicht er die nicht nur an den Assembler durch.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Natürlich reicht er die nicht nur an den Assembler durch.

Ich wollte an dieser Stelle ausdrücken, dass der Compiler den Code in 
Inline-Assembly einfach durchreicht und nicht daraufhin überprüft ob die 
Befehle im spezifizierten Core auch erlaubt sind. Das macht an dieser 
Stelle erst der Assembler.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und ich wollte darauf hinweisen, daß die Architektur-Auswahl-Parameter 
natürlich auch den Compiler beeinflussen und nicht nur an den Assembler 
weitergegeben werden. Das war nämlich die Frage im Anschluß an dein 
Posting.

Autor: Erik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

>> Weil ich einen "ARM-Clone" programmieren muss
> Genauer weißt du es nicht?

Doch, ich weis genau das er nicht von ARM ist und der Entwickler auch 
keine Lizenz hat. Mit "Clone" ist gemeint "kein Standard-Core". Dieser 
Core unterstützt z.B. CLZ und LDREX/STREX aber keinen der 
Multiply-Long-Befehle. Der unterstütze Befehlsumfang liegt zwischen 
ARMv3 und ARMv6. Alle nicht unterstützen Befehle müssen zur Laufzeit 
emuliert werden und diesen Overhead möchte ich so gering wie möglich 
halten. Also suche ich eine GCC-Einstellung die einen guten Kompromiss, 
aus der Unterstützung von Befehlen mit Beschleunigungswirkung und der 
Benutzung von nicht unterstützen Befehlen mit Bremswirkung, darstellt.

Den Weg einen Post-Processor für den erzeugten Code zu schreiben der die 
nicht unterstützen Befehle gegen unterstützte Befehl(sgruppen) 
austauscht möchte ich auf jeden Fall nicht gehen. Da würde ich eher 
Versuchen dem GCC eine weitere ARM-Architektur beizubringen (ist das 
eigentlich schwer?).


Danke noch mal für die Antworten
Erik

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Da würde ich eher Versuchen dem GCC eine weitere ARM-Architektur
> beizubringen (ist das eigentlich schwer?).

Sollte machbar sein. Vor allem, wenn es darum geht, nicht unterstützte 
Befehle zu vermeiden, denn dazu müssen die nur entsprechend qualifiziert 
werden (oder rausgeworfen, wenn's quick-and-dirty sein soll). Für neue 
bislang nicht unterstützte Befehle könnte es komplizierter werden.

Autor: Erik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,

Ich hab mir, schweren Herzens, dann doch mal den GCC-Source angesehen 
und nach Unterschieden und Gemeinsamkeiten zwischen ARMv3/ARMv4 bzw. 
ARMv4/ARMv5 gesucht. Ich wollte es zwar vermeiden aber so enorm 
schwierig schein das dazubasteln (halbwegs ordentlich) einer weiteren 
ARM-Architektur nicht zu sein, ist eben etwas Arbeit. Der 
Core-Entwickler hat mir versichert das alle vorhandenen Befehle so 
unterstützt werden wie ARM das spezifiziert hat. Nur ein einziger Befehl 
(STREX) hat ein kleines Zusatzschmankerl das nicht von ARM stammt (an 
dieser Stelle wirds für den Core-Entwickler wohl definitiv illegal). Es 
wurde aber ansonsten alles mögliche, was nicht dringendst gebraucht 
wird, raus geworfen. So entstand eben ein bunter Mix aus ARMv3 bis ARMv6 
und ich muss das ganze nun mit Software versorgen.

Danke noch mal für Deine Antworten.

Grüße
Erik

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.