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
> 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.
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
> 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.
> 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.
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.
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
> 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.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.